From 4079218ab051b52ccc8b7ce8f055cf3873defa62 Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 26 Feb 2014 18:53:41 +0200 Subject: [PATCH] Add GameState class with controlling bullet left and enemies left states --- .../com/annimon/militaryhero/GameState.java | 45 +++++++++++++++++++ .../src/com/annimon/militaryhero/MainApp.java | 9 ++-- 2 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 Military-Hero-Core/src/com/annimon/militaryhero/GameState.java diff --git a/Military-Hero-Core/src/com/annimon/militaryhero/GameState.java b/Military-Hero-Core/src/com/annimon/militaryhero/GameState.java new file mode 100644 index 0000000..266240a --- /dev/null +++ b/Military-Hero-Core/src/com/annimon/militaryhero/GameState.java @@ -0,0 +1,45 @@ +package com.annimon.militaryhero; + +import com.annimon.jecp.Graphics; + +/** + * @author aNNiMON + */ +public class GameState { + + private static int bulletLeft, enemiesLeft; + + public static void init(int enemiesLeft) { + GameState.bulletLeft = enemiesLeft + enemiesLeft / 2; + GameState.enemiesLeft = enemiesLeft; + } + + public static void decreaseBulletLeft() { + bulletLeft--; + } + + public static void setEnemiesLeft(int enemiesLeft) { + GameState.enemiesLeft = enemiesLeft; + } + + public static boolean isEndGame() { + return (bulletLeft == 0) || (enemiesLeft == 0); + } + + public static void drawState(Graphics g, int width, int height) { + g.setColor(0xFFFFFFFF); + g.drawString("Bullets: " + bulletLeft, 0, 0); + g.drawString("Enemies: " + enemiesLeft, 0, g.getTextHeight() + 5); + if (isEndGame()) { + g.setColor(0xFF000000); + g.fillRect(0, 0, width, height); + final boolean winState = (enemiesLeft == 0); + g.setColor(winState ? 0xFF00FF00 : 0xFFFF0000); + final String message = winState ? "CONGRATULATIONS" : "GAME OVER"; + final int x = (width - g.getTextWidth(message)) / 2; + final int y = (height - g.getTextHeight()) / 2; + g.drawString(message, x, y); + + } + } +} diff --git a/Military-Hero-Core/src/com/annimon/militaryhero/MainApp.java b/Military-Hero-Core/src/com/annimon/militaryhero/MainApp.java index a7d4aae..d8fbccc 100644 --- a/Military-Hero-Core/src/com/annimon/militaryhero/MainApp.java +++ b/Military-Hero-Core/src/com/annimon/militaryhero/MainApp.java @@ -21,7 +21,6 @@ public class MainApp extends InputProcessor implements ApplicationListener { private Background background; private SniperAim aim; private Enemy[] enemies; - private int enemiesLeft; public void onStartApp(int width, int height) { this.width = width; @@ -33,7 +32,7 @@ public class MainApp extends InputProcessor implements ApplicationListener { for (int i = 0; i < enemies.length; i++) { enemies[i] = new Enemy(COORD[i * 2], COORD[i * 2 + 1]); } - enemiesLeft = enemies.length; + GameState.init(enemies.length); Jecp.inputListener = this; Keys.numericdAsDpad = true; @@ -53,6 +52,7 @@ public class MainApp extends InputProcessor implements ApplicationListener { } background.drawObstacles(g); aim.draw(g); + GameState.drawState(g, width, height); } public void onUpdate() { @@ -69,7 +69,7 @@ public class MainApp extends InputProcessor implements ApplicationListener { } public void isFirePressed() { - if (enemiesLeft == 0) return; + if (GameState.isEndGame()) return; final int x = aim.getAimX(); final int y = aim.getAimY(); @@ -79,7 +79,8 @@ public class MainApp extends InputProcessor implements ApplicationListener { counter++; } } - enemiesLeft = counter; + GameState.setEnemiesLeft(counter); + GameState.decreaseBulletLeft(); } public void onPointerPressed(int x, int y) {