DEADSOFTWARE

Add food
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / MainConfig.java
index 8cd0ffdac6920e2977f46ac10c156e8be4f4ac7f..3ffb506285028aada2dd994cc104f772fc4ff59d 100644 (file)
@@ -1,19 +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;
 
@@ -24,9 +37,13 @@ public class MainConfig {
     private float mWidth;
     private float mHeight;
 
+    @Nullable
+    private String mAssetsPackPath = null;
+
     @Inject
-    public MainConfig(CaveGame caveGame) {
+    public MainConfig(CaveGame caveGame, PreferencesStore preferencesStore) {
         mCaveGame = caveGame;
+        mPreferencesStore = preferencesStore;
 
         mGameUiWindow = GameUiWindow.NONE;
         mGameFolder = "";
@@ -49,10 +66,6 @@ public class MainConfig {
         return mGameUiWindow == gameUiWindow;
     }
 
-    public GameUiWindow getGameUiWindow() {
-        return mGameUiWindow;
-    }
-
     public void setGameUiWindow(GameUiWindow gameUiWindow) {
         mGameUiWindow = gameUiWindow;
     }
@@ -104,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);
+    }
 }