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 }