Refactor MenuManager to GuiManager

This commit is contained in:
2022-08-31 11:57:13 +02:00
parent fd5610fca0
commit 3cdec6b303
6 changed files with 38 additions and 42 deletions

View File

@@ -1,30 +1,25 @@
package com.bartlomiejpluta.demo.entity;
import com.bartlomiejpluta.base.api.context.ContextHolder;
import com.bartlomiejpluta.demo.runner.DemoRunner;
import com.bartlomiejpluta.demo.world.item.Item;
import lombok.Getter;
import lombok.NonNull;
public class Chest extends MapObject {
private final DemoRunner runner;
@Getter
private final Item[] content = new Item[Enemy.MAX_LOOT];
public Chest(@NonNull String id) {
super(id);
runner = ((DemoRunner) ContextHolder.INSTANCE.getContext().getGameRunner());
}
@Override
protected void interact() {
runner.openChestWindow(this);
guiManager.openChestWindow(this);
}
@Override
protected boolean shouldGoFurther(MapObject object) {
return runner.openedWindows() == 0;
return guiManager.openedWindows() == 0;
}
public Chest addItem(Item item) {

View File

@@ -4,16 +4,19 @@ import com.bartlomiejpluta.base.api.character.Character;
import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.context.ContextHolder;
import com.bartlomiejpluta.base.lib.character.CharacterDelegate;
import com.bartlomiejpluta.demo.menu.GuiManager;
import com.bartlomiejpluta.demo.runner.DemoRunner;
public abstract class NamedCharacter extends CharacterDelegate {
protected final Context context;
protected final DemoRunner runner;
protected final GuiManager guiManager;
public NamedCharacter(Character character) {
super(character);
this.context = ContextHolder.INSTANCE.getContext();
this.runner = (DemoRunner) context.getGameRunner();
this.guiManager = context.getGlobal("gui", GuiManager.class);
}
public abstract String getName();

View File

@@ -2,6 +2,7 @@ package com.bartlomiejpluta.demo.entity;
import com.bartlomiejpluta.base.api.character.Character;
import com.bartlomiejpluta.demo.world.item.Item;
import com.bartlomiejpluta.demo.world.item.ItemStack;
import com.bartlomiejpluta.demo.world.weapon.Ammunition;
import com.bartlomiejpluta.demo.world.weapon.Weapon;
import lombok.NonNull;
@@ -46,7 +47,7 @@ public class Player extends Creature {
// Search the enemy corpse
if (entity instanceof Enemy enemy && !enemy.isAlive()) {
runner.openLootWindow(enemy);
guiManager.openLootWindow(enemy);
interactionCooldown = INTERACTION_COOLDOWN;
return;
}

View File

@@ -2,6 +2,8 @@ package com.bartlomiejpluta.demo.map;
import com.bartlomiejpluta.base.api.camera.Camera;
import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.gui.Window;
import com.bartlomiejpluta.base.api.gui.WindowPosition;
import com.bartlomiejpluta.base.api.icon.Icon;
import com.bartlomiejpluta.base.api.input.Input;
import com.bartlomiejpluta.base.api.input.Key;
@@ -19,14 +21,18 @@ import com.bartlomiejpluta.demo.entity.Door;
import com.bartlomiejpluta.demo.entity.Enemy;
import com.bartlomiejpluta.demo.entity.Player;
import com.bartlomiejpluta.demo.event.EnemyDiedEvent;
import com.bartlomiejpluta.demo.menu.GuiManager;
import com.bartlomiejpluta.demo.runner.DemoRunner;
import com.bartlomiejpluta.demo.world.potion.Medicament;
import lombok.NonNull;
import java.util.concurrent.CompletableFuture;
public abstract class BaseMapHandler implements MapHandler {
protected Screen screen;
protected Context context;
protected DemoRunner runner;
protected GuiManager guiManager;
protected Camera camera;
protected GameMap map;
protected Player player;
@@ -37,6 +43,7 @@ public abstract class BaseMapHandler implements MapHandler {
this.context = context;
this.screen = context.getScreen();
this.runner = (DemoRunner) context.getGameRunner();
this.guiManager = context.getGlobal("gui", GuiManager.class);
this.camera = context.getCamera();
this.map = map;
this.player = context.getGlobal("player", Player.class);
@@ -51,7 +58,7 @@ public abstract class BaseMapHandler implements MapHandler {
return;
}
if (runner.openedWindows() > 0) {
if (guiManager.openedWindows() > 0) {
return;
}

View File

@@ -2,25 +2,20 @@ package com.bartlomiejpluta.demo.menu;
import A.widgets;
import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.gui.DisplayMode;
import com.bartlomiejpluta.base.api.gui.GUI;
import com.bartlomiejpluta.base.api.gui.UpdateMode;
import com.bartlomiejpluta.base.api.gui.WindowManager;
import com.bartlomiejpluta.base.api.gui.*;
import com.bartlomiejpluta.base.api.input.Key;
import com.bartlomiejpluta.base.api.input.KeyAction;
import com.bartlomiejpluta.base.api.input.KeyEvent;
import com.bartlomiejpluta.demo.entity.Chest;
import com.bartlomiejpluta.demo.entity.Enemy;
import com.bartlomiejpluta.demo.gui.EquipmentWindow;
import com.bartlomiejpluta.demo.gui.GameMenuWindow;
import com.bartlomiejpluta.demo.gui.LootWindow;
import com.bartlomiejpluta.demo.gui.StartMenuWindow;
import com.bartlomiejpluta.demo.gui.*;
import com.bartlomiejpluta.demo.runner.DemoRunner;
import lombok.NonNull;
import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;
public class MenuManager {
public class GuiManager {
private final DemoRunner runner;
private final Context context;
private final GUI gui;
@@ -30,9 +25,10 @@ public class MenuManager {
private final GameMenuWindow gameMenu;
private final EquipmentWindow equipment;
private final LootWindow loot;
private final DialogWindow dialog;
private final Consumer<KeyEvent> gameMenuHandler = this::handleGameMenuKeyEvent;
public MenuManager(@NonNull DemoRunner runner, @NonNull Context context) {
public GuiManager(@NonNull DemoRunner runner, @NonNull Context context) {
this.runner = runner;
this.context = context;
this.gui = context.newGUI();
@@ -49,6 +45,8 @@ public class MenuManager {
this.gameMenu.getStartMenuBtn().setAction(runner::returnToStartMenu);
this.gameMenu.getExitBtn().setAction(runner::exit);
this.dialog = gui.inflateWindow(A.widgets.dialog.uid, DialogWindow.class);
this.equipment = gui.inflateWindow(A.widgets.equipment.uid, EquipmentWindow.class);
this.loot = gui.inflateWindow(widgets.loot_menu.uid, LootWindow.class);
}
@@ -102,6 +100,11 @@ public class MenuManager {
manager.setDisplayMode(DisplayMode.DISPLAY_TOP);
}
public CompletableFuture<Window> showDialog(@NonNull String message, @NonNull WindowPosition position) {
manager.closeAll();
return manager.open(dialog, message, position);
}
public void openLootWindow(@NonNull Enemy enemy) {
manager.closeAll();

View File

@@ -5,10 +5,8 @@ import com.bartlomiejpluta.base.api.gui.GUI;
import com.bartlomiejpluta.base.api.runner.GameRunner;
import com.bartlomiejpluta.base.api.screen.Screen;
import com.bartlomiejpluta.base.util.profiler.FPSProfiler;
import com.bartlomiejpluta.demo.entity.Chest;
import com.bartlomiejpluta.demo.entity.Enemy;
import com.bartlomiejpluta.demo.entity.Player;
import com.bartlomiejpluta.demo.menu.MenuManager;
import com.bartlomiejpluta.demo.menu.GuiManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -18,7 +16,7 @@ public class DemoRunner implements GameRunner {
private final FPSProfiler fpsProfiler = FPSProfiler.create(20);
private Screen screen;
private Context context;
private MenuManager menu;
private GuiManager guiManager;
private GUI hud;
private Player player;
@@ -35,7 +33,7 @@ public class DemoRunner implements GameRunner {
initHUD();
initMenu();
menu.showStartMenu();
guiManager.showStartMenu();
screen.show();
}
@@ -51,11 +49,8 @@ public class DemoRunner implements GameRunner {
}
private void initMenu() {
this.menu = new MenuManager(this, context);
}
public int openedWindows() {
return this.menu.openedWindows();
this.guiManager = new GuiManager(this, context);
context.putGlobal("gui", guiManager);
}
private void initHUD() {
@@ -79,8 +74,8 @@ public class DemoRunner implements GameRunner {
}
public void newGame() {
menu.closeAll();
menu.enableGameMenu();
guiManager.closeAll();
guiManager.enableGameMenu();
resetPlayer();
context.openMap(A.maps.hero_home.uid);
context.getMap().getObjectLayer(A.maps.hero_home.layers.main).addEntity(this.player);
@@ -90,20 +85,12 @@ public class DemoRunner implements GameRunner {
}
public void returnToStartMenu() {
menu.closeAll();
guiManager.closeAll();
hud.hide();
context.pause();
context.closeMap();
menu.disableGameMenu();
menu.showStartMenu();
}
public void openLootWindow(Enemy enemy) {
menu.openLootWindow(enemy);
}
public void openChestWindow(Chest chest) {
menu.openChestWindow(chest);
guiManager.disableGameMenu();
guiManager.showStartMenu();
}
public void exit() {