summaryrefslogtreecommitdiffstats
path: root/core/src/ch/asynk/rustanddust/RustAndDust.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/ch/asynk/rustanddust/RustAndDust.java')
-rw-r--r--core/src/ch/asynk/rustanddust/RustAndDust.java222
1 files changed, 222 insertions, 0 deletions
diff --git a/core/src/ch/asynk/rustanddust/RustAndDust.java b/core/src/ch/asynk/rustanddust/RustAndDust.java
new file mode 100644
index 0000000..52732a3
--- /dev/null
+++ b/core/src/ch/asynk/rustanddust/RustAndDust.java
@@ -0,0 +1,222 @@
+package ch.asynk.rustanddust;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Game;
+import com.badlogic.gdx.assets.AssetManager;
+import com.badlogic.gdx.audio.Sound;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.BitmapFont;
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;
+
+import ch.asynk.rustanddust.screens.MenuScreen;
+import ch.asynk.rustanddust.screens.GameScreen;
+import ch.asynk.rustanddust.game.Ctrl;
+import ch.asynk.rustanddust.game.Config;
+import ch.asynk.rustanddust.game.battles.Factory;
+
+public class RustAndDust extends Game
+{
+ public AssetManager manager;
+ public Factory factory;
+ public Ctrl ctrl;
+ public Config config;
+ public int hudCorrection;
+
+ public TextureAtlas uiAtlas;
+ public TextureAtlas menuAtlas;
+ public BitmapFont fontB;
+ public BitmapFont fontW;
+
+ public enum State
+ {
+ MENU,
+ GAME,
+ NONE
+ }
+ private State state;
+
+ public static void debug(String msg)
+ {
+ debug("", msg);
+ }
+
+ public static void debug(String dom, String msg)
+ {
+ Gdx.app.debug(dom, msg);
+ }
+
+ @Override
+ public void create ()
+ {
+ Gdx.app.setLogLevel(Gdx.app.LOG_DEBUG);
+ this.hudCorrection = ((int) (125 * Gdx.graphics.getDensity()) - 75);
+ debug("RustAndDust", "create() [" + Gdx.graphics.getWidth() + ";" + Gdx.graphics.getHeight() + "] " + Gdx.graphics.getDensity() + " -> " + hudCorrection);
+
+ manager = new AssetManager();
+ factory = new Factory(this);
+ config = new Config();
+
+ state = State.NONE;
+ loadUiAssets();
+ switchToMenu();
+ }
+
+ public void switchToMenu()
+ {
+ if (state == State.GAME) {
+ unloadGameAssets();
+ factory.dispose();
+ ctrl.dispose();
+ getScreen().dispose();
+ }
+ loadMenuAssets();
+ state = State.MENU;
+ setScreen(new MenuScreen(this));
+ }
+
+ public void switchToGame()
+ {
+ unloadMenuAssets();
+ getScreen().dispose();
+ factory.assetsLoaded();
+ state = State.GAME;
+ setScreen(new GameScreen(this));
+ }
+
+ public void loadGameAssets()
+ {
+ if (config.battle.getMapType() == Factory.MapType.MAP_A)
+ manager.load("data/map_a.png", Texture.class);
+ if (config.battle.getMapType() == Factory.MapType.MAP_B)
+ manager.load("data/map_b.png", Texture.class);
+ int i = config.graphics.i;
+ manager.load(String.format("data/units%d.atlas",i), TextureAtlas.class);
+ manager.load(String.format("data/unit-overlays%d.atlas", i), TextureAtlas.class);
+ manager.load("data/hex.png", Texture.class);
+ manager.load("data/hud.atlas", TextureAtlas.class);
+ manager.load("data/hex-overlays.atlas", TextureAtlas.class);
+ manager.load("data/dice.png", Texture.class);
+ manager.load("data/infantry_fire.png", Texture.class);
+ manager.load("data/tank_fire.png", Texture.class);
+ manager.load("data/explosions.png", Texture.class);
+ manager.load("sounds/dice.mp3", Sound.class);
+ manager.load("sounds/tank_move.mp3", Sound.class);
+ manager.load("sounds/infantry_move.mp3", Sound.class);
+ manager.load("sounds/infantry_fire.mp3", Sound.class);
+ manager.load("sounds/tank_fire.mp3", Sound.class);
+ manager.load("sounds/tank_fire_short.mp3", Sound.class);
+ manager.load("sounds/explosion.mp3", Sound.class);
+ manager.load("sounds/explosion_short.mp3", Sound.class);
+ manager.load("sounds/promote_us.mp3", Sound.class);
+ manager.load("sounds/promote_ge.mp3", Sound.class);
+ debug("RustAndDust", " assets loaded : " + (Gdx.app.getJavaHeap()/1024.0f) + "KB");
+ }
+
+ private void unloadGameAssets()
+ {
+ if (config.battle.getMapType() == Factory.MapType.MAP_A)
+ manager.unload("data/map_a.png");
+ if (config.battle.getMapType() == Factory.MapType.MAP_B)
+ manager.unload("data/map_b.png");
+ int i = config.graphics.i;
+ manager.unload(String.format("data/units%d.atlas",i));
+ manager.unload(String.format("data/unit-overlays%d.atlas", i));
+ manager.unload("data/hex.png");
+ manager.unload("data/hud.atlas");
+ manager.unload("data/hex-overlays.atlas");
+ manager.unload("data/dice.png");
+ manager.unload("data/infantry_fire.png");
+ manager.unload("data/tank_fire.png");
+ manager.unload("data/explosions.png");
+ manager.unload("sounds/dice.mp3");
+ manager.unload("sounds/tank_move.mp3");
+ manager.unload("sounds/infantry_move.mp3");
+ manager.unload("sounds/infantry_fire.mp3");
+ manager.unload("sounds/tank_fire.mp3");
+ manager.unload("sounds/tank_fire_short.mp3");
+ manager.unload("sounds/explosion.mp3");
+ manager.unload("sounds/explosion_short.mp3");
+ manager.unload("sounds/promote_us.mp3");
+ manager.unload("sounds/promote_ge.mp3");
+ debug("RustAndDust", " assets unloaded : " + (Gdx.app.getJavaHeap()/1024.0f) + "KB");
+ }
+
+ private void loadUiAssets()
+ {
+ manager.load("data/ui.atlas", TextureAtlas.class);
+ manager.finishLoading();
+ uiAtlas = manager.get("data/ui.atlas", TextureAtlas.class);
+ fontB = new BitmapFont(Gdx.files.internal("skin/veteran.fnt"), uiAtlas.findRegion("veteran-black"));
+ fontW = new BitmapFont(Gdx.files.internal("skin/veteran.fnt"), uiAtlas.findRegion("veteran-white"));
+ }
+
+ private void unloadUiAssets()
+ {
+ fontB.dispose();
+ fontW.dispose();
+ manager.unload("data/ui.atlas");
+ }
+
+ private void loadMenuAssets()
+ {
+ manager.load("data/map_a.png", Texture.class);
+ manager.load("data/menu.atlas", TextureAtlas.class);
+ manager.finishLoading();
+ menuAtlas = manager.get("data/menu.atlas", TextureAtlas.class);
+ }
+
+ private void unloadMenuAssets()
+ {
+ manager.unload("data/map_a.png");
+ manager.unload("data/menu.atlas");
+ }
+
+ // @Override
+ // public void render ()
+ // {
+ // Gdx.gl.glClearColor(0, 0, 0, 1);
+ // Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
+ // super.render();
+ // }
+
+ // @Override
+ // public void resize(int width, int height)
+ // {
+ // debug("RustAndDust", "resize(" + width + ", " + height + ")");
+ // super.resize(width, height);
+ // }
+
+ @Override
+ public void dispose()
+ {
+ debug("RustAndDust", "dispose()");
+ debug("RustAndDust", "diagnostics:\n" + manager.getDiagnostics() );
+ getScreen().dispose();
+ unloadUiAssets();
+ switch(state) {
+ case MENU:
+ unloadMenuAssets();
+ break;
+ case GAME:
+ unloadGameAssets();
+ factory.dispose();
+ ctrl.dispose();
+ break;
+ }
+ debug("RustAndDust", "diagnostics:\n" + manager.getDiagnostics() );
+ manager.clear();
+ manager.dispose();
+ }
+
+ // @Override
+ // public void pause()
+ // {
+ // debug("RustAndDust", "pause()");
+ // }
+
+ // @Override
+ // public void resume()
+ // {
+ // debug("RustAndDust", "resume()");
+ // }
+}