DEADSOFTWARE

Add food
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / MainConfig.java
index 0219655c9c83f109ec6f862b542517b2ff6d9b50..3ffb506285028aada2dd994cc104f772fc4ff59d 100644 (file)
@@ -2,16 +2,24 @@ 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;
@@ -33,8 +41,9 @@ public class MainConfig {
     private String mAssetsPackPath = null;
 
     @Inject
-    public MainConfig(CaveGame caveGame) {
+    public MainConfig(CaveGame caveGame, PreferencesStore preferencesStore) {
         mCaveGame = caveGame;
+        mPreferencesStore = preferencesStore;
 
         mGameUiWindow = GameUiWindow.NONE;
         mGameFolder = "";
@@ -126,4 +135,37 @@ public class MainConfig {
     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);
+    }
 }