public MenuProc(int width) {
super(width, width * GameScreen.getHeight() / GameScreen.getWidth());
- mainMenu = new MenuMain(getWidth(), getHeight());
- newGameMenu = new MenuNewGame(getWidth(), getHeight());
+ mainMenu = new MenuMain(getWidth(), getHeight(), this::drawButton);
+ newGameMenu = new MenuNewGame(getWidth(), getHeight(), this::drawButton);
currentMenu = mainMenu;
}
(button.getY() + button.getHeight() / 2) - (float) getStringHeight(button.getLabel()) / 2);
}
+ private void update() {
+ switch (CaveGame.MENU_STATE) {
+ case MAIN:
+ currentMenu = mainMenu;
+ break;
+ case NEW_GAME:
+ currentMenu = newGameMenu;
+ break;
+ case LOADING:
+ drawString("Generating World...");
+ CaveGame.APP_STATE = AppState.GAME;
+ CaveGame.GAME_STATE = GameState.PLAY;
+ break;
+ case SAVING:
+ drawString("Saving Game...");
+ CaveGame.APP_STATE = AppState.MENU;
+ CaveGame.MENU_STATE = MenuState.MAIN;
+ break;
+ }
+ }
+
@Override
public boolean touchUp(int screenX, int screenY, int pointer, int mb) {
screenX *= getWidth() / GameScreen.getWidth();
@Override
public void render() {
+ update();
spriter.begin();
- switch (CaveGame.MENU_STATE) {
- case MAIN:
- currentMenu = mainMenu;
- break;
- case NEW_GAME:
- currentMenu = newGameMenu;
- break;
- case LOADING:
- drawString("Generating World...");
- CaveGame.APP_STATE = AppState.GAME;
- CaveGame.GAME_STATE = GameState.PLAY;
- break;
- case SAVING:
- drawString("Saving Game...");
- CaveGame.APP_STATE = AppState.MENU;
- CaveGame.MENU_STATE = MenuState.MAIN;
- break;
- }
- currentMenu.draw(spriter, this::drawButton, getWidth(), getHeight());
+ currentMenu.draw(spriter);
drawString("CaveDroid " + CaveGame.VERSION, 0,
getHeight() - getStringHeight("CaveDroid " + CaveGame.VERSION) * 1.5f);
spriter.end();
public abstract class Menu {
+ private ButtonDrawer buttonDrawer;
+
private float width;
private float height;
/**
* @param width Viewport width
* @param height Viewport height
+ * @param buttonDrawer {@link ButtonDrawer} that will draw the buttons of this menu
*/
- Menu(float width, float height) {
+ Menu(float width, float height, ButtonDrawer buttonDrawer) {
this.width = width;
this.height = height;
+ this.buttonDrawer = buttonDrawer;
initButtons();
}
*
* @param spriter {@link SpriteBatch} that will draw it. Should be already started.
*/
- public void draw(SpriteBatch spriter, ButtonDrawer buttonDrawer, float width, float height) {
+ public void draw(SpriteBatch spriter) {
TextureRegion background = Assets.textureRegions.get("background");
TextureRegion gamelogo = Assets.textureRegions.get("gamelogo");
import com.badlogic.gdx.Gdx;
import ru.deadsoftware.cavedroid.game.GameSaver;
import ru.deadsoftware.cavedroid.menu.objects.Button;
+import ru.deadsoftware.cavedroid.menu.objects.ButtonDrawer;
import ru.deadsoftware.cavedroid.menu.objects.ButtonEventListener;
import java.util.HashMap;
public class MenuMain extends Menu {
- /**
- * @param width Viewport width
- * @param height Viewport height
- */
- public MenuMain(float width, float height) {
- super(width, height);
+ public MenuMain(float width, float height, ButtonDrawer buttonDrawer) {
+ super(width, height, buttonDrawer);
}
@Override
package ru.deadsoftware.cavedroid.menu.submenus;
import com.badlogic.gdx.Gdx;
+import ru.deadsoftware.cavedroid.menu.objects.ButtonDrawer;
import ru.deadsoftware.cavedroid.menu.objects.ButtonEventListener;
import java.util.HashMap;
public class MenuNewGame extends Menu {
- /**
- * @param width Viewport width
- * @param height Viewport height
- */
- public MenuNewGame(float width, float height) {
- super(width, height);
+
+ public MenuNewGame(float width, float height, ButtonDrawer buttonDrawer) {
+ super(width, height, buttonDrawer);
}
@Override