fe1834d2ede6d4db50fdfb81a6ab8325c225011d
1 package ru
.deadsoftware
.cavedroid
.menu
;
3 import com
.badlogic
.gdx
.Gdx
;
4 import com
.badlogic
.gdx
.graphics
.g2d
.TextureRegion
;
5 import com
.badlogic
.gdx
.utils
.Array
;
6 import org
.jetbrains
.annotations
.NotNull
;
7 import ru
.deadsoftware
.cavedroid
.CaveGame
;
8 import ru
.deadsoftware
.cavedroid
.GameScreen
;
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
.Renderer
;
13 import ru
.deadsoftware
.cavedroid
.misc
.states
.AppState
;
14 import ru
.deadsoftware
.cavedroid
.misc
.states
.GameState
;
15 import ru
.deadsoftware
.cavedroid
.misc
.states
.MenuState
;
17 import static ru
.deadsoftware
.cavedroid
.GameScreen
.GP
;
18 import static ru
.deadsoftware
.cavedroid
.misc
.Assets
.*;
20 public class MenuRenderer
extends Renderer
{
22 public final Array
<Button
> menuMainBtns
;
23 public final Array
<Button
> menuNGBtns
;
25 public MenuRenderer(int width
) {
26 super(width
, width
* GameScreen
.getHeight() / GameScreen
.getWidth());
28 menuMainBtns
= new Array
<>();
29 menuMainBtns
.add(new Button("New game", getWidth() / 2 - 100, getHeight() / 4));
30 menuMainBtns
.add(new Button("Load game", getWidth() / 2 - 100, getHeight() / 4 + 30, GameSaver
.exists() ?
1 : 0));
31 menuMainBtns
.add(new Button("Quit", getWidth() / 2 - 100, getHeight() / 4 + 60));
33 menuNGBtns
= new Array
<>();
34 menuNGBtns
.add(new Button("Survival", getWidth() / 2 - 100, getHeight() / 4, 0));
35 menuNGBtns
.add(new Button("Creative", getWidth() / 2 - 100, getHeight() / 4 + 30));
36 menuNGBtns
.add(new Button("Back", getWidth() / 2 - 100, getHeight() / 4 + 60));
40 private void newGame(int gameMode
) {
41 GP
= new GameProc(gameMode
);
44 CaveGame
.APP_STATE
= AppState
.LOAD
;
47 public void buttonClicked(@NotNull Button button
) {
48 switch (button
.getLabel().toLowerCase()) {
50 CaveGame
.MENU_STATE
= MenuState
.NEW_GAME
;
53 CaveGame
.APP_STATE
= AppState
.LOAD
;
54 GP
= GameSaver
.load();
66 CaveGame
.MENU_STATE
= MenuState
.MAIN
;
71 private void drawButton(Button button
) {
72 spriter
.draw(textureRegions
.get("button_" + button
.getType()), button
.getX(), button
.getY());
73 setFontColor(255, 255, 255);
74 drawString(button
.getLabel(),
75 (button
.getX() + button
.getWidth() / 2) - (float) getStringWidth(button
.getLabel()) / 2,
76 (button
.getY() + button
.getHeight() / 2) - (float) getStringHeight(button
.getLabel()) / 2);
79 private void drawButtons(Array
<Button
> buttons
) {
80 for (Button button
: buttons
) {
81 if (button
.getType() > 0) {
82 if (button
.getRect().contains(Gdx
.input
.getX() * getWidth() / GameScreen
.getWidth(),
83 Gdx
.input
.getY() * getHeight() / GameScreen
.getHeight()) &&
84 (!CaveGame
.TOUCH
|| Gdx
.input
.isTouched()))
86 else button
.setType(1);
92 private void drawLabel(String str
) {
97 public void render() {
98 TextureRegion background
= textureRegions
.get("background");
99 TextureRegion gamelogo
= textureRegions
.get("gamelogo");
102 for (int x
= 0; x
<= getWidth() / 16; x
++) {
103 for (int y
= 0; y
<= getHeight() / 16; y
++) {
104 spriter
.draw(background
, x
* 16, y
* 16);
107 spriter
.draw(gamelogo
, getWidth() / 2 - (float) gamelogo
.getRegionWidth() / 2, 8);
109 switch (CaveGame
.MENU_STATE
) {
111 drawButtons(menuMainBtns
);
114 drawButtons(menuNGBtns
);
117 drawLabel("Generating World...");
118 CaveGame
.APP_STATE
= AppState
.GAME
;
119 CaveGame
.GAME_STATE
= GameState
.PLAY
;
122 drawLabel("Saving Game...");
123 CaveGame
.APP_STATE
= AppState
.MENU
;
124 CaveGame
.MENU_STATE
= MenuState
.MAIN
;
128 drawString("CaveDroid " + CaveGame
.VERSION
, 0,
129 getHeight() - getStringHeight("CaveDroid " + CaveGame
.VERSION
) * 1.5f);