DEADSOFTWARE

da04d469107decbc21aa517a6a0259b75b05fe60
[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.*;
6 import ru.deadsoftware.cavecraft.game.GameSaver;
7 import ru.deadsoftware.cavecraft.game.Items;
8 import ru.deadsoftware.cavecraft.menu.objects.Button;
9 import ru.deadsoftware.cavecraft.misc.AppState;
10 import ru.deadsoftware.cavecraft.misc.Assets;
11 import ru.deadsoftware.cavecraft.misc.Renderer;
13 public class MenuRenderer extends Renderer {
15 public Array<Button> menuMainButtons;
17 public MenuRenderer(int width) {
18 super(width,width*((float) GameScreen.getHeight()/GameScreen.getWidth()));
19 menuMainButtons = new Array<Button>();
20 menuMainButtons.add(new Button("New game", getWidth()/2-100, getHeight()/4));
21 menuMainButtons.add(new Button("Load game", getWidth()/2-100, getHeight()/4+30,GameSaver.exists()?1:0));
22 menuMainButtons.add(new Button("Quit", getWidth()/2-100, getHeight()/4+60));
23 }
25 public void buttonClicked(Button button) {
26 if (button.getLabel().toLowerCase().equals("new game")) {
27 CaveGame.STATE = AppState.GOTO_NEW_GAME;
28 } else if (button.getLabel().toLowerCase().equals("load game")) {
29 CaveGame.STATE = AppState.GOTO_LOAD_GAME;
30 } else if (button.getLabel().toLowerCase().equals("quit")) {
31 Gdx.app.exit();
32 }
33 }
35 private void drawButton(Button button) {
36 spriteBatch.draw(Assets.menuButton[button.getType()], button.getX(), button.getY());
37 setFontColor(255,255,255);
38 drawString(button.getLabel(),
39 (button.getX()+button.getWidth()/2)-Assets.getStringWidth(button.getLabel())/2,
40 (button.getY()+button.getHeight()/2)-Assets.getStringHeight(button.getLabel())/2);
41 }
43 private void drawMenuMain() {
44 for (Button button : menuMainButtons) {
45 if (button.getType()>0) {
46 if (button.getRect().contains(Gdx.input.getX()*getWidth()/GameScreen.getWidth(),
47 Gdx.input.getY()*getHeight()/GameScreen.getHeight()))
48 button.setType(2);
49 else button.setType(1);
50 }
51 drawButton(button);
52 }
53 }
55 public void drawLabel(String str) {
56 drawString(str);
57 }
59 @Override
60 public void render() {
61 spriteBatch.begin();
62 for (int x=0; x<=getWidth()/16; x++)
63 for (int y=0; y<=getHeight()/16; y++) {
64 spriteBatch.draw(Assets.blockTextures[Items.BLOCKS.get("dirt").getTexture()], x * 16, y * 16);
65 spriteBatch.draw(Assets.shade,x*16,y*16);
66 }
67 spriteBatch.draw(Assets.gameLogo, getWidth()/2-Assets.gameLogo.getWidth()/2, 0);
69 switch (CaveGame.STATE) {
70 case MENU_MAIN: drawMenuMain(); break;
71 case GOTO_NEW_GAME: case GOTO_LOAD_GAME: drawLabel("Generating World..."); break;
72 case GOTO_MENU: drawLabel("Saving Game..."); break;
73 }
75 drawString("CaveCraft "+CaveGame.VERSION,0,
76 getHeight()-Assets.getStringHeight("CaveCraft "+CaveGame.VERSION)*1.5f);
77 spriteBatch.end();
79 switch (CaveGame.STATE) {
80 case GOTO_NEW_GAME: CaveGame.STATE = AppState.NEW_GAME; break;
81 case GOTO_LOAD_GAME: CaveGame.STATE = AppState.LOAD_GAME; break;
82 case GOTO_MENU: CaveGame.STATE = AppState.SAVE_GAME; break;
83 }
85 }
86 }