X-Git-Url: https://deadsoftware.ru/gitweb?a=blobdiff_plain;f=core%2Fsrc%2Fru%2Fdeadsoftware%2Fcavedroid%2Fmenu%2FMenuProc.java;h=6accb5726147700119cb351f1d327d7760df4937;hb=c1fdecd8692e21b59a720eca1a3617cb5eb7c07f;hp=8bc9dd6615f37fec87e79aa0acda38bdd4bb1ac4;hpb=f4d52e3e4a3712050532786fca0aded5ff8b5a03;p=cavedroid.git diff --git a/core/src/ru/deadsoftware/cavedroid/menu/MenuProc.java b/core/src/ru/deadsoftware/cavedroid/menu/MenuProc.java index 8bc9dd6..6accb57 100644 --- a/core/src/ru/deadsoftware/cavedroid/menu/MenuProc.java +++ b/core/src/ru/deadsoftware/cavedroid/menu/MenuProc.java @@ -3,30 +3,73 @@ package ru.deadsoftware.cavedroid.menu; 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) { @@ -37,32 +80,11 @@ public class MenuProc extends Renderer { (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 entry : currentMenu.getButtons()) { + for (ObjectMap.Entry entry : mCurrentMenu.getButtons()) { Button button = entry.value; if (button.getRect().contains(screenX, screenY)) { if (button.getType() > 0) { @@ -76,11 +98,14 @@ public class MenuProc extends Renderer { @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; + } }