1 package de.jos.game.logic;
2
3 import java.awt.Graphics2D;
4
5 import com.golden.gamedev.GameObject;
6
7 import de.jos.game.actions.ActionBulletMoving;
8 import de.jos.game.actions.SpecialActionEvent;
9 import de.jos.game.actions.cleanup.CleanupActionBulletMovingInfinite;
10 import de.jos.game.objects.Bullet;
11 import de.jos.game.objects.screen.Screen;
12
13 public class InfiniteGameLogic extends AbstractGameLogic {
14
15 private RenderedButton combinationButton = null;
16 private RenderedButton backButton = null;
17
18 public void init() {
19 backButton = new RenderedButton();
20 backButton.setSprite(getResourceContainer().getAnimatedButtonSprite());
21 backButton.getSprite().setX(2);
22 backButton.getSprite().setY(2);
23 backButton.setNextGameId(Screen.START.ordinal());
24
25 combinationButton = new RenderedButton();
26 combinationButton.setSprite(getResourceContainer().getAnimatedButtonSprite());
27 combinationButton.getSprite().setX(2);
28 combinationButton.getSprite().setY(400);
29 combinationButton.setNextGameId(Screen.HELP_COMBINATIONS.ordinal());
30 }
31
32 public void update(long elapsedTime, GameObject gameObject) {
33
34 combinationButton.update(elapsedTime, gameObject);
35 backButton.update(elapsedTime, gameObject);
36
37
38 super.update(elapsedTime, gameObject);
39
40 if (getBoard().getActionContainer().isBlocking() == true) {
41 return;
42 }
43
44 InfiniteGameBoard board = (InfiniteGameBoard) getBoard();
45 if (BoardUtils.getBoardBullets(board).isEmpty()) {
46 board.fillFieldsByRandom();
47 }
48
49 }
50
51 public void render(Graphics2D graphics, GameObject gameObject) {
52
53 super.render(graphics, gameObject);
54
55 combinationButton.render(graphics);
56 backButton.render(graphics);
57 }
58
59 /***
60 * {@inheritDoc}
61 */
62 @Override
63 public void renderBackground(Graphics2D graphics) {
64
65 getResourceContainer().getGameBackgroundImage().render(graphics, 0, 0, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);
66
67
68 graphics.drawImage(getResourceContainer().getBgPartInfinite(), 470, 0, null);
69 }
70
71 protected SpecialActionEvent getSpecificBulletMovingAction(Bullet bullet) {
72 ActionBulletMoving abm = new ActionBulletMoving(bullet);
73 abm.setResourceContainer(getResourceContainer());
74 abm.init();
75
76 CleanupActionBulletMovingInfinite cabmi = new CleanupActionBulletMovingInfinite(getBoard(), bullet);
77 cabmi.setResourceContainer(getResourceContainer());
78 abm.setCleanupAction(cabmi);
79 return abm;
80 }
81
82 }