DEADSOFTWARE

Add support for external assets
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / CaveGame.java
index f1fb3eed43b8be66c7f358e028561085358bdcdb..287b67dbf5eb355a0c81a2048387e3c7ff9d6fef 100644 (file)
@@ -3,37 +3,71 @@ package ru.deadsoftware.cavedroid;
 import com.badlogic.gdx.Game;
 import com.badlogic.gdx.Gdx;
 import ru.deadsoftware.cavedroid.game.GameItems;
+import ru.deadsoftware.cavedroid.game.GameScreen;
 import ru.deadsoftware.cavedroid.misc.Assets;
+import ru.deadsoftware.cavedroid.misc.utils.AssetLoader;
+
+import javax.annotation.Nullable;
 
 public class CaveGame extends Game {
 
     private static final String TAG = "CaveGame";
 
-    public static final String VERSION = "alpha 0.4";
+    public static final String VERSION = "alpha 0.4.1";
+
+    private final MainConfig mMainConfig;
+    private final MainComponent mMainComponent;
+    private final AssetLoader mAssetLoader;
 
     private final String mGameFolder;
     private final boolean mTouch;
     private boolean mDebug;
 
-    public CaveGame(String gameFolder, boolean touch) {
+    @Nullable
+    private final String mAssetsPackPath;
+
+    public CaveGame(String gameFolder, boolean touch, @Nullable String assetsPackPath) {
         mGameFolder = gameFolder;
         mTouch = touch;
+        mAssetsPackPath = assetsPackPath;
+
+        mMainComponent = DaggerMainComponent.builder().caveGame(this).build();
+
+        mMainConfig = mMainComponent.getMainConfig();
+        mAssetLoader = mMainComponent.getAssetLoader();
     }
 
     public void setDebug(boolean debug) {
         mDebug = debug;
     }
 
-    private void initConfig(MainConfig mainConfig, MainComponent mainComponent) {
+    private void initConfig() {
         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);
+        mMainConfig.setMainComponent(mMainComponent);
+        mMainConfig.setGameFolder(mGameFolder);
+        mMainConfig.setTouch(mTouch);
+        mMainConfig.setWidth(width);
+        mMainConfig.setHeight(height);
+        mMainConfig.setShowInfo(mDebug);
+        mMainConfig.setAssetsPackPath(mAssetsPackPath);
+    }
+
+    public void newGame() {
+        GameScreen gameScreen = mMainComponent.getGameScreen();
+        gameScreen.newGame();
+        setScreen(gameScreen);
+    }
+
+    public void loadGame() {
+        GameScreen gameScreen = mMainComponent.getGameScreen();
+        gameScreen.loadGame();
+        setScreen(gameScreen);
+    }
+
+    public void quitGame() {
+        setScreen(mMainComponent.getMenuScreen());
     }
 
     @Override
@@ -41,12 +75,12 @@ public class CaveGame extends Game {
         Gdx.app.log(TAG, mGameFolder);
         Gdx.files.absolute(mGameFolder).mkdirs();
 
-        Assets.load();
-        GameItems.load();
+        initConfig();
+
+        Assets.load(mAssetLoader);
+        GameItems.load(mAssetLoader);
 
-        MainComponent mainComponent = DaggerMainComponent.create();
-        initConfig(mainComponent.getGameConfig(), mainComponent);
-        setScreen(mainComponent.getGameScreen());
+        setScreen(mMainComponent.getMenuScreen());
     }
 
 }