DEADSOFTWARE

Refactor
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / menu / MenuRenderer.java
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 Array<Button> menuMainBtns;
23 public Array<Button> menuNGBtns;
25 public MenuRenderer(int width) {
26 super(width, width * GameScreen.getHeight() / GameScreen.getWidth());
27 //main menu
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));
32 //new game menu
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));
38 }
40 private void newGame(int gameMode) {
41 GP = new GameProc(gameMode);
42 GP.player.respawn();
43 GameSaver.save(GP);
44 CaveGame.APP_STATE = AppState.LOAD;
45 }
47 public void buttonClicked(@NotNull Button button) {
48 switch (button.getLabel().toLowerCase()) {
49 case "new game":
50 CaveGame.MENU_STATE = MenuState.NEW_GAME;
51 break;
52 case "load game":
53 CaveGame.APP_STATE = AppState.LOAD;
54 GP = GameSaver.load();
55 break;
56 case "quit":
57 Gdx.app.exit();
58 break;
59 case "survival":
60 newGame(0);
61 break;
62 case "creative":
63 newGame(1);
64 break;
65 case "back":
66 CaveGame.MENU_STATE = MenuState.MAIN;
67 break;
68 }
69 }
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);
77 }
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()))
85 button.setType(2);
86 else button.setType(1);
87 }
88 drawButton(button);
89 }
90 }
92 private void drawLabel(String str) {
93 drawString(str);
94 }
96 @Override
97 public void render() {
98 TextureRegion shade = textureRegions.get("shade");
99 TextureRegion gamelogo = textureRegions.get("gamelogo");
101 spriter.begin();
102 for (int x = 0; x <= getWidth() / 16; x++) {
103 for (int y = 0; y <= getHeight() / 16; y++) {
104 // spriter.draw(GameItems.getBlock(3).getTex(), x * 16, y * 16);
105 spriter.draw(shade, x * 16, y * 16);
108 spriter.draw(gamelogo, getWidth() / 2 - (float) gamelogo.getRegionWidth() / 2, 8);
110 switch (CaveGame.MENU_STATE) {
111 case MAIN:
112 drawButtons(menuMainBtns);
113 break;
114 case NEW_GAME:
115 drawButtons(menuNGBtns);
116 break;
117 case LOADING:
118 drawLabel("Generating World...");
119 CaveGame.APP_STATE = AppState.GAME;
120 CaveGame.GAME_STATE = GameState.PLAY;
121 break;
122 case SAVING:
123 drawLabel("Saving Game...");
124 CaveGame.APP_STATE = AppState.MENU;
125 CaveGame.MENU_STATE = MenuState.MAIN;
126 break;
129 drawString("CaveDroid " + CaveGame.VERSION, 0,
130 getHeight() - getStringHeight("CaveDroid " + CaveGame.VERSION) * 1.5f);
131 spriter.end();