Refactor MenuManager to GuiManager
This commit is contained in:
@@ -1,30 +1,25 @@
|
|||||||
package com.bartlomiejpluta.demo.entity;
|
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 com.bartlomiejpluta.demo.world.item.Item;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
|
|
||||||
public class Chest extends MapObject {
|
public class Chest extends MapObject {
|
||||||
private final DemoRunner runner;
|
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final Item[] content = new Item[Enemy.MAX_LOOT];
|
private final Item[] content = new Item[Enemy.MAX_LOOT];
|
||||||
|
|
||||||
public Chest(@NonNull String id) {
|
public Chest(@NonNull String id) {
|
||||||
super(id);
|
super(id);
|
||||||
runner = ((DemoRunner) ContextHolder.INSTANCE.getContext().getGameRunner());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void interact() {
|
protected void interact() {
|
||||||
runner.openChestWindow(this);
|
guiManager.openChestWindow(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean shouldGoFurther(MapObject object) {
|
protected boolean shouldGoFurther(MapObject object) {
|
||||||
return runner.openedWindows() == 0;
|
return guiManager.openedWindows() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Chest addItem(Item item) {
|
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.Context;
|
||||||
import com.bartlomiejpluta.base.api.context.ContextHolder;
|
import com.bartlomiejpluta.base.api.context.ContextHolder;
|
||||||
import com.bartlomiejpluta.base.lib.character.CharacterDelegate;
|
import com.bartlomiejpluta.base.lib.character.CharacterDelegate;
|
||||||
|
import com.bartlomiejpluta.demo.menu.GuiManager;
|
||||||
import com.bartlomiejpluta.demo.runner.DemoRunner;
|
import com.bartlomiejpluta.demo.runner.DemoRunner;
|
||||||
|
|
||||||
public abstract class NamedCharacter extends CharacterDelegate {
|
public abstract class NamedCharacter extends CharacterDelegate {
|
||||||
protected final Context context;
|
protected final Context context;
|
||||||
protected final DemoRunner runner;
|
protected final DemoRunner runner;
|
||||||
|
protected final GuiManager guiManager;
|
||||||
|
|
||||||
public NamedCharacter(Character character) {
|
public NamedCharacter(Character character) {
|
||||||
super(character);
|
super(character);
|
||||||
this.context = ContextHolder.INSTANCE.getContext();
|
this.context = ContextHolder.INSTANCE.getContext();
|
||||||
this.runner = (DemoRunner) context.getGameRunner();
|
this.runner = (DemoRunner) context.getGameRunner();
|
||||||
|
this.guiManager = context.getGlobal("gui", GuiManager.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract String getName();
|
public abstract String getName();
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.bartlomiejpluta.demo.entity;
|
|||||||
|
|
||||||
import com.bartlomiejpluta.base.api.character.Character;
|
import com.bartlomiejpluta.base.api.character.Character;
|
||||||
import com.bartlomiejpluta.demo.world.item.Item;
|
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.Ammunition;
|
||||||
import com.bartlomiejpluta.demo.world.weapon.Weapon;
|
import com.bartlomiejpluta.demo.world.weapon.Weapon;
|
||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
@@ -46,7 +47,7 @@ public class Player extends Creature {
|
|||||||
|
|
||||||
// Search the enemy corpse
|
// Search the enemy corpse
|
||||||
if (entity instanceof Enemy enemy && !enemy.isAlive()) {
|
if (entity instanceof Enemy enemy && !enemy.isAlive()) {
|
||||||
runner.openLootWindow(enemy);
|
guiManager.openLootWindow(enemy);
|
||||||
interactionCooldown = INTERACTION_COOLDOWN;
|
interactionCooldown = INTERACTION_COOLDOWN;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ package com.bartlomiejpluta.demo.map;
|
|||||||
|
|
||||||
import com.bartlomiejpluta.base.api.camera.Camera;
|
import com.bartlomiejpluta.base.api.camera.Camera;
|
||||||
import com.bartlomiejpluta.base.api.context.Context;
|
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.icon.Icon;
|
||||||
import com.bartlomiejpluta.base.api.input.Input;
|
import com.bartlomiejpluta.base.api.input.Input;
|
||||||
import com.bartlomiejpluta.base.api.input.Key;
|
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.Enemy;
|
||||||
import com.bartlomiejpluta.demo.entity.Player;
|
import com.bartlomiejpluta.demo.entity.Player;
|
||||||
import com.bartlomiejpluta.demo.event.EnemyDiedEvent;
|
import com.bartlomiejpluta.demo.event.EnemyDiedEvent;
|
||||||
|
import com.bartlomiejpluta.demo.menu.GuiManager;
|
||||||
import com.bartlomiejpluta.demo.runner.DemoRunner;
|
import com.bartlomiejpluta.demo.runner.DemoRunner;
|
||||||
import com.bartlomiejpluta.demo.world.potion.Medicament;
|
import com.bartlomiejpluta.demo.world.potion.Medicament;
|
||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
|
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
public abstract class BaseMapHandler implements MapHandler {
|
public abstract class BaseMapHandler implements MapHandler {
|
||||||
protected Screen screen;
|
protected Screen screen;
|
||||||
protected Context context;
|
protected Context context;
|
||||||
protected DemoRunner runner;
|
protected DemoRunner runner;
|
||||||
|
protected GuiManager guiManager;
|
||||||
protected Camera camera;
|
protected Camera camera;
|
||||||
protected GameMap map;
|
protected GameMap map;
|
||||||
protected Player player;
|
protected Player player;
|
||||||
@@ -37,6 +43,7 @@ public abstract class BaseMapHandler implements MapHandler {
|
|||||||
this.context = context;
|
this.context = context;
|
||||||
this.screen = context.getScreen();
|
this.screen = context.getScreen();
|
||||||
this.runner = (DemoRunner) context.getGameRunner();
|
this.runner = (DemoRunner) context.getGameRunner();
|
||||||
|
this.guiManager = context.getGlobal("gui", GuiManager.class);
|
||||||
this.camera = context.getCamera();
|
this.camera = context.getCamera();
|
||||||
this.map = map;
|
this.map = map;
|
||||||
this.player = context.getGlobal("player", Player.class);
|
this.player = context.getGlobal("player", Player.class);
|
||||||
@@ -51,7 +58,7 @@ public abstract class BaseMapHandler implements MapHandler {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (runner.openedWindows() > 0) {
|
if (guiManager.openedWindows() > 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,25 +2,20 @@ package com.bartlomiejpluta.demo.menu;
|
|||||||
|
|
||||||
import A.widgets;
|
import A.widgets;
|
||||||
import com.bartlomiejpluta.base.api.context.Context;
|
import com.bartlomiejpluta.base.api.context.Context;
|
||||||
import com.bartlomiejpluta.base.api.gui.DisplayMode;
|
import com.bartlomiejpluta.base.api.gui.*;
|
||||||
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.input.Key;
|
import com.bartlomiejpluta.base.api.input.Key;
|
||||||
import com.bartlomiejpluta.base.api.input.KeyAction;
|
import com.bartlomiejpluta.base.api.input.KeyAction;
|
||||||
import com.bartlomiejpluta.base.api.input.KeyEvent;
|
import com.bartlomiejpluta.base.api.input.KeyEvent;
|
||||||
import com.bartlomiejpluta.demo.entity.Chest;
|
import com.bartlomiejpluta.demo.entity.Chest;
|
||||||
import com.bartlomiejpluta.demo.entity.Enemy;
|
import com.bartlomiejpluta.demo.entity.Enemy;
|
||||||
import com.bartlomiejpluta.demo.gui.EquipmentWindow;
|
import com.bartlomiejpluta.demo.gui.*;
|
||||||
import com.bartlomiejpluta.demo.gui.GameMenuWindow;
|
|
||||||
import com.bartlomiejpluta.demo.gui.LootWindow;
|
|
||||||
import com.bartlomiejpluta.demo.gui.StartMenuWindow;
|
|
||||||
import com.bartlomiejpluta.demo.runner.DemoRunner;
|
import com.bartlomiejpluta.demo.runner.DemoRunner;
|
||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
|
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
public class MenuManager {
|
public class GuiManager {
|
||||||
private final DemoRunner runner;
|
private final DemoRunner runner;
|
||||||
private final Context context;
|
private final Context context;
|
||||||
private final GUI gui;
|
private final GUI gui;
|
||||||
@@ -30,9 +25,10 @@ public class MenuManager {
|
|||||||
private final GameMenuWindow gameMenu;
|
private final GameMenuWindow gameMenu;
|
||||||
private final EquipmentWindow equipment;
|
private final EquipmentWindow equipment;
|
||||||
private final LootWindow loot;
|
private final LootWindow loot;
|
||||||
|
private final DialogWindow dialog;
|
||||||
private final Consumer<KeyEvent> gameMenuHandler = this::handleGameMenuKeyEvent;
|
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.runner = runner;
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.gui = context.newGUI();
|
this.gui = context.newGUI();
|
||||||
@@ -49,6 +45,8 @@ public class MenuManager {
|
|||||||
this.gameMenu.getStartMenuBtn().setAction(runner::returnToStartMenu);
|
this.gameMenu.getStartMenuBtn().setAction(runner::returnToStartMenu);
|
||||||
this.gameMenu.getExitBtn().setAction(runner::exit);
|
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.equipment = gui.inflateWindow(A.widgets.equipment.uid, EquipmentWindow.class);
|
||||||
this.loot = gui.inflateWindow(widgets.loot_menu.uid, LootWindow.class);
|
this.loot = gui.inflateWindow(widgets.loot_menu.uid, LootWindow.class);
|
||||||
}
|
}
|
||||||
@@ -102,6 +100,11 @@ public class MenuManager {
|
|||||||
manager.setDisplayMode(DisplayMode.DISPLAY_TOP);
|
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) {
|
public void openLootWindow(@NonNull Enemy enemy) {
|
||||||
manager.closeAll();
|
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.runner.GameRunner;
|
||||||
import com.bartlomiejpluta.base.api.screen.Screen;
|
import com.bartlomiejpluta.base.api.screen.Screen;
|
||||||
import com.bartlomiejpluta.base.util.profiler.FPSProfiler;
|
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.entity.Player;
|
||||||
import com.bartlomiejpluta.demo.menu.MenuManager;
|
import com.bartlomiejpluta.demo.menu.GuiManager;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@@ -18,7 +16,7 @@ public class DemoRunner implements GameRunner {
|
|||||||
private final FPSProfiler fpsProfiler = FPSProfiler.create(20);
|
private final FPSProfiler fpsProfiler = FPSProfiler.create(20);
|
||||||
private Screen screen;
|
private Screen screen;
|
||||||
private Context context;
|
private Context context;
|
||||||
private MenuManager menu;
|
private GuiManager guiManager;
|
||||||
private GUI hud;
|
private GUI hud;
|
||||||
private Player player;
|
private Player player;
|
||||||
|
|
||||||
@@ -35,7 +33,7 @@ public class DemoRunner implements GameRunner {
|
|||||||
initHUD();
|
initHUD();
|
||||||
initMenu();
|
initMenu();
|
||||||
|
|
||||||
menu.showStartMenu();
|
guiManager.showStartMenu();
|
||||||
|
|
||||||
screen.show();
|
screen.show();
|
||||||
}
|
}
|
||||||
@@ -51,11 +49,8 @@ public class DemoRunner implements GameRunner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void initMenu() {
|
private void initMenu() {
|
||||||
this.menu = new MenuManager(this, context);
|
this.guiManager = new GuiManager(this, context);
|
||||||
}
|
context.putGlobal("gui", guiManager);
|
||||||
|
|
||||||
public int openedWindows() {
|
|
||||||
return this.menu.openedWindows();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initHUD() {
|
private void initHUD() {
|
||||||
@@ -79,8 +74,8 @@ public class DemoRunner implements GameRunner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void newGame() {
|
public void newGame() {
|
||||||
menu.closeAll();
|
guiManager.closeAll();
|
||||||
menu.enableGameMenu();
|
guiManager.enableGameMenu();
|
||||||
resetPlayer();
|
resetPlayer();
|
||||||
context.openMap(A.maps.hero_home.uid);
|
context.openMap(A.maps.hero_home.uid);
|
||||||
context.getMap().getObjectLayer(A.maps.hero_home.layers.main).addEntity(this.player);
|
context.getMap().getObjectLayer(A.maps.hero_home.layers.main).addEntity(this.player);
|
||||||
@@ -90,20 +85,12 @@ public class DemoRunner implements GameRunner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void returnToStartMenu() {
|
public void returnToStartMenu() {
|
||||||
menu.closeAll();
|
guiManager.closeAll();
|
||||||
hud.hide();
|
hud.hide();
|
||||||
context.pause();
|
context.pause();
|
||||||
context.closeMap();
|
context.closeMap();
|
||||||
menu.disableGameMenu();
|
guiManager.disableGameMenu();
|
||||||
menu.showStartMenu();
|
guiManager.showStartMenu();
|
||||||
}
|
|
||||||
|
|
||||||
public void openLootWindow(Enemy enemy) {
|
|
||||||
menu.openLootWindow(enemy);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void openChestWindow(Chest chest) {
|
|
||||||
menu.openChestWindow(chest);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void exit() {
|
public void exit() {
|
||||||
|
|||||||
Reference in New Issue
Block a user