diff --git a/core/src/ru/deadsoftware/cavedroid/menu/MenuRenderer.java b/core/src/ru/deadsoftware/cavedroid/menu/MenuRenderer.java
index 28da58e783551f08a5f9d00461685252b01a4fa2..fe1834d2ede6d4db50fdfb81a6ab8325c225011d 100644 (file)
package ru.deadsoftware.cavedroid.menu;
import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.utils.Array;
+import org.jetbrains.annotations.NotNull;
import ru.deadsoftware.cavedroid.CaveGame;
import ru.deadsoftware.cavedroid.GameScreen;
-import ru.deadsoftware.cavedroid.game.GameItems;
+import ru.deadsoftware.cavedroid.game.GameProc;
import ru.deadsoftware.cavedroid.game.GameSaver;
import ru.deadsoftware.cavedroid.menu.objects.Button;
-import ru.deadsoftware.cavedroid.misc.AppState;
-import ru.deadsoftware.cavedroid.misc.Assets;
import ru.deadsoftware.cavedroid.misc.Renderer;
+import ru.deadsoftware.cavedroid.misc.states.AppState;
+import ru.deadsoftware.cavedroid.misc.states.GameState;
+import ru.deadsoftware.cavedroid.misc.states.MenuState;
+
+import static ru.deadsoftware.cavedroid.GameScreen.GP;
+import static ru.deadsoftware.cavedroid.misc.Assets.*;
public class MenuRenderer extends Renderer {
- public Array<Button> menuMainBtns;
- public Array<Button> menuNGBtns;
+ public final Array<Button> menuMainBtns;
+ public final Array<Button> menuNGBtns;
public MenuRenderer(int width) {
- super(width, width * ((float) GameScreen.getHeight() / GameScreen.getWidth()));
+ super(width, width * GameScreen.getHeight() / GameScreen.getWidth());
//main menu
- menuMainBtns = new Array<Button>();
+ menuMainBtns = new Array<>();
menuMainBtns.add(new Button("New game", getWidth() / 2 - 100, getHeight() / 4));
menuMainBtns.add(new Button("Load game", getWidth() / 2 - 100, getHeight() / 4 + 30, GameSaver.exists() ? 1 : 0));
menuMainBtns.add(new Button("Quit", getWidth() / 2 - 100, getHeight() / 4 + 60));
//new game menu
- menuNGBtns = new Array<Button>();
+ menuNGBtns = new Array<>();
menuNGBtns.add(new Button("Survival", getWidth() / 2 - 100, getHeight() / 4, 0));
menuNGBtns.add(new Button("Creative", getWidth() / 2 - 100, getHeight() / 4 + 30));
menuNGBtns.add(new Button("Back", getWidth() / 2 - 100, getHeight() / 4 + 60));
}
- public void buttonClicked(Button button) {
- if (button.getLabel().toLowerCase().equals("new game")) {
- CaveGame.STATE = AppState.MENU_NEW_GAME;
- } else if (button.getLabel().toLowerCase().equals("load game")) {
- CaveGame.STATE = AppState.GOTO_LOAD_GAME;
- } else if (button.getLabel().toLowerCase().equals("quit")) {
- Gdx.app.exit();
- } else if (button.getLabel().toLowerCase().equals("survival")) {
- GameScreen.NEW_GAME_MODE = 0;
- CaveGame.STATE = AppState.GOTO_NEW_GAME;
- } else if (button.getLabel().toLowerCase().equals("creative")) {
- GameScreen.NEW_GAME_MODE = 1;
- CaveGame.STATE = AppState.GOTO_NEW_GAME;
- } else if (button.getLabel().toLowerCase().equals("back")) {
- CaveGame.STATE = AppState.MENU_MAIN;
+ private void newGame(int gameMode) {
+ GP = new GameProc(gameMode);
+ GP.player.respawn();
+ GameSaver.save(GP);
+ CaveGame.APP_STATE = AppState.LOAD;
+ }
+
+ public void buttonClicked(@NotNull Button button) {
+ switch (button.getLabel().toLowerCase()) {
+ case "new game":
+ CaveGame.MENU_STATE = MenuState.NEW_GAME;
+ break;
+ case "load game":
+ CaveGame.APP_STATE = AppState.LOAD;
+ GP = GameSaver.load();
+ break;
+ case "quit":
+ Gdx.app.exit();
+ break;
+ case "survival":
+ newGame(0);
+ break;
+ case "creative":
+ newGame(1);
+ break;
+ case "back":
+ CaveGame.MENU_STATE = MenuState.MAIN;
+ break;
}
}
private void drawButton(Button button) {
- spriter.draw(Assets.menuBtn[button.getType()], button.getX(), button.getY());
+ spriter.draw(textureRegions.get("button_" + button.getType()), button.getX(), button.getY());
setFontColor(255, 255, 255);
drawString(button.getLabel(),
- (button.getX() + button.getWidth() / 2) - (float) Assets.getStringWidth(button.getLabel()) / 2,
- (button.getY() + button.getHeight() / 2) - (float) Assets.getStringHeight(button.getLabel()) / 2);
+ (button.getX() + button.getWidth() / 2) - (float) getStringWidth(button.getLabel()) / 2,
+ (button.getY() + button.getHeight() / 2) - (float) getStringHeight(button.getLabel()) / 2);
}
private void drawButtons(Array<Button> buttons) {
@Override
public void render() {
+ TextureRegion background = textureRegions.get("background");
+ TextureRegion gamelogo = textureRegions.get("gamelogo");
+
spriter.begin();
for (int x = 0; x <= getWidth() / 16; x++) {
for (int y = 0; y <= getHeight() / 16; y++) {
- spriter.draw(GameItems.getBlock(3).getTex(), x * 16, y * 16);
- spriter.draw(Assets.shade, x * 16, y * 16);
+ spriter.draw(background, x * 16, y * 16);
}
}
- spriter.draw(Assets.gameLogo, getWidth() / 2 - (float) Assets.gameLogo.getWidth() / 2, 8);
+ spriter.draw(gamelogo, getWidth() / 2 - (float) gamelogo.getRegionWidth() / 2, 8);
- switch (CaveGame.STATE) {
- case MENU_MAIN:
+ switch (CaveGame.MENU_STATE) {
+ case MAIN:
drawButtons(menuMainBtns);
break;
- case MENU_NEW_GAME:
+ case NEW_GAME:
drawButtons(menuNGBtns);
break;
- case GOTO_NEW_GAME:
- case GOTO_LOAD_GAME:
+ case LOADING:
drawLabel("Generating World...");
+ CaveGame.APP_STATE = AppState.GAME;
+ CaveGame.GAME_STATE = GameState.PLAY;
break;
- case GOTO_MENU:
+ case SAVING:
drawLabel("Saving Game...");
+ CaveGame.APP_STATE = AppState.MENU;
+ CaveGame.MENU_STATE = MenuState.MAIN;
break;
}
drawString("CaveDroid " + CaveGame.VERSION, 0,
- getHeight() - Assets.getStringHeight("CaveDroid " + CaveGame.VERSION) * 1.5f);
+ getHeight() - getStringHeight("CaveDroid " + CaveGame.VERSION) * 1.5f);
spriter.end();
-
- switch (CaveGame.STATE) {
- case GOTO_NEW_GAME:
- CaveGame.STATE = AppState.NEW_GAME;
- break;
- case GOTO_LOAD_GAME:
- CaveGame.STATE = AppState.LOAD_GAME;
- break;
- case GOTO_MENU:
- CaveGame.STATE = AppState.SAVE_GAME;
- break;
- }
-
}
}