DEADSOFTWARE

Add food
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / MainConfig.java
index b48b78df896ebe46b878bc1675dcc44007fdafdc..3ffb506285028aada2dd994cc104f772fc4ff59d 100644 (file)
@@ -1,15 +1,32 @@
 package ru.deadsoftware.cavedroid;
 
 import ru.deadsoftware.cavedroid.game.GameUiWindow;
+import ru.deadsoftware.cavedroid.game.input.Joystick;
+import ru.deadsoftware.cavedroid.prefs.PreferencesStore;
 
+import javax.annotation.CheckForNull;
+import javax.annotation.Nullable;
 import javax.inject.Inject;
 import javax.inject.Singleton;
+import java.util.HashMap;
 
 @Singleton
 public class MainConfig {
 
+    private final HashMap<String, String> mPreferencesCache = new HashMap<>();
+
+    @CheckForNull
+    private FullscreenToggleListener mFullscreenToggleListener = null;
+
+    private final CaveGame mCaveGame;
+    private final PreferencesStore mPreferencesStore;
+
+    @CheckForNull
     private MainComponent mMainComponent;
 
+    @CheckForNull
+    private Joystick mJoystick;
+
     private GameUiWindow mGameUiWindow;
     private String mGameFolder;
 
@@ -20,13 +37,24 @@ public class MainConfig {
     private float mWidth;
     private float mHeight;
 
+    @Nullable
+    private String mAssetsPackPath = null;
+
     @Inject
-    public MainConfig() {
+    public MainConfig(CaveGame caveGame, PreferencesStore preferencesStore) {
+        mCaveGame = caveGame;
+        mPreferencesStore = preferencesStore;
+
         mGameUiWindow = GameUiWindow.NONE;
         mGameFolder = "";
     }
 
+    public CaveGame getCaveGame() {
+        return mCaveGame;
+    }
+
     public MainComponent getMainComponent() {
+        assert mMainComponent != null;
         return mMainComponent;
     }
 
@@ -38,10 +66,6 @@ public class MainConfig {
         return mGameUiWindow == gameUiWindow;
     }
 
-    public GameUiWindow getGameUiWindow() {
-        return mGameUiWindow;
-    }
-
     public void setGameUiWindow(GameUiWindow gameUiWindow) {
         mGameUiWindow = gameUiWindow;
     }
@@ -93,4 +117,55 @@ public class MainConfig {
     public void setShowMap(boolean showMap) {
         mShowMap = showMap;
     }
+
+    @Nullable
+    public String getAssetsPackPath() {
+        return mAssetsPackPath;
+    }
+
+    public void setAssetsPackPath(@Nullable String assetsPackPath) {
+        mAssetsPackPath = assetsPackPath;
+    }
+
+    @CheckForNull
+    public Joystick getJoystick() {
+        return mJoystick;
+    }
+
+    public void setJoystick(@CheckForNull Joystick joystick) {
+        mJoystick = joystick;
+    }
+
+    @CheckForNull
+    public String getPreference(String key) {
+        if (mPreferencesCache.containsKey(key)) {
+            return mPreferencesCache.get(key);
+        }
+
+        String value = mPreferencesStore.getPreference(key);
+        mPreferencesCache.put(key, value);
+
+        return value;
+    }
+
+    public void setPreference(String key, String value) {
+        mPreferencesCache.put(key, value);
+        mPreferencesStore.setPreference(key, value);
+
+        if (mFullscreenToggleListener != null && key.equals("fullscreen")) {
+            mFullscreenToggleListener.onFullscreenToggled(Boolean.parseBoolean(value));
+        }
+    }
+
+    public void setFullscreenToggleListener(@Nullable FullscreenToggleListener fullscreenToggleListener) {
+        mFullscreenToggleListener = fullscreenToggleListener;
+    }
+
+    public boolean isUseDynamicCamera() {
+        return Boolean.parseBoolean(getPreference("dyncam"));
+    }
+
+    public interface FullscreenToggleListener {
+        void onFullscreenToggled(boolean value);
+    }
 }