DEADSOFTWARE

Fix saves
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / GameScreen.java
index 00cfd3e6502b57c0be039514f0f25870f639d2f6..1d47b9074cb9f65144944486e024ad7462a579cd 100644 (file)
@@ -4,28 +4,58 @@ import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.Screen;
 import ru.deadsoftware.cavedroid.MainConfig;
 
+import javax.annotation.CheckForNull;
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
 @Singleton
 public class GameScreen implements Screen {
 
-    private static final String TAG = "GameScreen";
-
     private final MainConfig mMainConfig;
 
+    @CheckForNull
     private GameProc mGameProc;
+    @CheckForNull
+    private GameInputProcessor mGameInputProcessor;
+    @CheckForNull
+    private GameItemsHolder mGameItemsHolder;
 
     @Inject
     public GameScreen(MainConfig mainConfig) {
         mMainConfig = mainConfig;
-        newGame();
     }
 
-    public void newGame() {
+    public void newGame(int gameMode) {
+        if (mGameProc != null) {
+            mGameProc.dispose();
+        }
+
+        GameModule.loaded = true;
+
         GameComponent gameComponent = DaggerGameComponent.builder()
                 .mainComponent(mMainConfig.getMainComponent()).build();
+
         mGameProc = gameComponent.getGameProc();
+        mGameInputProcessor = gameComponent.getGameInputProcessor();
+
+        mGameProc.setPlayerGameMode(gameMode);
+
+        Gdx.input.setInputProcessor(gameComponent.getGameInputProcessor());
+    }
+
+    public void loadGame() {
+        if (mGameProc != null) {
+            mGameProc.dispose();
+        }
+
+        GameModule.loaded = false;
+
+        GameComponent gameComponent = DaggerGameComponent.builder()
+                .mainComponent(mMainConfig.getMainComponent()).build();
+
+        mGameProc = gameComponent.getGameProc();
+        mGameInputProcessor = gameComponent.getGameInputProcessor();
+
         Gdx.input.setInputProcessor(gameComponent.getGameInputProcessor());
     }
 
@@ -36,7 +66,7 @@ public class GameScreen implements Screen {
 
     @Override
     public void show() {
-
+        Gdx.input.setInputProcessor(mGameInputProcessor);
     }
 
     @Override
@@ -61,6 +91,9 @@ public class GameScreen implements Screen {
 
     @Override
     public void dispose() {
+        if (mGameProc != null) {
+            mGameProc.dispose();
+        }
     }
 
 }