diff --git a/core/src/ru/deadsoftware/cavedroid/menu/MenuProc.java b/core/src/ru/deadsoftware/cavedroid/menu/MenuProc.java
index 8bc9dd6615f37fec87e79aa0acda38bdd4bb1ac4..6accb5726147700119cb351f1d327d7760df4937 100644 (file)
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.utils.ObjectMap;
import ru.deadsoftware.cavedroid.CaveGame;
-import ru.deadsoftware.cavedroid.game.GameScreen;
+import ru.deadsoftware.cavedroid.MainConfig;
import ru.deadsoftware.cavedroid.menu.objects.Button;
import ru.deadsoftware.cavedroid.menu.submenus.Menu;
import ru.deadsoftware.cavedroid.menu.submenus.MenuMain;
import ru.deadsoftware.cavedroid.menu.submenus.MenuNewGame;
import ru.deadsoftware.cavedroid.misc.Renderer;
-import ru.deadsoftware.cavedroid.misc.states.AppState;
-import ru.deadsoftware.cavedroid.misc.states.GameState;
-import ru.deadsoftware.cavedroid.misc.states.MenuState;
+
+import javax.inject.Inject;
import static ru.deadsoftware.cavedroid.misc.Assets.*;
+@MenuScope
public class MenuProc extends Renderer {
- private MenuMain mainMenu;
- private MenuNewGame newGameMenu;
+ public class Input {
+ private void startNewGame(int gameMode) {
+ mMainConfig.getCaveGame().newGame(gameMode);
+ }
+
+ public void newGameClicked() {
+ mCurrentMenu = mMenuNewGame;
+ }
- private Menu currentMenu;
+ public void loadGameClicked() {
+ mMainConfig.getCaveGame().loadGame();
+ }
+
+ public void quitClicked() {
+ Gdx.app.exit();
+ }
- public MenuProc(int width) {
- super(width, width * Gdx.graphics.getHeight() / Gdx.graphics.getWidth());
- mainMenu = new MenuMain(getWidth(), getHeight(), this::drawButton);
- newGameMenu = new MenuNewGame(getWidth(), getHeight(), this::drawButton);
- currentMenu = mainMenu;
+ public void survivalClicked() {
+ startNewGame(0);
+ }
+
+ public void creativeClicked() {
+ startNewGame(1);
+ }
+
+ public void backClicked() {
+ mCurrentMenu = mMenuMain;
+ }
+ }
+
+ private final MainConfig mMainConfig;
+
+ private final MenuMain mMenuMain;
+ private final MenuNewGame mMenuNewGame;
+
+ private Menu mCurrentMenu;
+
+ @Inject
+ public MenuProc(
+ MainConfig mainConfig,
+ MenuMain.Factory menuMainFactory,
+ MenuNewGame.Factory menuNewGameFactory
+ ) {
+ super(mainConfig.getWidth(), mainConfig.getHeight());
+
+ mMainConfig = mainConfig;
+
+ Input menuInput = new Input();
+
+ mMenuMain = menuMainFactory.get(getWidth(), getHeight(), this::drawButton, menuInput);
+ mMenuNewGame = menuNewGameFactory.get(getWidth(), getHeight(), this::drawButton, menuInput);
+
+ mCurrentMenu = mMenuMain;
}
private void drawButton(Button button) {
(button.getY() + button.getHeight() / 2) - (float) getStringHeight(button.getLabel()) / 2);
}
- private void update() {
-// switch (CaveGame.MENU_STATE) {
-// case MAIN:
-// currentMenu = mainMenu;
-// break;
-// case NEW_GAME:
-// currentMenu = newGameMenu;
-// break;
-// case LOADING:
-// drawString("Generating World...");
-// CaveGame.APP_STATE = AppState.GAME;
-// CaveGame.GAME_STATE = GameState.PLAY;
-// break;
-// case SAVING:
-// drawString("Saving Game...");
-// CaveGame.APP_STATE = AppState.MENU;
-// CaveGame.MENU_STATE = MenuState.MAIN;
-// break;
-// }
- }
-
@Override
public boolean touchUp(int screenX, int screenY, int pointer, int mb) {
screenX *= getWidth() / Gdx.graphics.getWidth();
screenY *= getHeight() / Gdx.graphics.getHeight();
- for (ObjectMap.Entry<String, Button> entry : currentMenu.getButtons()) {
+ for (ObjectMap.Entry<String, Button> entry : mCurrentMenu.getButtons()) {
Button button = entry.value;
if (button.getRect().contains(screenX, screenY)) {
if (button.getType() > 0) {
@Override
public void render(float delta) {
- update();
spriter.begin();
- currentMenu.draw(spriter);
+ mCurrentMenu.draw(spriter);
drawString("CaveDroid " + CaveGame.VERSION, 0,
getHeight() - getStringHeight("CaveDroid " + CaveGame.VERSION) * 1.5f);
spriter.end();
}
+
+ public void reset() {
+ mCurrentMenu = mMenuMain;
+ }
}