Back to project page libgdx-demo-pax-britannica.
The source code is released under:
Copyright (c) 2010 Ben Abraham, Renaud B?dard, Henk Boom, Daniel Burton, Matthew Gallant Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated ...
If you think the Android project libgdx-demo-pax-britannica listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package de.swagner.paxbritannica; /*from w w w.j a v a 2 s .c o m*/ import java.io.IOException; import com.badlogic.gdx.Game; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.badlogic.gdx.InputProcessor; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.OrthographicCamera; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.math.Intersector; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.math.collision.BoundingBox; import com.badlogic.gdx.math.collision.Ray; import com.badlogic.gdx.utils.Array; import de.swagner.paxbritannica.background.BackgroundFXRenderer; import de.swagner.paxbritannica.factory.EasyEnemyProduction; import de.swagner.paxbritannica.factory.FactoryProduction; import de.swagner.paxbritannica.factory.HardEnemyProduction; import de.swagner.paxbritannica.factory.MediumEnemyProduction; import de.swagner.paxbritannica.factory.PlayerProduction; import de.swagner.paxbritannica.mainmenu.MainMenu; public class GameScreen extends DefaultScreen implements InputProcessor { double startTime = 0; BackgroundFXRenderer backgroundFX = new BackgroundFXRenderer(); private float fade = 1.0f; Sprite blackFade; Sprite stouchAreaP1; Sprite stouchAreaP2; Sprite stouchAreaP3; Sprite stouchAreaP4; Sprite p1; Sprite p2; Sprite p3; Sprite p4; SpriteBatch fadeBatch; SpriteBatch gameBatch; FactoryProduction playerProduction; FactoryProduction enemyProduction; // ShapeRenderer shapeRenderer = new ShapeRenderer(); OrthographicCamera cam; private boolean gameOver = false; private float gameOverTimer =5; private BoundingBox touchAreaP1; private BoundingBox touchAreaP2; private BoundingBox touchAreaP3; private BoundingBox touchAreaP4; int pointerP1; int pointerP2; int pointerP3; int pointerP4; float touchFadeP1 = 1.0f; float touchFadeP2 = 1.0f; float touchFadeP3 = 1.0f; float touchFadeP4 = 1.0f; boolean touchedP1 = false; boolean touchedP2 = false; boolean touchedP3 = false; boolean touchedP4 = false; int numPlayers = 0; Ray collisionRay; private Array<Vector2> POSITIONS = new Array<Vector2>(); private Vector2 CENTER = new Vector2(300, 180); private int width = 800; private int height = 480; public GameScreen(Game game, Array<Integer> playerList, Array<Integer> cpuList) { super(game); Gdx.input.setCatchBackKey( true ); Gdx.input.setInputProcessor(this); cam = new OrthographicCamera(width, height); cam.position.x = 400; cam.position.y = 240; cam.update(); numPlayers = playerList.size; if(numPlayers==1) { touchAreaP1 = new BoundingBox(new Vector3(-((this.width-800)/2), -((this.height-480)/2), 0),new Vector3(-((this.width-800)/2)+(this.width), -((this.height-480)/2)+this.height, 0)); } else if(numPlayers == 2) { touchAreaP1 = new BoundingBox(new Vector3(-((this.width-800)/2), -((this.height-480)/2), 0),new Vector3(-((this.width-800)/2)+(this.width/2), -((this.height-480)/2)+this.height, 0)); touchAreaP2 = new BoundingBox(new Vector3(-((this.width-800)/2)+(this.width/2), -((this.height-480)/2), 0),new Vector3(-((this.width-800)/2)+this.width, -((this.height-480)/2)+this.height, 0)); } else if(numPlayers == 3) { touchAreaP1 = new BoundingBox(new Vector3(-((this.width-800)/2), -((this.height-480)/2), 0),new Vector3(-((this.width-800)/2)+(this.width/2), -((this.height-480)/2)+(this.height/2), 0)); touchAreaP2 = new BoundingBox(new Vector3(-((this.width-800)/2), -((this.height-480)/2)+(this.height/2), 0),new Vector3(-((this.width-800)/2)+(this.width/2), -((this.height-480)/2)+this.height, 0)); touchAreaP3 = new BoundingBox(new Vector3(-((this.width-800)/2)+(this.width/2), -((this.height-480)/2), 0),new Vector3(-((this.width-800)/2)+this.width, -((this.height-480)/2)+this.height, 0)); } else if(numPlayers == 4) { touchAreaP1 = new BoundingBox(new Vector3(-((this.width-800)/2), -((this.height-480)/2), 0),new Vector3(-((this.width-800)/2)+(this.width/2), -((this.height-480)/2)+(this.height/2), 0)); touchAreaP2 = new BoundingBox(new Vector3(-((this.width-800)/2), -((this.height-480)/2)+(this.height/2), 0),new Vector3(-((this.width-800)/2)+(this.width/2), -((this.height-480)/2)+this.height, 0)); touchAreaP3 = new BoundingBox(new Vector3(-((this.width-800)/2)+(this.width/2), -((this.height-480)/2), 0),new Vector3(-((this.width-800)/2)+this.width, -((this.height-480)/2)+(this.height/2), 0)); touchAreaP4 = new BoundingBox(new Vector3(-((this.width-800)/2)+(this.width/2), -((this.height-480)/2)+(this.height/2), 0),new Vector3(-((this.width-800)/2)+this.width, -((this.height-480)/2)+this.height, 0)); } // camera = new OrthographicCamera(800, 480); // camera.translate(400, 240, 0); if(playerList.size + cpuList.size != 3) { POSITIONS.add(new Vector2(150, 180)); POSITIONS.add(new Vector2(450, 180)); POSITIONS.add(new Vector2(300, 335)); POSITIONS.add(new Vector2(300, 25)); } else { POSITIONS.add(new Vector2(170, 92)); POSITIONS.add(new Vector2(432, 100)); POSITIONS.add(new Vector2(300, 335)); } // Fade blackFade = Resources.getInstance().blackFade; fadeBatch = new SpriteBatch(); fadeBatch.getProjectionMatrix().setToOrtho2D(0, 0, 2, 2); stouchAreaP1 = Resources.getInstance().touchArea1; stouchAreaP2 = Resources.getInstance().touchArea2; stouchAreaP3 = Resources.getInstance().touchArea3; stouchAreaP4 = Resources.getInstance().touchArea4; if(playerList.size>0 && playerList.get(0)==1) { p1 = Resources.getInstance().factoryP1Small; } else if(playerList.size>0 && playerList.get(0)==2) { p1 = Resources.getInstance().factoryP2Small; } else if(playerList.size>0 && playerList.get(0)==3) { p1 = Resources.getInstance().factoryP3Small; } else if(playerList.size>0 && playerList.get(0)==4) { p1 = Resources.getInstance().factoryP4Small; } if(playerList.size>1 && playerList.get(1)==1) { p2 = Resources.getInstance().factoryP1Small; } else if(playerList.size>1 && playerList.get(1)==2) { p2 = Resources.getInstance().factoryP2Small; } else if(playerList.size>1 && playerList.get(1)==3) { p2 = Resources.getInstance().factoryP3Small; } else if(playerList.size>1 && playerList.get(1)==4) { p2 = Resources.getInstance().factoryP4Small; } if(playerList.size>2 && playerList.get(2)==1) { p3 = Resources.getInstance().factoryP1Small; } else if(playerList.size>2 && playerList.get(2)==2) { p3 = Resources.getInstance().factoryP2Small; } else if(playerList.size>2 && playerList.get(2)==3) { p3 = Resources.getInstance().factoryP3Small; } else if(playerList.size>2 && playerList.get(2)==4) { p3 = Resources.getInstance().factoryP4Small; } if(playerList.size>3 && playerList.get(3)==1) { p4 = Resources.getInstance().factoryP1Small; } else if(playerList.size>3 && playerList.get(3)==2) { p4 = Resources.getInstance().factoryP2Small; } else if(playerList.size>3 && playerList.get(3)==3) { p4 = Resources.getInstance().factoryP3Small; } else if(playerList.size>3 && playerList.get(3)==4) { p4 = Resources.getInstance().factoryP4Small; } if(playerList.size>0) p1.setScale(.2f); if(playerList.size>1) p2.setScale(.2f); if(playerList.size>2) p3.setScale(.2f); if(playerList.size>3) p4.setScale(.2f); if(playerList.size>0) p1.rotate(-90); if(playerList.size>1) p2.rotate(90); if(playerList.size>2) p3.rotate(-90); if(playerList.size>3) p4.rotate(90); stouchAreaP1.setRotation(-90); stouchAreaP2.setRotation(90); stouchAreaP1.setRotation(-90); stouchAreaP2.setRotation(90); gameBatch = new SpriteBatch(); gameBatch.getProjectionMatrix().set(cam.combined); // init player positions // Array<Vector2> positons = generatePositions(numPlayers + 1); int currentPos = 0; for(int i=0;i<playerList.size;++i) { Vector2 temp1 = new Vector2(POSITIONS.get(currentPos).x, POSITIONS.get(currentPos).y); Vector2 temp2 = new Vector2(POSITIONS.get(currentPos).x, POSITIONS.get(currentPos).y); Vector2 facing = new Vector2(-temp1.sub(CENTER).y, temp2.sub(CENTER).x).nor(); playerProduction = new PlayerProduction(playerList.get(i), POSITIONS.get(currentPos), facing); GameInstance.getInstance().factorys.add(playerProduction); ++currentPos; } for(int i=0;i<cpuList.size;++i) { Vector2 temp1 = new Vector2(POSITIONS.get(currentPos).x, POSITIONS.get(currentPos).y); Vector2 temp2 = new Vector2(POSITIONS.get(currentPos).x, POSITIONS.get(currentPos).y); Vector2 facing = new Vector2(-temp1.sub(CENTER).y, temp2.sub(CENTER).x).nor(); if(GameInstance.getInstance().difficultyConfig == 0) { enemyProduction = new EasyEnemyProduction(cpuList.get(i), POSITIONS.get(currentPos), facing); } else if(GameInstance.getInstance().difficultyConfig == 1) { enemyProduction = new MediumEnemyProduction(cpuList.get(i), POSITIONS.get(currentPos), facing); } else { enemyProduction = new HardEnemyProduction(cpuList.get(i), POSITIONS.get(currentPos), facing); } GameInstance.getInstance().factorys.add(enemyProduction); ++currentPos; } // // add cpu if only one player plays // if (idP2 == -1) { // temp1 = new Vector2(POSITIONS.get(1).x, POSITIONS.get(1).y); // temp2 = new Vector2(POSITIONS.get(1).x, POSITIONS.get(1).y); // facing = new Vector2(-temp1.sub(CENTER).y, temp2.sub(CENTER).x).nor(); // if(GameInstance.getInstance().difficultyConfig == 0) { // enemyProduction = new EasyEnemyProduction((idP1+1)%4, POSITIONS.get(1), facing); // } else if(GameInstance.getInstance().difficultyConfig == 1) { // enemyProduction = new MediumEnemyProduction((idP1+1)%4, POSITIONS.get(1), facing); // } else { // enemyProduction = new HardEnemyProduction((idP1+1)%4, POSITIONS.get(1), facing); // } // GameInstance.getInstance().factorys.add(enemyProduction); // touchedP2 = true; // touchFadeP2 = 0; // // temp1 = new Vector2(POSITIONS.get(2).x, POSITIONS.get(2).y); // temp2 = new Vector2(POSITIONS.get(2).x, POSITIONS.get(2).y); // facing = new Vector2(-temp1.sub(CENTER).y, temp2.sub(CENTER).x).nor(); // if(GameInstance.getInstance().difficultyConfig == 0) { // enemyProduction = new EasyEnemyProduction((idP1+2)%4, POSITIONS.get(2), facing); // } else if(GameInstance.getInstance().difficultyConfig == 1) { // enemyProduction = new MediumEnemyProduction((idP1+2)%4, POSITIONS.get(2), facing); // } else { // enemyProduction = new HardEnemyProduction((idP1+2)%4, POSITIONS.get(2), facing); // } // GameInstance.getInstance().factorys.add(enemyProduction); // touchedP2 = true; // touchFadeP2 = 0; // // temp1 = new Vector2(POSITIONS.get(3).x, POSITIONS.get(3).y); // temp2 = new Vector2(POSITIONS.get(3).x, POSITIONS.get(3).y); // facing = new Vector2(-temp1.sub(CENTER).y, temp2.sub(CENTER).x).nor(); // if(GameInstance.getInstance().difficultyConfig == 0) { // enemyProduction = new EasyEnemyProduction((idP1+3)%4, POSITIONS.get(3), facing); // } else if(GameInstance.getInstance().difficultyConfig == 1) { // enemyProduction = new MediumEnemyProduction((idP1+3)%4, POSITIONS.get(3), facing); // } else { // enemyProduction = new HardEnemyProduction((idP1+3)%4, POSITIONS.get(3), facing); // } // GameInstance.getInstance().factorys.add(enemyProduction); // touchedP2 = true; // touchFadeP2 = 0; // } else { // temp1 = new Vector2(POSITIONS.get(1).x, POSITIONS.get(1).y); // temp2 = new Vector2(POSITIONS.get(1).x, POSITIONS.get(1).y); // facing = new Vector2(-temp1.sub(CENTER).y, temp2.sub(CENTER).x).nor(); // playerProduction = new PlayerProduction(idP2, POSITIONS.get(1), facing); // GameInstance.getInstance().factorys.add(playerProduction); // } Gdx.gl.glDisable(GL20.GL_CULL_FACE); Gdx.gl.glDisable(GL20.GL_DEPTH_TEST); } Vector3 tmp = new Vector3(); @Override public void resize(int width, int height) { this.width = width; this.height = height; if (width == 480 && height == 320) { cam = new OrthographicCamera(700, 466); this.width = 700; this.height = 466; } else if (width == 320 && height == 240) { cam = new OrthographicCamera(700, 525); this.width = 700; this.height = 525; } else if (width == 400 && height == 240) { cam = new OrthographicCamera(800, 480); this.width = 800; this.height = 480; } else if (width == 432 && height == 240) { cam = new OrthographicCamera(700, 389); this.width = 700; this.height = 389; } else if (width == 960 && height == 640) { cam = new OrthographicCamera(800, 533); this.width = 800; this.height = 533; } else if (width == 1366 && height == 768) { cam = new OrthographicCamera(1280, 720); this.width = 1280; this.height = 720; } else if (width == 1366 && height == 720) { cam = new OrthographicCamera(1280, 675); this.width = 1280; this.height = 675; } else if (width == 1536 && height == 1152) { cam = new OrthographicCamera(1366, 1024); this.width = 1366; this.height = 1024; } else if (width == 1920 && height == 1152) { cam = new OrthographicCamera(1366, 854); this.width = 1366; this.height = 854; } else if (width == 1920 && height == 1200) { cam = new OrthographicCamera(1366, 800); this.width = 1280; this.height = 800; } else if (width > 1280) { cam = new OrthographicCamera(1280, 768); this.width = 1280; this.height = 768; } else if (width < 800) { cam = new OrthographicCamera(800, 480); this.width = 800; this.height = 480; } else { cam = new OrthographicCamera(width, height); } cam.position.x = 400; cam.position.y = 240; cam.update(); backgroundFX.resize(width, height); gameBatch.getProjectionMatrix().set(cam.combined); if(numPlayers==1) { p1.setRotation(-90); stouchAreaP1.setRotation(-90); touchAreaP1 = new BoundingBox(new Vector3(-((this.width-800)/2), -((this.height-480)/2), 0),new Vector3(-((this.width-800)/2)+(this.width), -((this.height-480)/2)+this.height, 0)); stouchAreaP1.setPosition(touchAreaP1.min.x, touchAreaP1.getCenter().y-40); p1.setPosition(touchAreaP1.min.x+10, touchAreaP1.getCenter().y-105); } else if(numPlayers == 2) { p1.setRotation(-90); p2.setRotation(90); stouchAreaP1.setRotation(-90); stouchAreaP2.setRotation(90); touchAreaP1 = new BoundingBox(new Vector3(-((this.width-800)/2), -((this.height-480)/2), 0),new Vector3(-((this.width-800)/2)+(this.width/2), -((this.height-480)/2)+this.height, 0)); touchAreaP2 = new BoundingBox(new Vector3(-((this.width-800)/2)+(this.width/2), -((this.height-480)/2), 0),new Vector3(-((this.width-800)/2)+this.width, -((this.height-480)/2)+this.height, 0)); stouchAreaP1.setPosition(touchAreaP1.min.x, touchAreaP1.getCenter().y-40); p1.setPosition(touchAreaP1.min.x+10, touchAreaP1.getCenter().y-105); stouchAreaP2.setPosition(touchAreaP2.max.x - 170, touchAreaP2.getCenter().y-40); p2.setPosition(touchAreaP2.max.x-190, touchAreaP2.getCenter().y-15); } else if(numPlayers == 3) { p1.setRotation(-90); p2.setRotation(-90); p3.setRotation(90); stouchAreaP1.setRotation(-90); stouchAreaP2.setRotation(-90); stouchAreaP3.setRotation(90); touchAreaP1 = new BoundingBox(new Vector3(-((this.width-800)/2), -((this.height-480)/2), 0),new Vector3(-((this.width-800)/2)+(this.width/2), -((this.height-480)/2)+(this.height/2), 0)); touchAreaP2 = new BoundingBox(new Vector3(-((this.width-800)/2), -((this.height-480)/2)+(this.height/2), 0),new Vector3(-((this.width-800)/2)+(this.width/2), -((this.height-480)/2)+this.height, 0)); touchAreaP3 = new BoundingBox(new Vector3(-((this.width-800)/2)+(this.width/2), -((this.height-480)/2), 0),new Vector3(-((this.width-800)/2)+this.width, -((this.height-480)/2)+this.height, 0)); stouchAreaP1.setPosition(touchAreaP1.min.x, touchAreaP1.getCenter().y-40); p1.setPosition(touchAreaP1.min.x+10, touchAreaP1.getCenter().y-105); stouchAreaP2.setPosition(touchAreaP2.min.x, touchAreaP2.getCenter().y-40); p2.setPosition(touchAreaP2.min.x+10, touchAreaP2.getCenter().y-105); stouchAreaP3.setPosition(touchAreaP3.max.x - 170, touchAreaP3.getCenter().y-40); p3.setPosition(touchAreaP3.max.x-190, touchAreaP3.getCenter().y-15); } else if(numPlayers == 4) { p1.setRotation(-90); p2.setRotation(-90); p3.setRotation(90); p4.setRotation(90); stouchAreaP1.setRotation(-90); stouchAreaP2.setRotation(-90); stouchAreaP3.setRotation(90); stouchAreaP4.setRotation(90); touchAreaP1 = new BoundingBox(new Vector3(-((this.width-800)/2), -((this.height-480)/2), 0),new Vector3(-((this.width-800)/2)+(this.width/2), -((this.height-480)/2)+(this.height/2), 0)); touchAreaP2 = new BoundingBox(new Vector3(-((this.width-800)/2), -((this.height-480)/2)+(this.height/2), 0),new Vector3(-((this.width-800)/2)+(this.width/2), -((this.height-480)/2)+this.height, 0)); touchAreaP3 = new BoundingBox(new Vector3(-((this.width-800)/2)+(this.width/2), -((this.height-480)/2), 0),new Vector3(-((this.width-800)/2)+this.width, -((this.height-480)/2)+(this.height/2), 0)); touchAreaP4 = new BoundingBox(new Vector3(-((this.width-800)/2)+(this.width/2), -((this.height-480)/2)+(this.height/2), 0),new Vector3(-((this.width-800)/2)+this.width, -((this.height-480)/2)+this.height, 0)); stouchAreaP1.setPosition(touchAreaP1.min.x, touchAreaP1.getCenter().y-40); p1.setPosition(touchAreaP1.min.x+10, touchAreaP1.getCenter().y-105); stouchAreaP2.setPosition(touchAreaP2.min.x, touchAreaP2.getCenter().y-40); p2.setPosition(touchAreaP2.min.x+10, touchAreaP2.getCenter().y-105); stouchAreaP3.setPosition(touchAreaP3.max.x - 170, touchAreaP3.getCenter().y-40); p3.setPosition(touchAreaP3.max.x-190, touchAreaP3.getCenter().y-15); stouchAreaP4.setPosition(touchAreaP4.max.x - 170, touchAreaP4.getCenter().y-40); p4.setPosition(touchAreaP4.max.x-190, touchAreaP4.getCenter().y-15); } } public Array<Vector2> generatePositions(int n) { Array<Vector2> positions = new Array<Vector2>(); for (int i = 1; i <= n; ++i) { positions.add(new Vector2(MathUtils.cos(i / n), MathUtils.sin(i / n)).scl(200)); } return positions; } @Override public void show() { } @Override public void render(float delta) { delta = Math.min(0.06f, delta); backgroundFX.render(); Collision.collisionCheck(); gameBatch.begin(); // Bubbles GameInstance.getInstance().bubbleParticles.draw(gameBatch); GameInstance.getInstance().bigBubbleParticles.draw(gameBatch); // Factorys for (Ship ship : GameInstance.getInstance().factorys) { if (ship.alive) { ship.draw(gameBatch); } else { GameInstance.getInstance().factorys.removeValue(ship, true); if(GameInstance.getInstance().factorys.size < 2) gameOver = true; } } // Frigate for (Ship ship : GameInstance.getInstance().frigates) { if (ship.alive) { ship.draw(gameBatch); } else { GameInstance.getInstance().frigates.removeValue(ship, true); } } // Bomber for (Ship ship : GameInstance.getInstance().bombers) { if (ship.alive) { ship.draw(gameBatch); } else { GameInstance.getInstance().bombers.removeValue(ship, true); } } // Fighter for (Ship ship : GameInstance.getInstance().fighters) { if (ship.alive) { ship.draw(gameBatch); } else { GameInstance.getInstance().fighters.removeValue(ship, true); } } // Laser for (Ship ship : GameInstance.getInstance().bullets) { if (ship.alive) { ship.draw(gameBatch); } else { GameInstance.getInstance().bullets.removeValue((Bullet) ship, true); } } // Explosions GameInstance.getInstance().sparkParticles.draw(gameBatch); GameInstance.getInstance().explosionParticles.draw(gameBatch); // font.draw(gameBatch, "fps: " + Gdx.graphics.getFramesPerSecond(), 10, 30); gameBatch.end(); //show touch area notification if(numPlayers > 0 && touchedP1) { touchFadeP1 = Math.max(touchFadeP1 - delta / 2.f, 0); } if(numPlayers > 0 && (!touchedP1 || touchFadeP1>0)) { gameBatch.begin(); stouchAreaP1.setColor(stouchAreaP1.getColor().r, stouchAreaP1.getColor().g, stouchAreaP1.getColor().b, touchFadeP1); stouchAreaP1.draw(gameBatch); p1.setColor(p1.getColor().r, p1.getColor().g, p1.getColor().b, touchFadeP1); p1.draw(gameBatch); gameBatch.end(); } if(numPlayers > 1 && touchedP2) { touchFadeP2 = Math.max(touchFadeP2 - delta / 2.f, 0); } if(numPlayers > 1 && (!touchedP2 || touchFadeP2>0)) { gameBatch.begin(); stouchAreaP2.setColor(stouchAreaP2.getColor().r, stouchAreaP2.getColor().g, stouchAreaP2.getColor().b, touchFadeP2); stouchAreaP2.draw(gameBatch); p2.setColor(p2.getColor().r, p2.getColor().g, p2.getColor().b, touchFadeP2); p2.draw(gameBatch); gameBatch.end(); } if(numPlayers > 2 && touchedP3) { touchFadeP3 = Math.max(touchFadeP3 - delta / 2.f, 0); } if(numPlayers > 2 && (!touchedP3 || touchFadeP3>0)) { gameBatch.begin(); stouchAreaP3.setColor(stouchAreaP3.getColor().r, stouchAreaP3.getColor().g, stouchAreaP3.getColor().b, touchFadeP3); stouchAreaP3.draw(gameBatch); p3.setColor(p3.getColor().r, p3.getColor().g, p3.getColor().b, touchFadeP3); p3.draw(gameBatch); gameBatch.end(); } if(numPlayers > 3 && touchedP4) { touchFadeP4 = Math.max(touchFadeP4 - delta / 2.f, 0); } if(numPlayers > 3 && (!touchedP4 || touchFadeP4>0)) { gameBatch.begin(); stouchAreaP4.setColor(stouchAreaP4.getColor().r, stouchAreaP4.getColor().g, stouchAreaP4.getColor().b, touchFadeP4); stouchAreaP4.draw(gameBatch); p4.setColor(p4.getColor().r, p4.getColor().g, p4.getColor().b, touchFadeP4); p4.draw(gameBatch); gameBatch.end(); } if (!gameOver && fade > 0 && fade < 100) { fade = Math.max(fade - delta / 2.f, 0); fadeBatch.begin(); blackFade.setColor(blackFade.getColor().r, blackFade.getColor().g, blackFade.getColor().b, fade); blackFade.draw(fadeBatch); fadeBatch.end(); } if(gameOver) { gameOverTimer -= delta; } if (gameOver && gameOverTimer <= 0) { fade = Math.min(fade + delta / 2.f, 1); fadeBatch.begin(); blackFade.setColor(blackFade.getColor().r, blackFade.getColor().g, blackFade.getColor().b, fade); blackFade.draw(fadeBatch); fadeBatch.end(); if(fade>=1) game.setScreen(new MainMenu(game)); } // shapeRenderer.setProjectionMatrix(cam.combined); // // shapeRenderer.begin(ShapeType.Line); // shapeRenderer.setColor(1, 1, 0, 1); // shapeRenderer.line(touchAreaP1.min.x, touchAreaP1.min.y, touchAreaP1.max.x, touchAreaP1.max.y); // shapeRenderer.line(touchAreaP2.min.x, touchAreaP2.min.y, touchAreaP2.max.x, touchAreaP2.max.y); // shapeRenderer.line(touchAreaP3.min.x, touchAreaP3.min.y, touchAreaP3.max.x, touchAreaP3.max.y); // shapeRenderer.line(touchAreaP4.min.x, touchAreaP4.min.y, touchAreaP4.max.x, touchAreaP4.max.y); // shapeRenderer.end(); } @Override public void hide() { } @Override public boolean keyDown(int keycode) { if(keycode == Input.Keys.BACK) { gameOver = true; gameOverTimer=0; } if(keycode == Input.Keys.ESCAPE) { gameOver = true; gameOverTimer=0; } if(numPlayers >0 && keycode == Input.Keys.A && GameInstance.getInstance().factorys.size>0) { ((FactoryProduction) GameInstance.getInstance().factorys.get(0)).button_held = true; touchedP1 = true; } if(numPlayers >1 && keycode == Input.Keys.F && GameInstance.getInstance().factorys.size>1) { ((FactoryProduction) GameInstance.getInstance().factorys.get(1)).button_held = true; touchedP2 = true; } if(numPlayers >2 && keycode == Input.Keys.H && GameInstance.getInstance().factorys.size>2) { ((FactoryProduction) GameInstance.getInstance().factorys.get(2)).button_held = true; touchedP3 = true; } if(numPlayers >3 && keycode == Input.Keys.L && GameInstance.getInstance().factorys.size>3) { ((FactoryProduction) GameInstance.getInstance().factorys.get(3)).button_held = true; touchedP4 = true; } return false; } @Override public boolean keyUp(int keycode) { if(numPlayers >0 && keycode == Input.Keys.A && GameInstance.getInstance().factorys.size>0) { ((FactoryProduction) GameInstance.getInstance().factorys.get(0)).button_held = false; } if(numPlayers >1 && keycode == Input.Keys.F && GameInstance.getInstance().factorys.size>1) { ((FactoryProduction) GameInstance.getInstance().factorys.get(1)).button_held = false; } if(numPlayers >2 && keycode == Input.Keys.H && GameInstance.getInstance().factorys.size>1) { ((FactoryProduction) GameInstance.getInstance().factorys.get(2)).button_held = false; } if(numPlayers >3 && keycode == Input.Keys.L && GameInstance.getInstance().factorys.size>1) { ((FactoryProduction) GameInstance.getInstance().factorys.get(3)).button_held = false; } return false; } @Override public boolean keyTyped(char character) { // TODO Auto-generated method stub return false; } @Override public boolean touchDown(int x, int y, int pointer, int button) { collisionRay = cam.getPickRay(x, y); if(numPlayers >0 && Intersector.intersectRayBoundsFast(collisionRay, touchAreaP1) && GameInstance.getInstance().factorys.size>0) { ((FactoryProduction) GameInstance.getInstance().factorys.get(0)).button_held = true; pointerP1 = pointer; touchedP1 = true; } if(numPlayers >1 && Intersector.intersectRayBoundsFast(collisionRay, touchAreaP2) && GameInstance.getInstance().factorys.size>1) { ((FactoryProduction) GameInstance.getInstance().factorys.get(1)).button_held = true; pointerP2 = pointer; touchedP2 = true; } if(numPlayers >2 && Intersector.intersectRayBoundsFast(collisionRay, touchAreaP3) && GameInstance.getInstance().factorys.size>2) { ((FactoryProduction) GameInstance.getInstance().factorys.get(2)).button_held = true; pointerP3 = pointer; touchedP3 = true; } if(numPlayers >3 && Intersector.intersectRayBoundsFast(collisionRay, touchAreaP4) && GameInstance.getInstance().factorys.size>3) { ((FactoryProduction) GameInstance.getInstance().factorys.get(3)).button_held = true; pointerP4 = pointer; touchedP4 = true; } return false; } @Override public boolean touchUp(int x, int y, int pointer, int button) { collisionRay = cam.getPickRay(x, y); if(numPlayers >0 && pointer == pointerP1 && GameInstance.getInstance().factorys.size>0) { ((FactoryProduction) GameInstance.getInstance().factorys.get(0)).button_held = false; pointerP1 = -1; } if(numPlayers >1 && pointer == pointerP2 && GameInstance.getInstance().factorys.size>1) { ((FactoryProduction) GameInstance.getInstance().factorys.get(1)).button_held = false; pointerP2 = -1; } if(numPlayers >2 && pointer == pointerP3 && GameInstance.getInstance().factorys.size>1) { ((FactoryProduction) GameInstance.getInstance().factorys.get(2)).button_held = false; pointerP3 = -1; } if(numPlayers >3 && pointer == pointerP4 && GameInstance.getInstance().factorys.size>1) { ((FactoryProduction) GameInstance.getInstance().factorys.get(3)).button_held = false; pointerP4 = -1; } return false; } @Override public boolean touchDragged(int x, int y, int pointer) { return false; } @Override public boolean scrolled(int amount) { return false; } @Override public boolean mouseMoved(int screenX, int screenY) { return false; } }