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));
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")) {
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);
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()))
49 else button
.setType(1);
55 public void drawLabel(String str
) {
60 public void render() {
62 for (int x
=0; x
<=getWidth()/16; x
++)
63 for (int y
=0; y
<=getHeight()/16; y
++) {
64 spriteBatch
.draw(Items
.BLOCKS
.get("dirt").getTexture(), x
* 16, y
* 16);
65 spriteBatch
.draw(Assets
.shade
,x
*16,y
*16);
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;
75 drawString("CaveCraft "+CaveGame
.VERSION
,0,
76 getHeight()-Assets
.getStringHeight("CaveCraft "+CaveGame
.VERSION
)*1.5f);
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;