DEADSOFTWARE

8aaab64c9d97c8a32c2fcf487890495d03b3b0ff
[cavedroid.git] / core / src / ru / deadsoftware / cavecraft / menu / MenuRenderer.java
1 package ru.deadsoftware.cavecraft.menu;
3 import com.badlogic.gdx.Gdx;
4 import com.badlogic.gdx.utils.Array;
5 import ru.deadsoftware.cavecraft.CaveGame;
6 import ru.deadsoftware.cavecraft.GameScreen;
7 import ru.deadsoftware.cavecraft.game.GameItems;
8 import ru.deadsoftware.cavecraft.game.GameSaver;
9 import ru.deadsoftware.cavecraft.menu.objects.Button;
10 import ru.deadsoftware.cavecraft.misc.AppState;
11 import ru.deadsoftware.cavecraft.misc.Assets;
12 import ru.deadsoftware.cavecraft.misc.Renderer;
14 public class MenuRenderer extends Renderer {
16 public Array<Button> menuMainBtns;
17 public Array<Button> menuNGBtns;
19 public MenuRenderer(int width) {
20 super(width, width * ((float) GameScreen.getHeight() / GameScreen.getWidth()));
21 //main menu
22 menuMainBtns = new Array<Button>();
23 menuMainBtns.add(new Button("New game", getWidth() / 2 - 100, getHeight() / 4));
24 menuMainBtns.add(new Button("Load game", getWidth() / 2 - 100, getHeight() / 4 + 30, GameSaver.exists() ? 1 : 0));
25 menuMainBtns.add(new Button("Quit", getWidth() / 2 - 100, getHeight() / 4 + 60));
26 //new game menu
27 menuNGBtns = new Array<Button>();
28 menuNGBtns.add(new Button("Survival", getWidth() / 2 - 100, getHeight() / 4, 1));
29 menuNGBtns.add(new Button("Creative", getWidth() / 2 - 100, getHeight() / 4 + 30));
30 menuNGBtns.add(new Button("Back", getWidth() / 2 - 100, getHeight() / 4 + 60));
32 }
34 public void buttonClicked(Button button) {
35 if (button.getLabel().toLowerCase().equals("new game")) {
36 CaveGame.STATE = AppState.MENU_NEW_GAME;
37 } else if (button.getLabel().toLowerCase().equals("load game")) {
38 CaveGame.STATE = AppState.GOTO_LOAD_GAME;
39 } else if (button.getLabel().toLowerCase().equals("quit")) {
40 Gdx.app.exit();
41 } else if (button.getLabel().toLowerCase().equals("survival")) {
42 GameScreen.NEW_GAME_MODE = 0;
43 CaveGame.STATE = AppState.GOTO_NEW_GAME;
44 } else if (button.getLabel().toLowerCase().equals("creative")) {
45 GameScreen.NEW_GAME_MODE = 1;
46 CaveGame.STATE = AppState.GOTO_NEW_GAME;
47 } else if (button.getLabel().toLowerCase().equals("back")) {
48 CaveGame.STATE = AppState.MENU_MAIN;
49 }
50 }
52 private void drawButton(Button button) {
53 spriter.draw(Assets.menuBtn[button.getType()], button.getX(), button.getY());
54 setFontColor(255, 255, 255);
55 drawString(button.getLabel(),
56 (button.getX() + button.getWidth() / 2) - Assets.getStringWidth(button.getLabel()) / 2,
57 (button.getY() + button.getHeight() / 2) - Assets.getStringHeight(button.getLabel()) / 2);
58 }
60 private void drawMenuMain() {
61 for (Button button : menuMainBtns) {
62 if (button.getType() > 0) {
63 if (button.getRect().contains(Gdx.input.getX() * getWidth() / GameScreen.getWidth(),
64 Gdx.input.getY() * getHeight() / GameScreen.getHeight()))
65 button.setType(2);
66 else button.setType(1);
67 }
68 drawButton(button);
69 }
70 }
72 private void drawMenuNewGame() {
73 for (Button button : menuNGBtns) {
74 if (button.getType() > 0) {
75 if (button.getRect().contains(Gdx.input.getX() * getWidth() / GameScreen.getWidth(),
76 Gdx.input.getY() * getHeight() / GameScreen.getHeight()))
77 button.setType(2);
78 else button.setType(1);
79 }
80 drawButton(button);
81 }
82 }
84 public void drawLabel(String str) {
85 drawString(str);
86 }
88 @Override
89 public void render() {
90 spriter.begin();
91 for (int x = 0; x <= getWidth() / 16; x++)
92 for (int y = 0; y <= getHeight() / 16; y++) {
93 spriter.draw(Assets.blockTex[GameItems.getBlock(3).getTex()], x * 16, y * 16);
94 spriter.draw(Assets.shade, x * 16, y * 16);
95 }
96 spriter.draw(Assets.gameLogo, getWidth() / 2 - Assets.gameLogo.getWidth() / 2, 0);
98 switch (CaveGame.STATE) {
99 case MENU_MAIN:
100 drawMenuMain();
101 break;
102 case MENU_NEW_GAME:
103 drawMenuNewGame();
104 break;
105 case GOTO_NEW_GAME:
106 case GOTO_LOAD_GAME:
107 drawLabel("Generating World...");
108 break;
109 case GOTO_MENU:
110 drawLabel("Saving Game...");
111 break;
114 drawString("CaveCraft " + CaveGame.VERSION, 0,
115 getHeight() - Assets.getStringHeight("CaveCraft " + CaveGame.VERSION) * 1.5f);
116 spriter.end();
118 switch (CaveGame.STATE) {
119 case GOTO_NEW_GAME:
120 CaveGame.STATE = AppState.NEW_GAME;
121 break;
122 case GOTO_LOAD_GAME:
123 CaveGame.STATE = AppState.LOAD_GAME;
124 break;
125 case GOTO_MENU:
126 CaveGame.STATE = AppState.SAVE_GAME;
127 break;