diff --git a/src/data/defeat.png b/src/data/defeat.png new file mode 100644 index 0000000..cbfa5cd Binary files /dev/null and b/src/data/defeat.png differ diff --git a/src/data/victory.png b/src/data/victory.png new file mode 100644 index 0000000..3066c9c Binary files /dev/null and b/src/data/victory.png differ diff --git a/src/ei/engine/LWJGLGameWindow.java b/src/ei/engine/LWJGLGameWindow.java index f5742ca..bba4422 100644 --- a/src/ei/engine/LWJGLGameWindow.java +++ b/src/ei/engine/LWJGLGameWindow.java @@ -182,7 +182,7 @@ public class LWJGLGameWindow { GameStateManager.getInstance().update(); mainUpdate(); mainRender(); - //Display.sync(fps); + Display.sync(fps); //Display.sync2(fps); //Display.sync3(fps); } diff --git a/src/ei/game/gamestate/EndGameState.java b/src/ei/game/gamestate/EndGameState.java new file mode 100644 index 0000000..1a49cfd --- /dev/null +++ b/src/ei/game/gamestate/EndGameState.java @@ -0,0 +1,61 @@ +package ei.game.gamestate; + +import ei.engine.LWJGLGameWindow; +import ei.engine.effects.Fade; +import ei.engine.scene.Sprite; +import ei.engine.state.GameState; +import ei.engine.state.GameStateManager; + +public class EndGameState extends GameState{ + public static final int VICTORY = 0; + public static final int DEFEAT = 1; + private Fade fade; + private int status; + private int timer; + + + public EndGameState(String name, int status){ + super(name); + this.status = status; + } + + @Override + public void init() { + fade = new Fade("EGameStateFade"); + fade.fadeOut(false); + switch(status){ + case VICTORY: + Sprite v = new Sprite("Victory","data/victory.png"); + fade.setEntity(v); + break; + case DEFEAT: + Sprite d = new Sprite("Defeat","data/defeat.png"); + fade.setEntity(d); + break; + } + } + + @Override + public void render() { + fade.render(); + } + + @Override + public void update() { + fade.update(); + if(fade.isDone() && timer <= 120){ + timer++; + } + else if(fade.isDone() && timer > 120){ + GameStateManager.getInstance().removeState(this); + if(GameStateManager.getInstance().getState("MenuState") != null){ + GameStateManager.getInstance().removeStateByName("InGameState"); + GameStateManager.getInstance().setActive("MenuState"); + } + else{ + LWJGLGameWindow.exit(); + } + } + } + +} diff --git a/src/ei/game/player/AiPlayer.java b/src/ei/game/player/AiPlayer.java index 12b4785..ad0cfd5 100644 --- a/src/ei/game/player/AiPlayer.java +++ b/src/ei/game/player/AiPlayer.java @@ -40,9 +40,19 @@ public class AiPlayer extends Player{ getUnit(i).move(false, getUnit(i).getPos().getX()-2, getUnit(i).getPos().getY()-2); } } - } - + } } + @Override + public boolean defeated() { + if(cc.getLife() <= 0){ + return true; + } + return false; + } + @Override + public void endGame(int s) { + + } } diff --git a/src/ei/game/player/GaiaPlayer.java b/src/ei/game/player/GaiaPlayer.java index 931eec6..ee639f9 100644 --- a/src/ei/game/player/GaiaPlayer.java +++ b/src/ei/game/player/GaiaPlayer.java @@ -14,5 +14,15 @@ public class GaiaPlayer extends Player{ public Building getCC() { return null; } + + @Override + public boolean defeated() { + return false; + } + + @Override + public void endGame(int s) { + + } } diff --git a/src/ei/game/player/HumanPlayer.java b/src/ei/game/player/HumanPlayer.java index 29ad65a..b2587b1 100644 --- a/src/ei/game/player/HumanPlayer.java +++ b/src/ei/game/player/HumanPlayer.java @@ -1,5 +1,7 @@ package ei.game.player; +import ei.engine.state.GameStateManager; +import ei.game.gamestate.EndGameState; import ei.game.scene.buildings.Building; import ei.game.scene.buildings.CommandCenter; @@ -16,4 +18,18 @@ public class HumanPlayer extends Player{ return cc; } + @Override + public boolean defeated() { + if(cc.getLife() <= 0){ + return true; + } + return false; + } + + @Override + public void endGame(int s) { + GameStateManager.getInstance().addState(new EndGameState("EndGameState",s)); + GameStateManager.getInstance().setActive("EndGameState"); + } + } diff --git a/src/ei/game/player/Player.java b/src/ei/game/player/Player.java index 0e415d8..55026af 100644 --- a/src/ei/game/player/Player.java +++ b/src/ei/game/player/Player.java @@ -57,5 +57,16 @@ public abstract class Player { } } + public void kilAll(){ + for(int i=0; i= fundsDelay){ @@ -79,9 +80,15 @@ public class PlayerHandler { } fundsTimmer = 0; } + //******************************* // updates the players for(int i=0; i= buildQueue.peek().getPrice()){ diff --git a/src/ei/game/scene/map/MapEntity.java b/src/ei/game/scene/map/MapEntity.java index 1b2492b..7e8a8a4 100644 --- a/src/ei/game/scene/map/MapEntity.java +++ b/src/ei/game/scene/map/MapEntity.java @@ -16,7 +16,7 @@ public abstract class MapEntity extends Unit{ public void update() { if(getLife()<=0) { - removeUnit(); + remove(); } } public void move(boolean play, int x, int y){ diff --git a/src/ei/game/scene/units/Unit.java b/src/ei/game/scene/units/Unit.java index 3120e49..d7111aa 100644 --- a/src/ei/game/scene/units/Unit.java +++ b/src/ei/game/scene/units/Unit.java @@ -222,7 +222,7 @@ public abstract class Unit extends GameEntity{ public abstract void init(); - public void removeUnit(){ + public void remove(){ unitNode.remove(getSprite()); getPlayer().removeUnit(this); InGameState.getMap().removePos(oldPos.getX(), oldPos.getY()); @@ -235,7 +235,7 @@ public abstract class Unit extends GameEntity{ weponTimer++; if(getLife()<=0) { destroyed(); - removeUnit(); + remove(); } else if(moveTo != null) { Vector2i moveVect = new Vector2i((int)moveTo.getX(),(int)moveTo.getY());