DEADSOFTWARE

Add support for external assets
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / menu / submenus / MenuMain.java
index 84b73ccd76805c7184989db4b106bf12bf6cd5db..f71183a0583ce95b4c78fa760cb081e5323188e0 100644 (file)
@@ -1,33 +1,60 @@
 package ru.deadsoftware.cavedroid.menu.submenus;
 
 import com.badlogic.gdx.Gdx;
+import ru.deadsoftware.cavedroid.MainConfig;
 import ru.deadsoftware.cavedroid.game.GameSaver;
+import ru.deadsoftware.cavedroid.menu.MenuProc;
 import ru.deadsoftware.cavedroid.menu.objects.Button;
-import ru.deadsoftware.cavedroid.menu.objects.ButtonDrawer;
 import ru.deadsoftware.cavedroid.menu.objects.ButtonEventListener;
+import ru.deadsoftware.cavedroid.menu.objects.ButtonRenderer;
+import ru.deadsoftware.cavedroid.misc.utils.AssetLoader;
 
+import javax.inject.Inject;
 import java.util.HashMap;
 
 public class MenuMain extends Menu {
 
-    public MenuMain(float width, float height, ButtonDrawer buttonDrawer) {
-        super(width, height, buttonDrawer);
+    public MenuMain(float width,
+                    float height,
+                    ButtonRenderer buttonRenderer,
+                    MainConfig mainConfig,
+                    MenuProc.Input menuInput,
+                    AssetLoader assetLoader) {
+        super(width, height, buttonRenderer, mainConfig, menuInput, assetLoader);
     }
 
     @Override
     protected HashMap<String, ButtonEventListener> getButtonEventListeners() {
         HashMap<String, ButtonEventListener> map = new HashMap<>();
-        map.put("new_game", MenuInput::newGameClicked);
-        map.put("load_game", MenuInput::loadGameClicked);
-        map.put("quit", MenuInput::quitClicked);
+        map.put("new_game", mMenuInput::newGameClicked);
+        map.put("load_game", mMenuInput::loadGameClicked);
+        map.put("quit", mMenuInput::quitClicked);
         return map;
     }
 
     @Override
     protected void initButtons() {
-        loadButtonsFromJson(Gdx.files.internal("json/menu_main_buttons.json"));
-        if (GameSaver.exists()) {
+        loadButtonsFromJson(mAssetLoader.getAssetHandle("json/menu_main_buttons.json"));
+        if (GameSaver.exists(mMainConfig)) {
             getButtons().get("load_game").setType(Button.NORMAL);
         }
     }
+
+    public static class Factory {
+
+        private final MainConfig mMainConfig;
+        private final AssetLoader mAssetLoader;
+
+        @Inject
+        public Factory(MainConfig mainConfig, AssetLoader assetLoader) {
+            mMainConfig = mainConfig;
+            mAssetLoader = assetLoader;
+        }
+
+        public MenuMain get(float width, float height, ButtonRenderer buttonRenderer, MenuProc.Input menuInput) {
+            return new MenuMain(width, height, buttonRenderer, mMainConfig, menuInput, mAssetLoader);
+        }
+
+    }
+
 }