Create Game Menu

This commit is contained in:
2022-08-17 14:23:49 +02:00
parent bef6296b22
commit 7acbc45663
6 changed files with 156 additions and 1 deletions

View File

@@ -0,0 +1,32 @@
package com.bartlomiejpluta.demo.gui;
import lombok.*;
import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.screen.Screen;
import com.bartlomiejpluta.base.api.gui.*;
import com.bartlomiejpluta.base.lib.gui.*;
public class GameMenuWindow extends DecoratedWindow implements Inflatable {
@Ref("resume_game")
@Getter
private Button resumeGameBtn;
@Ref("start_menu")
@Getter
private Button startMenuBtn;
@Ref("exit")
@Getter
private Button exitBtn;
public GameMenuWindow(Context context, GUI gui) {
super(context, gui);
}
@Override
public void onInflate() {
resumeGameBtn.focus();
}
}

View File

@@ -37,6 +37,10 @@ public abstract class BaseMapHandler implements MapHandler {
@Override
public void input(Input input) {
if(context.isPaused()) {
return;
}
if(input.isKeyPressed(Key.KEY_DOWN)) {
mainLayer.pushMovement(player.prepareMovement(Direction.DOWN));
} else if(input.isKeyPressed(Key.KEY_UP)) {

View File

@@ -2,8 +2,11 @@ package com.bartlomiejpluta.demo.menu;
import lombok.*;
import java.util.function.*;
import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.screen.Screen;
import com.bartlomiejpluta.base.api.input.*;
import com.bartlomiejpluta.base.api.gui.*;
import com.bartlomiejpluta.base.lib.gui.*;
@@ -17,6 +20,9 @@ public class MenuManager {
private final WindowManager manager;
private final StartMenuWindow startMenu;
private final GameMenuWindow gameMenu;
private final Consumer<KeyEvent> gameMenuHandler = this::handleGameMenuKeyEvent;
public MenuManager(@NonNull DemoRunner runner, @NonNull Context context) {
this.runner = runner;
@@ -29,6 +35,29 @@ public class MenuManager {
this.startMenu = (StartMenuWindow) gui.inflateWindow("ab9d40b4-eb28-45d7-bff2-9432a05eb41a");
this.startMenu.getNewGameBtn().setAction(runner::newGame);
this.startMenu.getExitBtn().setAction(runner::exit);
this.gameMenu = (GameMenuWindow) gui.inflateWindow("56ca6b39-f949-4212-9c23-312db25887e0");
this.gameMenu.getResumeGameBtn().setAction(this::resumeGame);
this.gameMenu.getStartMenuBtn().setAction(runner::returnToStartMenu);
this.gameMenu.getExitBtn().setAction(runner::exit);
}
private void handleGameMenuKeyEvent(KeyEvent event) {
if (event.getKey() == Key.KEY_ESCAPE && event.getAction() == KeyAction.PRESS) {
if(manager.size() > 0) {
manager.close();
} else {
manager.open(gameMenu);
}
if(manager.size() > 0) {
context.pause();
} else {
context.resume();
}
event.consume();
}
}
public void showStartMenu() {
@@ -36,7 +65,24 @@ public class MenuManager {
manager.open(startMenu);
}
public void enableGameMenu() {
manager.closeAll();
context.getInput().addKeyEventHandler(gameMenuHandler);
manager.setDisplayMode(DisplayMode.DISPLAY_STACK);
}
public void disableGameMenu() {
context.getInput().removeKeyEventHandler(gameMenuHandler);
manager.setDisplayMode(DisplayMode.DISPLAY_TOP);
}
public void closeAll() {
manager.closeAll();
}
private void resumeGame() {
manager.closeAll();
context.resume();
}
}

View File

@@ -67,12 +67,21 @@ public class DemoRunner implements GameRunner {
public void newGame() {
menu.closeAll();
menu.enableGameMenu();
resetPlayer();
context.openMap(ForrestTempleHandler.UID);
context.getMap().getObjectLayer(ForrestTempleHandler.MAIN_LAYER).addEntity(this.player);
context.resume();
}
public void returnToStartMenu() {
menu.closeAll();
context.pause();
context.closeMap();
menu.disableGameMenu();
menu.showStartMenu();
}
public void exit() {
context.close();
}