DEADSOFTWARE

Update README
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / menu / MenuProc.java
1 package ru.deadsoftware.cavedroid.menu;
3 import com.badlogic.gdx.Gdx;
4 import com.badlogic.gdx.utils.ObjectMap;
5 import ru.deadsoftware.cavedroid.CaveGame;
6 import ru.deadsoftware.cavedroid.MainConfig;
7 import ru.deadsoftware.cavedroid.menu.objects.Button;
8 import ru.deadsoftware.cavedroid.menu.submenus.Menu;
9 import ru.deadsoftware.cavedroid.menu.submenus.MenuMain;
10 import ru.deadsoftware.cavedroid.menu.submenus.MenuNewGame;
11 import ru.deadsoftware.cavedroid.misc.Renderer;
13 import javax.inject.Inject;
15 import static ru.deadsoftware.cavedroid.misc.Assets.*;
17 @MenuScope
18 public class MenuProc extends Renderer {
20 public class Input {
21 private void startNewGame(int gameMode) {
22 mMainConfig.getCaveGame().newGame(gameMode);
23 }
25 public void newGameClicked() {
26 mCurrentMenu = mMenuNewGame;
27 }
29 public void loadGameClicked() {
30 mMainConfig.getCaveGame().loadGame();
31 }
33 public void quitClicked() {
34 Gdx.app.exit();
35 }
37 public void survivalClicked() {
38 startNewGame(0);
39 }
41 public void creativeClicked() {
42 startNewGame(1);
43 }
45 public void backClicked() {
46 mCurrentMenu = mMenuMain;
47 }
48 }
50 private final MainConfig mMainConfig;
52 private final MenuMain mMenuMain;
53 private final MenuNewGame mMenuNewGame;
55 private Menu mCurrentMenu;
57 @Inject
58 public MenuProc(
59 MainConfig mainConfig,
60 MenuMain.Factory menuMainFactory,
61 MenuNewGame.Factory menuNewGameFactory
62 ) {
63 super(mainConfig.getWidth(), mainConfig.getHeight());
65 mMainConfig = mainConfig;
67 Input menuInput = new Input();
69 mMenuMain = menuMainFactory.get(getWidth(), getHeight(), this::drawButton, menuInput);
70 mMenuNewGame = menuNewGameFactory.get(getWidth(), getHeight(), this::drawButton, menuInput);
72 mCurrentMenu = mMenuMain;
73 }
75 private void drawButton(Button button) {
76 spriter.draw(textureRegions.get("button_" + button.getType()), button.getX(), button.getY());
77 setFontColor(255, 255, 255);
78 drawString(button.getLabel(),
79 (button.getX() + button.getWidth() / 2) - (float) getStringWidth(button.getLabel()) / 2,
80 (button.getY() + button.getHeight() / 2) - (float) getStringHeight(button.getLabel()) / 2);
81 }
83 @Override
84 public boolean touchUp(int screenX, int screenY, int pointer, int mb) {
85 screenX *= getWidth() / Gdx.graphics.getWidth();
86 screenY *= getHeight() / Gdx.graphics.getHeight();
87 for (ObjectMap.Entry<String, Button> entry : mCurrentMenu.getButtons()) {
88 Button button = entry.value;
89 if (button.getRect().contains(screenX, screenY)) {
90 if (button.getType() > 0) {
91 button.clicked();
92 }
93 break;
94 }
95 }
96 return false;
97 }
99 @Override
100 public void render(float delta) {
101 spriter.begin();
102 mCurrentMenu.draw(spriter);
103 drawString("CaveDroid " + CaveGame.VERSION, 0,
104 getHeight() - getStringHeight("CaveDroid " + CaveGame.VERSION) * 1.5f);
105 spriter.end();
108 public void reset() {
109 mCurrentMenu = mMenuMain;