From 9bf75a8458aecc154db0a324c105882879ce2743 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Wed, 31 Aug 2022 13:15:33 +0200 Subject: [PATCH] Replace Context's globals with DemoRunner field references --- data.mv.db | Bin 49152 -> 36864 bytes .../bartlomiejpluta/demo/entity/Chest.java | 4 +- .../com/bartlomiejpluta/demo/entity/Door.java | 3 +- .../bartlomiejpluta/demo/entity/Enemy.java | 3 +- .../demo/entity/NamedCharacter.java | 5 +- .../bartlomiejpluta/demo/entity/Player.java | 4 +- .../demo/gui/EquipmentWindow.java | 3 +- .../com/bartlomiejpluta/demo/gui/HUD.java | 5 +- .../bartlomiejpluta/demo/gui/LootWindow.java | 2 +- .../demo/map/BaseMapHandler.java | 6 +-- .../demo/runner/DemoRunner.java | 50 +++++++++++------- 11 files changed, 47 insertions(+), 38 deletions(-) diff --git a/data.mv.db b/data.mv.db index a83a7eb1ea238546e60a2a6a1ca737bcf4f98f35..fc1d0abcc25961b60d93d0056edddf6507e64396 100644 GIT binary patch delta 3006 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 ai.recomputePath()); diff --git a/src/main/java/com/bartlomiejpluta/demo/entity/NamedCharacter.java b/src/main/java/com/bartlomiejpluta/demo/entity/NamedCharacter.java index 2731f40..f91a2bd 100644 --- a/src/main/java/com/bartlomiejpluta/demo/entity/NamedCharacter.java +++ b/src/main/java/com/bartlomiejpluta/demo/entity/NamedCharacter.java @@ -4,19 +4,16 @@ 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); + this.runner = DemoRunner.instance(); } public abstract String getName(); diff --git a/src/main/java/com/bartlomiejpluta/demo/entity/Player.java b/src/main/java/com/bartlomiejpluta/demo/entity/Player.java index 2859c9b..f02b051 100644 --- a/src/main/java/com/bartlomiejpluta/demo/entity/Player.java +++ b/src/main/java/com/bartlomiejpluta/demo/entity/Player.java @@ -47,7 +47,7 @@ public class Player extends Creature { // Search the enemy corpse if (entity instanceof Enemy enemy && !enemy.isAlive()) { - guiManager.openLootWindow(enemy); + runner.getGuiManager().openLootWindow(enemy); interactionCooldown = INTERACTION_COOLDOWN; return; } @@ -57,7 +57,7 @@ public class Player extends Creature { public boolean pushItemToEquipment(@NonNull Item item) { if (item instanceof Ammunition ammo) { - if (ammo.getId().equals(getAmmunition().getId())) { + if (getAmmunition() != null && ammo.getId().equals(getAmmunition().getId())) { getAmmunition().increase(ammo.getCount()); return true; } diff --git a/src/main/java/com/bartlomiejpluta/demo/gui/EquipmentWindow.java b/src/main/java/com/bartlomiejpluta/demo/gui/EquipmentWindow.java index 89c7b02..40acb79 100644 --- a/src/main/java/com/bartlomiejpluta/demo/gui/EquipmentWindow.java +++ b/src/main/java/com/bartlomiejpluta/demo/gui/EquipmentWindow.java @@ -10,6 +10,7 @@ import com.bartlomiejpluta.base.lib.gui.Label; import com.bartlomiejpluta.base.lib.gui.VGridOptionChoice; import com.bartlomiejpluta.base.lib.gui.VOptionChoice; import com.bartlomiejpluta.demo.entity.Player; +import com.bartlomiejpluta.demo.runner.DemoRunner; import com.bartlomiejpluta.demo.world.item.Item; import com.bartlomiejpluta.demo.world.item.Useable; import com.bartlomiejpluta.demo.world.potion.Medicament; @@ -55,7 +56,7 @@ public class EquipmentWindow extends DecoratedWindow { public EquipmentWindow(Context context, GUI gui, Map refs) { super(context, gui, refs); - this.player = context.getGlobal("player", Player.class); + this.player = DemoRunner.instance().getPlayer(); this.popupMenuWindow = gui.inflateWindow(A.widgets.eq_item_menu.uid); this.popupMenu = popupMenuWindow.reference("menu", VOptionChoice.class); this.useBtn = popupMenuWindow.reference("use", Button.class); diff --git a/src/main/java/com/bartlomiejpluta/demo/gui/HUD.java b/src/main/java/com/bartlomiejpluta/demo/gui/HUD.java index a783201..85a0512 100644 --- a/src/main/java/com/bartlomiejpluta/demo/gui/HUD.java +++ b/src/main/java/com/bartlomiejpluta/demo/gui/HUD.java @@ -12,6 +12,7 @@ import com.bartlomiejpluta.base.util.profiler.FPSProfiler; import com.bartlomiejpluta.demo.entity.Player; import com.bartlomiejpluta.demo.event.EnemyDiedEvent; import com.bartlomiejpluta.demo.event.HitEvent; +import com.bartlomiejpluta.demo.runner.DemoRunner; import com.bartlomiejpluta.demo.util.LimitedQueue; import com.bartlomiejpluta.demo.world.weapon.Weapon; import lombok.extern.slf4j.Slf4j; @@ -48,8 +49,8 @@ public class HUD extends BorderLayout { public HUD(Context context, GUI gui, Map refs) { super(context, gui, refs); - this.player = context.getGlobal("player", Player.class); - this.fpsProfiler = context.getGlobal("fps-profiler", FPSProfiler.class); + this.player = DemoRunner.instance().getPlayer(); + this.fpsProfiler = DemoRunner.instance().getFpsProfiler(); this.runtime = Runtime.getRuntime(); context.addEventListener(HitEvent.TYPE, this::logHitEvent); context.addEventListener(EnemyDiedEvent.TYPE, this::logEnemyDiedEvent); diff --git a/src/main/java/com/bartlomiejpluta/demo/gui/LootWindow.java b/src/main/java/com/bartlomiejpluta/demo/gui/LootWindow.java index c899135..b8adbbc 100644 --- a/src/main/java/com/bartlomiejpluta/demo/gui/LootWindow.java +++ b/src/main/java/com/bartlomiejpluta/demo/gui/LootWindow.java @@ -26,7 +26,7 @@ public class LootWindow extends DecoratedWindow implements Inflatable { public LootWindow(Context context, GUI gui, Map refs) { super(context, gui, refs); - this.player = context.getGlobal("player", Player.class); + this.player = DemoRunner.instance().getPlayer(); } @Override diff --git a/src/main/java/com/bartlomiejpluta/demo/map/BaseMapHandler.java b/src/main/java/com/bartlomiejpluta/demo/map/BaseMapHandler.java index 386e862..0a18137 100644 --- a/src/main/java/com/bartlomiejpluta/demo/map/BaseMapHandler.java +++ b/src/main/java/com/bartlomiejpluta/demo/map/BaseMapHandler.java @@ -42,11 +42,11 @@ public abstract class BaseMapHandler implements MapHandler { public void onCreate(Context context, GameMap map) { this.context = context; this.screen = context.getScreen(); - this.runner = (DemoRunner) context.getGameRunner(); - this.guiManager = context.getGlobal("gui", GuiManager.class); + this.runner = DemoRunner.instance(); + this.guiManager = runner.getGuiManager(); this.camera = context.getCamera(); this.map = map; - this.player = context.getGlobal("player", Player.class); + this.player = runner.getPlayer(); this.cameraController = FollowingCameraController .on(screen, camera, map) .follow(player.getPosition()); diff --git a/src/main/java/com/bartlomiejpluta/demo/runner/DemoRunner.java b/src/main/java/com/bartlomiejpluta/demo/runner/DemoRunner.java index 6d4457e..7a263d1 100644 --- a/src/main/java/com/bartlomiejpluta/demo/runner/DemoRunner.java +++ b/src/main/java/com/bartlomiejpluta/demo/runner/DemoRunner.java @@ -7,35 +7,29 @@ import com.bartlomiejpluta.base.api.screen.Screen; import com.bartlomiejpluta.base.util.profiler.FPSProfiler; import com.bartlomiejpluta.demo.entity.Player; import com.bartlomiejpluta.demo.menu.GuiManager; +import lombok.Getter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class DemoRunner implements GameRunner { private static final Logger log = LoggerFactory.getLogger(DemoRunner.class); - private final FPSProfiler fpsProfiler = FPSProfiler.create(20); + private static DemoRunner INSTANCE; + private Screen screen; private Context context; - private GuiManager guiManager; private GUI hud; + + @Getter + private final FPSProfiler fpsProfiler = FPSProfiler.create(20); + @Getter + private GuiManager guiManager; + + @Getter private Player player; - @Override - public void init(Context context) { - this.context = context; - this.screen = context.getScreen(); - - context.putGlobal("fps-profiler", fpsProfiler); - - configureScreen(); - configureCamera(); - initPlayer(); - initHUD(); - initMenu(); - - guiManager.showStartMenu(); - - screen.show(); + public static DemoRunner instance() { + return INSTANCE; } private void configureScreen() { @@ -50,7 +44,6 @@ public class DemoRunner implements GameRunner { private void initMenu() { this.guiManager = new GuiManager(this, context); - context.putGlobal("gui", guiManager); } private void initHUD() { @@ -62,7 +55,6 @@ public class DemoRunner implements GameRunner { private void initPlayer() { this.player = new Player(context.createCharacter(A.charsets.luna.uid)); - context.putGlobal("player", player); } private void resetPlayer() { @@ -106,4 +98,22 @@ public class DemoRunner implements GameRunner { public void dispose() { // Do something after game loop is end } + + @Override + public void init(Context context) { + DemoRunner.INSTANCE = this; + + this.context = context; + this.screen = context.getScreen(); + + configureScreen(); + configureCamera(); + initPlayer(); + initHUD(); + initMenu(); + + guiManager.showStartMenu(); + + screen.show(); + } } \ No newline at end of file