DEADSOFTWARE

Implement dependency injection for game classes #13
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / CaveGame.java
index 57704d98f94f56d186c6c2c845f0dfd2f699d8d6..f1fb3eed43b8be66c7f358e028561085358bdcdb 100644 (file)
@@ -2,38 +2,51 @@ package ru.deadsoftware.cavedroid;
 
 import com.badlogic.gdx.Game;
 import com.badlogic.gdx.Gdx;
-import ru.deadsoftware.cavedroid.misc.states.AppState;
-import ru.deadsoftware.cavedroid.misc.states.GameState;
-import ru.deadsoftware.cavedroid.misc.states.MenuState;
+import ru.deadsoftware.cavedroid.game.GameItems;
+import ru.deadsoftware.cavedroid.misc.Assets;
 
 public class CaveGame extends Game {
 
+    private static final String TAG = "CaveGame";
+
     public static final String VERSION = "alpha 0.4";
 
-    public static AppState APP_STATE;
-    public static GameState GAME_STATE;
-    public static MenuState MENU_STATE;
+    private final String mGameFolder;
+    private final boolean mTouch;
+    private boolean mDebug;
 
-    public static String GAME_FOLDER;
-    public static boolean TOUCH;
+    public CaveGame(String gameFolder, boolean touch) {
+        mGameFolder = gameFolder;
+        mTouch = touch;
+    }
 
-    public CaveGame(String gameFolder) {
-        this(gameFolder, false);
+    public void setDebug(boolean debug) {
+        mDebug = debug;
     }
 
-    public CaveGame(String gameFolder, boolean touch) {
-        GAME_FOLDER = gameFolder;
-        TOUCH = touch;
-        APP_STATE = AppState.MENU;
-        MENU_STATE = MenuState.MAIN;
-        GAME_STATE = GameState.PLAY;
+    private void initConfig(MainConfig mainConfig, MainComponent mainComponent) {
+        int width = mTouch ? 320 : 480;
+        int height = (int) (width * ((float) Gdx.graphics.getHeight() / Gdx.graphics.getWidth()));
+
+        mainConfig.setMainComponent(mainComponent);
+        mainConfig.setGameFolder(mGameFolder);
+        mainConfig.setTouch(mTouch);
+        mainConfig.setWidth(width);
+        mainConfig.setHeight(height);
+        mainConfig.setShowInfo(true);
     }
 
     @Override
     public void create() {
-        Gdx.app.log("CaveGame", GAME_FOLDER);
-        Gdx.files.absolute(GAME_FOLDER).mkdirs();
-        setScreen(new GameScreen());
+        Gdx.app.log(TAG, mGameFolder);
+        Gdx.files.absolute(mGameFolder).mkdirs();
+
+        Assets.load();
+        GameItems.load();
+
+        MainComponent mainComponent = DaggerMainComponent.create();
+        initConfig(mainComponent.getGameConfig(), mainComponent);
+        setScreen(mainComponent.getGameScreen());
     }
 
 }