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(), this::drawButton
);
27 newGameMenu
= new MenuNewGame(getWidth(), getHeight(), this::drawButton
);
28 currentMenu
= mainMenu
;
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);
39 private void update() {
40 switch (CaveGame
.MENU_STATE
) {
42 currentMenu
= mainMenu
;
45 currentMenu
= newGameMenu
;
48 drawString("Generating World...");
49 CaveGame
.APP_STATE
= AppState
.GAME
;
50 CaveGame
.GAME_STATE
= GameState
.PLAY
;
53 drawString("Saving Game...");
54 CaveGame
.APP_STATE
= AppState
.MENU
;
55 CaveGame
.MENU_STATE
= MenuState
.MAIN
;
61 public boolean touchUp(int screenX
, int screenY
, int pointer
, int mb
) {
62 screenX
*= getWidth() / GameScreen
.getWidth();
63 screenY
*= getHeight() / GameScreen
.getHeight();
64 for (ObjectMap
.Entry
<String
, Button
> entry
: currentMenu
.getButtons()) {
65 Button button
= entry
.value
;
66 if (button
.getRect().contains(screenX
, screenY
)) {
67 if (button
.getType() > 0) {
77 public void render() {
80 currentMenu
.draw(spriter
);
81 drawString("CaveDroid " + CaveGame
.VERSION
, 0,
82 getHeight() - getStringHeight("CaveDroid " + CaveGame
.VERSION
) * 1.5f);