Refactor MenuManager to GuiManager
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user