DEADSOFTWARE

0ab0bac0af1bfb6f7f778c3764816c026b9f1586
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / menu / MenuProc.java
1 package ru.deadsoftware.cavedroid.menu;
3 import com.badlogic.gdx.utils.ObjectMap;
4 import ru.deadsoftware.cavedroid.CaveGame;
5 import ru.deadsoftware.cavedroid.GameScreen;
6 import ru.deadsoftware.cavedroid.menu.objects.Button;
7 import ru.deadsoftware.cavedroid.menu.submenus.Menu;
8 import ru.deadsoftware.cavedroid.menu.submenus.MenuMain;
9 import ru.deadsoftware.cavedroid.menu.submenus.MenuNewGame;
10 import ru.deadsoftware.cavedroid.misc.Renderer;
11 import ru.deadsoftware.cavedroid.misc.states.AppState;
12 import ru.deadsoftware.cavedroid.misc.states.GameState;
13 import ru.deadsoftware.cavedroid.misc.states.MenuState;
15 import static ru.deadsoftware.cavedroid.misc.Assets.*;
17 public class MenuProc extends Renderer {
19 private MenuMain mainMenu;
20 private MenuNewGame newGameMenu;
22 private Menu currentMenu;
24 public MenuProc(int width) {
25 super(width, width * GameScreen.getHeight() / GameScreen.getWidth());
26 mainMenu = new MenuMain(getWidth(), getHeight());
27 newGameMenu = new MenuNewGame(getWidth(), getHeight());
28 currentMenu = mainMenu;
29 }
31 private void drawButton(Button button) {
32 spriter.draw(textureRegions.get("button_" + button.getType()), button.getX(), button.getY());
33 setFontColor(255, 255, 255);
34 drawString(button.getLabel(),
35 (button.getX() + button.getWidth() / 2) - (float) getStringWidth(button.getLabel()) / 2,
36 (button.getY() + button.getHeight() / 2) - (float) getStringHeight(button.getLabel()) / 2);
37 }
39 @Override
40 public boolean touchUp(int screenX, int screenY, int pointer, int mb) {
41 screenX *= getWidth() / GameScreen.getWidth();
42 screenY *= getHeight() / GameScreen.getHeight();
43 for (ObjectMap.Entry<String, Button> entry : currentMenu.getButtons()) {
44 Button button = entry.value;
45 if (button.getRect().contains(screenX, screenY)) {
46 if (button.getType() > 0) {
47 button.clicked();
48 }
49 break;
50 }
51 }
52 return false;
53 }
55 @Override
56 public void render() {
57 spriter.begin();
58 switch (CaveGame.MENU_STATE) {
59 case MAIN:
60 currentMenu = mainMenu;
61 break;
62 case NEW_GAME:
63 currentMenu = newGameMenu;
64 break;
65 case LOADING:
66 drawString("Generating World...");
67 CaveGame.APP_STATE = AppState.GAME;
68 CaveGame.GAME_STATE = GameState.PLAY;
69 break;
70 case SAVING:
71 drawString("Saving Game...");
72 CaveGame.APP_STATE = AppState.MENU;
73 CaveGame.MENU_STATE = MenuState.MAIN;
74 break;
75 }
76 currentMenu.draw(spriter, this::drawButton, getWidth(), getHeight());
77 drawString("CaveDroid " + CaveGame.VERSION, 0,
78 getHeight() - getStringHeight("CaveDroid " + CaveGame.VERSION) * 1.5f);
79 spriter.end();
80 }
81 }