1 package de.jos.game.actions.permanent; 2 3 import java.awt.Graphics2D; 4 5 import com.golden.gamedev.GameObject; 6 7 import de.jos.game.actions.ActionScrollInOut; 8 import de.jos.game.actions.LayerConstants; 9 import de.jos.game.actions.cleanup.CleanupActionNone; 10 import de.jos.game.actions.cleanup.CleanupInfiniteGameOverAction; 11 import de.jos.game.logic.AbstractGameBoard; 12 import de.jos.game.objects.Countdown; 13 14 public class ActionCountdown extends AbstractPermanentAction implements SpecialEventPermanent { 15 16 private Countdown countdown = new Countdown(); 17 18 private AbstractGameBoard gameBoard = null; 19 20 private boolean gameOver = false; 21 22 public ActionCountdown(AbstractGameBoard gameBoard) { 23 this.gameBoard = gameBoard; 24 setCleanupAction(new CleanupActionNone(null)); 25 } 26 27 public void init() { 28 super.init(); 29 countdown.setSprite(getResourceContainer().getCountdownSprite()); 30 countdown.getSprite().setBackground(getResourceContainer().getGameBackgroundImage()); 31 countdown.init(); 32 } 33 34 public Integer getLayer() { 35 return LayerConstants.LAYER_1; 36 } 37 38 public boolean isFinished() { 39 return false; 40 } 41 42 public boolean isBlocking() { 43 return false; 44 } 45 46 public void update(long elapsedTime, GameObject gameObject) { 47 48 if (gameOver == false) { 49 if (countdown.isTimedOut() == true) { 50 ActionScrollInOut gameOverScroll = new ActionScrollInOut(); 51 gameOverScroll.setResourceContainer(getResourceContainer()); 52 53 gameOverScroll.setText1(getString("text.scroller.timedOut", "!")); 54 gameOverScroll.setText2(getString("text.scroller.gameOver", "!")); 55 gameOverScroll.init(); 56 57 CleanupInfiniteGameOverAction cleanupAction = new CleanupInfiniteGameOverAction(getGameBoard()); 58 gameOverScroll.setCleanupAction(cleanupAction); 59 60 getNewSpecialEventList().add(gameOverScroll); 61 62 gameOver = true; 63 } else { 64 countdown.update(elapsedTime); 65 } 66 } 67 } 68 69 public void render(Graphics2D graphics, GameObject gameObject) { 70 getResourceContainer().getCountdownBackground().render(graphics); 71 countdown.getSprite().render(graphics); 72 } 73 74 public AbstractGameBoard getGameBoard() { 75 return gameBoard; 76 } 77 78 public void setTimeBonus(double timeBonus) { 79 countdown.setTimeBonus(timeBonus); 80 } 81 82 public String getName() { 83 return this.getClass().getName(); 84 } 85 86 }