DEADSOFTWARE

8bc9dd6615f37fec87e79aa0acda38bdd4bb1ac4
[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.game.GameScreen;
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;
12 import ru.deadsoftware.cavedroid.misc.states.AppState;
13 import ru.deadsoftware.cavedroid.misc.states.GameState;
14 import ru.deadsoftware.cavedroid.misc.states.MenuState;
16 import static ru.deadsoftware.cavedroid.misc.Assets.*;
18 public class MenuProc extends Renderer {
20 private MenuMain mainMenu;
21 private MenuNewGame newGameMenu;
23 private Menu currentMenu;
25 public MenuProc(int width) {
26 super(width, width * Gdx.graphics.getHeight() / Gdx.graphics.getWidth());
27 mainMenu = new MenuMain(getWidth(), getHeight(), this::drawButton);
28 newGameMenu = new MenuNewGame(getWidth(), getHeight(), this::drawButton);
29 currentMenu = mainMenu;
30 }
32 private void drawButton(Button button) {
33 spriter.draw(textureRegions.get("button_" + button.getType()), button.getX(), button.getY());
34 setFontColor(255, 255, 255);
35 drawString(button.getLabel(),
36 (button.getX() + button.getWidth() / 2) - (float) getStringWidth(button.getLabel()) / 2,
37 (button.getY() + button.getHeight() / 2) - (float) getStringHeight(button.getLabel()) / 2);
38 }
40 private void update() {
41 // switch (CaveGame.MENU_STATE) {
42 // case MAIN:
43 // currentMenu = mainMenu;
44 // break;
45 // case NEW_GAME:
46 // currentMenu = newGameMenu;
47 // break;
48 // case LOADING:
49 // drawString("Generating World...");
50 // CaveGame.APP_STATE = AppState.GAME;
51 // CaveGame.GAME_STATE = GameState.PLAY;
52 // break;
53 // case SAVING:
54 // drawString("Saving Game...");
55 // CaveGame.APP_STATE = AppState.MENU;
56 // CaveGame.MENU_STATE = MenuState.MAIN;
57 // break;
58 // }
59 }
61 @Override
62 public boolean touchUp(int screenX, int screenY, int pointer, int mb) {
63 screenX *= getWidth() / Gdx.graphics.getWidth();
64 screenY *= getHeight() / Gdx.graphics.getHeight();
65 for (ObjectMap.Entry<String, Button> entry : currentMenu.getButtons()) {
66 Button button = entry.value;
67 if (button.getRect().contains(screenX, screenY)) {
68 if (button.getType() > 0) {
69 button.clicked();
70 }
71 break;
72 }
73 }
74 return false;
75 }
77 @Override
78 public void render(float delta) {
79 update();
80 spriter.begin();
81 currentMenu.draw(spriter);
82 drawString("CaveDroid " + CaveGame.VERSION, 0,
83 getHeight() - getStringHeight("CaveDroid " + CaveGame.VERSION) * 1.5f);
84 spriter.end();
85 }
86 }