DEADSOFTWARE

Complete game save
[cavedroid.git] / core / src / ru / deadsoftware / cavecraft / menu / MenuRenderer.java
index aa2897db09265c1471b64578ba6cf7c4063ee0b7..4f3e3b16e3fd605e61fe0f1e9f274e3b008b61c2 100644 (file)
@@ -3,23 +3,32 @@ package ru.deadsoftware.cavecraft.menu;
 import com.badlogic.gdx.Gdx;
 import com.badlogic.gdx.utils.Array;
 import ru.deadsoftware.cavecraft.*;
-import ru.deadsoftware.cavecraft.AppState;
+import ru.deadsoftware.cavecraft.game.GameSaver;
 import ru.deadsoftware.cavecraft.menu.objects.Button;
 
 public class MenuRenderer extends Renderer {
 
-    public Array<Button> buttons;
+    public Array<Button> menuMainButtons;
 
     public MenuRenderer(int width) {
         super(width,width*((float) GameScreen.getHeight()/GameScreen.getWidth()));
-        buttons = new Array<Button>();
-        buttons.add(new Button("Play", getWidth()/2-100, getHeight()/4));
-        buttons.add(new Button("Quit", getWidth()/2-100, getHeight()/4+30));
+        menuMainButtons = new Array<Button>();
+        menuMainButtons.add(new Button("New game", getWidth()/2-100, getHeight()/4));
+        menuMainButtons.add(new Button("Load game", getWidth()/2-100, getHeight()/4+30,GameSaver.exists()?1:0));
+        menuMainButtons.add(new Button("Quit", getWidth()/2-100, getHeight()/4+60));
     }
 
     public void buttonClicked(Button button) {
-        if (button.getLabel().toLowerCase().equals("play")) {
-            CaveGame.STATE = AppState.GOTO_GAME;
+        if (button.getLabel().toLowerCase().equals("new game")) {
+            spriteBatch.begin();
+            drawGenWorld();
+            spriteBatch.end();
+            CaveGame.STATE = AppState.GOTO_NEW_GAME;
+        } else if (button.getLabel().toLowerCase().equals("load game")) {
+            spriteBatch.begin();
+            drawGenWorld();
+            spriteBatch.end();
+            CaveGame.STATE = AppState.GOTO_LOAD_GAME;
         } else if (button.getLabel().toLowerCase().equals("quit")) {
             Gdx.app.exit();
         }
@@ -32,6 +41,29 @@ public class MenuRenderer extends Renderer {
                 (button.getX()+button.getWidth()/2)-Assets.getStringWidth(button.getLabel())/2,
                 (button.getY()+button.getHeight()/2)-Assets.getStringHeight(button.getLabel())/2);
     }
+    
+    private void drawMenuMain() {
+        for (Button button : menuMainButtons) {
+            if (button.getType()>0) {
+                if (button.getRect().contains(Gdx.input.getX()*getWidth()/GameScreen.getWidth(),
+                        Gdx.input.getY()*getHeight()/GameScreen.getHeight()))
+                    button.setType(2);
+                else button.setType(1);
+            }
+            drawButton(button);
+        }
+    }
+
+    private void drawGenWorld() {
+        for (int x=0; x<=getWidth()/16; x++)
+            for (int y=0; y<=getHeight()/16; y++) {
+                spriteBatch.draw(Items.BLOCKS.get("dirt").getTexture(), x * 16, y * 16);
+                spriteBatch.draw(Assets.shade,x*16,y*16);
+            }
+        spriteBatch.draw(Assets.gameLogo, getWidth()/2-Assets.gameLogo.getWidth()/2, 0);
+        drawString("Generating World...");
+        spriteBatch.flush();
+    }
 
     @Override
     public void render() {
@@ -42,15 +74,11 @@ public class MenuRenderer extends Renderer {
                 spriteBatch.draw(Assets.shade,x*16,y*16);
             }
         spriteBatch.draw(Assets.gameLogo, getWidth()/2-Assets.gameLogo.getWidth()/2, 0);
-        for (Button button : buttons) {
-            if (button.getRect().contains(Gdx.input.getX()*getWidth()/GameScreen.getWidth(),
-                    Gdx.input.getY()*getHeight()/GameScreen.getHeight()) && button.getType()>0) {
-                button.setType(2);
-            } else {
-                button.setType(1);
-            }
-            drawButton(button);
+
+        switch (CaveGame.STATE) {
+            case MENU_MAIN: drawMenuMain(); break;
         }
+
         drawString("CaveCraft "+CaveGame.VERSION,0,
                 getHeight()-Assets.getStringHeight("CaveCraft "+CaveGame.VERSION)*1.5f);
         spriteBatch.end();