1 package ru
.deadsoftware
.cavedroid
.menu
;
3 import com
.badlogic
.gdx
.Gdx
;
4 import com
.badlogic
.gdx
.utils
.Array
;
5 import org
.jetbrains
.annotations
.NotNull
;
6 import ru
.deadsoftware
.cavedroid
.CaveGame
;
7 import ru
.deadsoftware
.cavedroid
.GameScreen
;
8 import ru
.deadsoftware
.cavedroid
.game
.GameItems
;
9 import ru
.deadsoftware
.cavedroid
.game
.GameProc
;
10 import ru
.deadsoftware
.cavedroid
.game
.GameSaver
;
11 import ru
.deadsoftware
.cavedroid
.menu
.objects
.Button
;
12 import ru
.deadsoftware
.cavedroid
.misc
.InputHandlerGame
;
13 import ru
.deadsoftware
.cavedroid
.misc
.states
.AppState
;
14 import ru
.deadsoftware
.cavedroid
.misc
.Assets
;
15 import ru
.deadsoftware
.cavedroid
.misc
.Renderer
;
16 import ru
.deadsoftware
.cavedroid
.misc
.states
.GameState
;
17 import ru
.deadsoftware
.cavedroid
.misc
.states
.MenuState
;
19 import static ru
.deadsoftware
.cavedroid
.GameScreen
.GP
;
20 import static ru
.deadsoftware
.cavedroid
.GameScreen
.RENDERER
;
22 public class MenuRenderer
extends Renderer
{
24 public Array
<Button
> menuMainBtns
;
25 public Array
<Button
> menuNGBtns
;
27 public MenuRenderer(int width
) {
28 super(width
, width
* ((float) GameScreen
.getHeight() / GameScreen
.getWidth()));
30 menuMainBtns
= new Array
<Button
>();
31 menuMainBtns
.add(new Button("New game", getWidth() / 2 - 100, getHeight() / 4));
32 menuMainBtns
.add(new Button("Load game", getWidth() / 2 - 100, getHeight() / 4 + 30, GameSaver
.exists() ?
1 : 0));
33 menuMainBtns
.add(new Button("Quit", getWidth() / 2 - 100, getHeight() / 4 + 60));
35 menuNGBtns
= new Array
<Button
>();
36 menuNGBtns
.add(new Button("Survival", getWidth() / 2 - 100, getHeight() / 4, 0));
37 menuNGBtns
.add(new Button("Creative", getWidth() / 2 - 100, getHeight() / 4 + 30));
38 menuNGBtns
.add(new Button("Back", getWidth() / 2 - 100, getHeight() / 4 + 60));
42 private void newGame(int gameMode
) {
43 GP
= new GameProc(gameMode
);
46 RENDERER
= GP
.renderer
;
47 Gdx
.input
.setInputProcessor(new InputHandlerGame());
48 CaveGame
.APP_STATE
= AppState
.GAME
;
49 CaveGame
.GAME_STATE
= GameState
.PLAY
;
52 public void buttonClicked(@NotNull Button button
) {
53 switch (button
.getLabel().toLowerCase()) {
55 CaveGame
.MENU_STATE
= MenuState
.NEW_GAME
;
58 CaveGame
.APP_STATE
= AppState
.LOAD
;
70 CaveGame
.MENU_STATE
= MenuState
.MAIN
;
75 private void drawButton(Button button
) {
76 spriter
.draw(Assets
.menuBtn
[button
.getType()], button
.getX(), button
.getY());
77 setFontColor(255, 255, 255);
78 drawString(button
.getLabel(),
79 (button
.getX() + button
.getWidth() / 2) - (float) Assets
.getStringWidth(button
.getLabel()) / 2,
80 (button
.getY() + button
.getHeight() / 2) - (float) Assets
.getStringHeight(button
.getLabel()) / 2);
83 private void drawButtons(Array
<Button
> buttons
) {
84 for (Button button
: buttons
) {
85 if (button
.getType() > 0) {
86 if (button
.getRect().contains(Gdx
.input
.getX() * getWidth() / GameScreen
.getWidth(),
87 Gdx
.input
.getY() * getHeight() / GameScreen
.getHeight()) &&
88 (!CaveGame
.TOUCH
|| Gdx
.input
.isTouched()))
90 else button
.setType(1);
96 private void drawLabel(String str
) {
101 public void render() {
103 for (int x
= 0; x
<= getWidth() / 16; x
++) {
104 for (int y
= 0; y
<= getHeight() / 16; y
++) {
105 spriter
.draw(GameItems
.getBlock(3).getTex(), x
* 16, y
* 16);
106 spriter
.draw(Assets
.shade
, x
* 16, y
* 16);
109 spriter
.draw(Assets
.gameLogo
, getWidth() / 2 - (float) Assets
.gameLogo
.getWidth() / 2, 8);
111 switch (CaveGame
.MENU_STATE
) {
113 drawButtons(menuMainBtns
);
116 drawButtons(menuNGBtns
);
119 drawLabel("Generating World...");
120 CaveGame
.APP_STATE
= AppState
.GAME
;
121 CaveGame
.GAME_STATE
= GameState
.PLAY
;
124 drawLabel("Saving Game...");
125 CaveGame
.APP_STATE
= AppState
.MENU
;
126 CaveGame
.MENU_STATE
= MenuState
.MAIN
;
130 drawString("CaveDroid " + CaveGame
.VERSION
, 0,
131 getHeight() - Assets
.getStringHeight("CaveDroid " + CaveGame
.VERSION
) * 1.5f);