From 46981937ce5c6f576e3ba4e9d75f40d3e94397e0 Mon Sep 17 00:00:00 2001 From: jzitnik-dev Date: Wed, 21 Jan 2026 08:05:32 +0100 Subject: [PATCH] refactor(events): Small event manager refactoring --- .../jzitnik/events/QuestionAnswerEvent.java | 9 ----- .../jzitnik/events/handlers/CliHandler.java | 5 --- .../events/handlers/DialogEventHandler.java | 4 --- .../handlers/DroppedItemRerenderHandler.java | 5 --- .../events/handlers/ExitEventHandler.java | 6 ---- .../handlers/FullRedrawEventHandler.java | 5 --- .../events/handlers/FullRoomDrawHandler.java | 12 +------ .../handlers/InventoryRerenderHandler.java | 5 --- .../handlers/KeyboardPressEventHandler.java | 5 --- .../handlers/MouseActionEventHandler.java | 9 +++-- .../handlers/MouseMoveEventHandler.java | 5 --- .../handlers/PlayerMoveEventHandler.java | 5 --- .../handlers/QuestionAnswerEventHandler.java | 35 ------------------- .../events/handlers/RenderStatsHandler.java | 5 --- .../events/handlers/RerenderPartHandler.java | 5 --- .../handlers/RoomChangeEventHandler.java | 5 --- .../handlers/TerminalResizeEventHandler.java | 5 --- .../TerminalTooSmallEventHandler.java | 7 ---- .../screens/scenes/BasicImageScene.java | 3 -- .../utils/events/AbstractEventHandler.java | 8 ----- .../cz/jzitnik/utils/events/EventManager.java | 2 +- 21 files changed, 6 insertions(+), 144 deletions(-) delete mode 100644 src/main/java/cz/jzitnik/events/QuestionAnswerEvent.java delete mode 100644 src/main/java/cz/jzitnik/events/handlers/QuestionAnswerEventHandler.java diff --git a/src/main/java/cz/jzitnik/events/QuestionAnswerEvent.java b/src/main/java/cz/jzitnik/events/QuestionAnswerEvent.java deleted file mode 100644 index e8ec29f..0000000 --- a/src/main/java/cz/jzitnik/events/QuestionAnswerEvent.java +++ /dev/null @@ -1,9 +0,0 @@ -package cz.jzitnik.events; - -import cz.jzitnik.utils.events.Event; -import lombok.Getter; - -@Getter -public class QuestionAnswerEvent implements Event { - private int questionIndex; -} diff --git a/src/main/java/cz/jzitnik/events/handlers/CliHandler.java b/src/main/java/cz/jzitnik/events/handlers/CliHandler.java index 92c873e..3385631 100644 --- a/src/main/java/cz/jzitnik/events/handlers/CliHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/CliHandler.java @@ -13,7 +13,6 @@ import cz.jzitnik.ui.pixels.AlphaPixel; import cz.jzitnik.ui.pixels.ColoredPixel; import cz.jzitnik.ui.pixels.Empty; import cz.jzitnik.ui.pixels.Pixel; -import cz.jzitnik.utils.DependencyManager; import cz.jzitnik.utils.events.AbstractEventHandler; import lombok.extern.slf4j.Slf4j; @@ -31,10 +30,6 @@ public class CliHandler extends AbstractEventHandler { @InjectState private RenderState renderState; - public CliHandler(DependencyManager dm) { - super(dm); - } - @Override public void handle(RerenderScreen event) { if (renderState.isTerminalTooSmall()) { diff --git a/src/main/java/cz/jzitnik/events/handlers/DialogEventHandler.java b/src/main/java/cz/jzitnik/events/handlers/DialogEventHandler.java index a3fa46d..96695b8 100644 --- a/src/main/java/cz/jzitnik/events/handlers/DialogEventHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/DialogEventHandler.java @@ -15,7 +15,6 @@ import cz.jzitnik.states.TerminalState; import cz.jzitnik.ui.pixels.AlphaPixel; import cz.jzitnik.ui.pixels.ColoredPixel; import cz.jzitnik.ui.pixels.Empty; -import cz.jzitnik.utils.DependencyManager; import cz.jzitnik.utils.TextRenderer; import cz.jzitnik.utils.events.AbstractEventHandler; import cz.jzitnik.utils.events.EventManager; @@ -28,9 +27,6 @@ import java.util.ArrayList; @Slf4j @EventHandler(Dialog.class) public class DialogEventHandler extends AbstractEventHandler { - public DialogEventHandler(DependencyManager dm) { - super(dm); - } @InjectState private DialogState dialogState; diff --git a/src/main/java/cz/jzitnik/events/handlers/DroppedItemRerenderHandler.java b/src/main/java/cz/jzitnik/events/handlers/DroppedItemRerenderHandler.java index 4d95226..ebd8bcd 100644 --- a/src/main/java/cz/jzitnik/events/handlers/DroppedItemRerenderHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/DroppedItemRerenderHandler.java @@ -5,7 +5,6 @@ import cz.jzitnik.annotations.injectors.InjectDependency; import cz.jzitnik.events.DroppedItemRerender; import cz.jzitnik.events.RerenderPart; import cz.jzitnik.game.utils.RoomCords; -import cz.jzitnik.utils.DependencyManager; import cz.jzitnik.utils.events.AbstractEventHandler; import cz.jzitnik.utils.events.EventManager; @@ -13,10 +12,6 @@ import java.awt.image.BufferedImage; @EventHandler(DroppedItemRerender.class) public class DroppedItemRerenderHandler extends AbstractEventHandler { - public DroppedItemRerenderHandler(DependencyManager dm) { - super(dm); - } - @InjectDependency private EventManager eventManager; diff --git a/src/main/java/cz/jzitnik/events/handlers/ExitEventHandler.java b/src/main/java/cz/jzitnik/events/handlers/ExitEventHandler.java index 7a35cbe..db519a1 100644 --- a/src/main/java/cz/jzitnik/events/handlers/ExitEventHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/ExitEventHandler.java @@ -5,9 +5,7 @@ import cz.jzitnik.annotations.injectors.InjectDependency; import cz.jzitnik.annotations.injectors.InjectState; import cz.jzitnik.events.ExitEvent; import cz.jzitnik.states.RunningState; -import cz.jzitnik.utils.DependencyManager; import cz.jzitnik.utils.ScheduledTaskManager; -import cz.jzitnik.utils.StateManager; import cz.jzitnik.utils.ThreadManager; import cz.jzitnik.utils.events.AbstractEventHandler; import cz.jzitnik.utils.roomtasks.RoomTaskScheduler; @@ -26,10 +24,6 @@ public class ExitEventHandler extends AbstractEventHandler { @InjectDependency private ScheduledTaskManager scheduledTaskManager; - public ExitEventHandler(DependencyManager dm) { - super(dm); - } - @Override public void handle(ExitEvent event) { threadManager.shutdownAll(); diff --git a/src/main/java/cz/jzitnik/events/handlers/FullRedrawEventHandler.java b/src/main/java/cz/jzitnik/events/handlers/FullRedrawEventHandler.java index ecd3e69..f27fe7f 100644 --- a/src/main/java/cz/jzitnik/events/handlers/FullRedrawEventHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/FullRedrawEventHandler.java @@ -7,7 +7,6 @@ import cz.jzitnik.annotations.injectors.InjectState; import cz.jzitnik.events.FullRedrawEvent; import cz.jzitnik.events.FullRoomDraw; import cz.jzitnik.states.TerminalState; -import cz.jzitnik.utils.DependencyManager; import cz.jzitnik.utils.events.AbstractEventHandler; import cz.jzitnik.utils.events.EventManager; @@ -21,10 +20,6 @@ public class FullRedrawEventHandler extends AbstractEventHandler { @InjectDependency private GlobalIOHandlerRepository globalIOHandlerRepository; - public FullRoomDrawHandler(DependencyManager dm) { - super(dm); - } - @Override public void handle(FullRoomDraw event) { try { @@ -96,9 +88,7 @@ public class FullRoomDrawHandler extends AbstractEventHandler { if (renderState.isFirstRender() || event.isFullRerender()) { eventManager.emitEvent(RerenderScreen.full(terminalSize)); renderState.setFirstRender(false); - scheduler.schedule(() -> { - roomTaskScheduler.setupNewSchedulers(currentRoom); - }, 200, TimeUnit.MILLISECONDS); + scheduler.schedule(() -> roomTaskScheduler.setupNewSchedulers(currentRoom), 200, TimeUnit.MILLISECONDS); } else { eventManager.emitEvent(new RerenderScreen(partsToRerender.toArray(RerenderScreen.ScreenPart[]::new))); } diff --git a/src/main/java/cz/jzitnik/events/handlers/InventoryRerenderHandler.java b/src/main/java/cz/jzitnik/events/handlers/InventoryRerenderHandler.java index 0a97bcc..57efc34 100644 --- a/src/main/java/cz/jzitnik/events/handlers/InventoryRerenderHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/InventoryRerenderHandler.java @@ -6,7 +6,6 @@ import cz.jzitnik.annotations.injectors.InjectDependency; import cz.jzitnik.events.InventoryRerender; import cz.jzitnik.events.RerenderScreen; import cz.jzitnik.ui.Inventory; -import cz.jzitnik.utils.DependencyManager; import cz.jzitnik.utils.events.AbstractEventHandler; import cz.jzitnik.utils.events.EventManager; @@ -18,10 +17,6 @@ public class InventoryRerenderHandler extends AbstractEventHandler { - public KeyboardPressEventHandler(DependencyManager dm) { - super(dm); - } - @InjectState private GameState gameState; diff --git a/src/main/java/cz/jzitnik/events/handlers/MouseActionEventHandler.java b/src/main/java/cz/jzitnik/events/handlers/MouseActionEventHandler.java index 1f84ec2..bb2a542 100644 --- a/src/main/java/cz/jzitnik/events/handlers/MouseActionEventHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/MouseActionEventHandler.java @@ -20,10 +20,6 @@ import java.util.stream.Stream; @EventHandler(MouseAction.class) public class MouseActionEventHandler extends AbstractEventHandler { - public MouseActionEventHandler(DependencyManager dm) { - super(dm); - } - @InjectDependency private EventManager eventManager; @@ -39,6 +35,9 @@ public class MouseActionEventHandler extends AbstractEventHandler { @InjectConfig private PlayerConfig playerConfig; + @InjectDependency + private DependencyManager dependencyManager; + @Override public void handle(MouseAction event) { if (gameState.getScreen() != null) { @@ -77,7 +76,7 @@ public class MouseActionEventHandler extends AbstractEventHandler { gameState.getPlayer().swing(playerConfig.getSwingTimeMs()); object.ifPresent(selectable -> { - dm.inject(selectable); + dependencyManager.inject(selectable); selectable.interact(); }); } diff --git a/src/main/java/cz/jzitnik/events/handlers/MouseMoveEventHandler.java b/src/main/java/cz/jzitnik/events/handlers/MouseMoveEventHandler.java index ebafb0a..24f3264 100644 --- a/src/main/java/cz/jzitnik/events/handlers/MouseMoveEventHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/MouseMoveEventHandler.java @@ -19,7 +19,6 @@ import cz.jzitnik.game.utils.RoomCords; import cz.jzitnik.game.utils.Selectable; import cz.jzitnik.states.ScreenBuffer; import cz.jzitnik.states.TerminalState; -import cz.jzitnik.utils.DependencyManager; import cz.jzitnik.utils.RerenderUtils; import cz.jzitnik.utils.events.AbstractEventHandler; import cz.jzitnik.utils.events.EventManager; @@ -36,10 +35,6 @@ import java.util.stream.Stream; @Slf4j @EventHandler(MouseMoveEvent.class) public class MouseMoveEventHandler extends AbstractEventHandler { - public MouseMoveEventHandler(DependencyManager dm) { - super(dm); - } - private MouseMoveEvent lastEvent = new MouseMoveEvent(new MouseAction(MouseActionType.MOVE, 1, new TerminalPosition(0, 0))); @InjectState diff --git a/src/main/java/cz/jzitnik/events/handlers/PlayerMoveEventHandler.java b/src/main/java/cz/jzitnik/events/handlers/PlayerMoveEventHandler.java index d1c5b05..f319129 100644 --- a/src/main/java/cz/jzitnik/events/handlers/PlayerMoveEventHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/PlayerMoveEventHandler.java @@ -23,7 +23,6 @@ import cz.jzitnik.states.ScreenBuffer; import cz.jzitnik.states.PlayerMovementState; import cz.jzitnik.states.TerminalState; import cz.jzitnik.ui.Stats; -import cz.jzitnik.utils.DependencyManager; import cz.jzitnik.utils.RerenderUtils; import cz.jzitnik.utils.events.AbstractEventHandler; import cz.jzitnik.utils.events.Event; @@ -58,10 +57,6 @@ public class PlayerMoveEventHandler extends AbstractEventHandler { - public QuestionAnswerEventHandler(DependencyManager dm) { - super(dm); - } - - @InjectState - private DialogState dialogState; - - @InjectDependency - private EventManager eventManager; - - @Override - public void handle(QuestionAnswerEvent event) { - OnEnd dialogOnEnd = dialogState.getCurrentDialog().getOnEnd(); - - if (dialogOnEnd instanceof OnEnd.AskQuestion dialog) { - OnEnd.AskQuestion.Answer answer = dialog.answers()[event.getQuestionIndex()]; - Dialog switchTo = answer.dialog(); - } - } -} diff --git a/src/main/java/cz/jzitnik/events/handlers/RenderStatsHandler.java b/src/main/java/cz/jzitnik/events/handlers/RenderStatsHandler.java index beb0b24..b13e95f 100644 --- a/src/main/java/cz/jzitnik/events/handlers/RenderStatsHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/RenderStatsHandler.java @@ -6,7 +6,6 @@ import cz.jzitnik.annotations.injectors.InjectDependency; import cz.jzitnik.events.RenderStats; import cz.jzitnik.events.RerenderScreen; import cz.jzitnik.ui.Stats; -import cz.jzitnik.utils.DependencyManager; import cz.jzitnik.utils.events.AbstractEventHandler; import cz.jzitnik.utils.events.EventManager; @@ -18,10 +17,6 @@ public class RenderStatsHandler extends AbstractEventHandler { @InjectDependency private Stats stats; - public RenderStatsHandler(DependencyManager dm) { - super(dm); - } - @Override public void handle(RenderStats event) { stats.rerender(); diff --git a/src/main/java/cz/jzitnik/events/handlers/RerenderPartHandler.java b/src/main/java/cz/jzitnik/events/handlers/RerenderPartHandler.java index 4c08bce..b2bc6ee 100644 --- a/src/main/java/cz/jzitnik/events/handlers/RerenderPartHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/RerenderPartHandler.java @@ -14,7 +14,6 @@ import cz.jzitnik.game.ResourceManager; import cz.jzitnik.game.utils.RoomCords; import cz.jzitnik.states.ScreenBuffer; import cz.jzitnik.states.TerminalState; -import cz.jzitnik.utils.DependencyManager; import cz.jzitnik.utils.RerenderUtils; import cz.jzitnik.utils.events.AbstractEventHandler; import cz.jzitnik.utils.events.EventManager; @@ -23,10 +22,6 @@ import java.awt.image.BufferedImage; @EventHandler(RerenderPart.class) public class RerenderPartHandler extends AbstractEventHandler { - public RerenderPartHandler(DependencyManager dm) { - super(dm); - } - @InjectState private TerminalState terminalState; diff --git a/src/main/java/cz/jzitnik/events/handlers/RoomChangeEventHandler.java b/src/main/java/cz/jzitnik/events/handlers/RoomChangeEventHandler.java index 27fc873..dfdd339 100644 --- a/src/main/java/cz/jzitnik/events/handlers/RoomChangeEventHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/RoomChangeEventHandler.java @@ -8,7 +8,6 @@ import cz.jzitnik.events.RoomChangeEvent; import cz.jzitnik.game.GameRoom; import cz.jzitnik.game.GameState; import cz.jzitnik.game.utils.RoomCords; -import cz.jzitnik.utils.DependencyManager; import cz.jzitnik.utils.events.AbstractEventHandler; import cz.jzitnik.utils.events.EventManager; import cz.jzitnik.utils.roomtasks.RoomTaskScheduler; @@ -29,10 +28,6 @@ public class RoomChangeEventHandler extends AbstractEventHandler { - public TerminalResizeEventHandler(DependencyManager dm) { - super(dm); - } - @InjectDependency private EventManager eventManager; diff --git a/src/main/java/cz/jzitnik/events/handlers/TerminalTooSmallEventHandler.java b/src/main/java/cz/jzitnik/events/handlers/TerminalTooSmallEventHandler.java index 011ed4c..a4b4f6b 100644 --- a/src/main/java/cz/jzitnik/events/handlers/TerminalTooSmallEventHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/TerminalTooSmallEventHandler.java @@ -2,7 +2,6 @@ package cz.jzitnik.events.handlers; import com.googlecode.lanterna.SGR; import com.googlecode.lanterna.TerminalSize; -import com.googlecode.lanterna.TextCharacter; import com.googlecode.lanterna.TextColor; import com.googlecode.lanterna.screen.Screen; import com.googlecode.lanterna.screen.TerminalScreen; @@ -10,19 +9,13 @@ import cz.jzitnik.annotations.EventHandler; import cz.jzitnik.annotations.injectors.InjectState; import cz.jzitnik.events.TerminalTooSmallEvent; import cz.jzitnik.states.TerminalState; -import cz.jzitnik.utils.DependencyManager; import cz.jzitnik.utils.events.AbstractEventHandler; import java.io.IOException; import java.util.EnumSet; -import java.util.HashSet; @EventHandler(TerminalTooSmallEvent.class) public class TerminalTooSmallEventHandler extends AbstractEventHandler { - public TerminalTooSmallEventHandler(DependencyManager dm) { - super(dm); - } - @InjectState private TerminalState terminalState; diff --git a/src/main/java/cz/jzitnik/screens/scenes/BasicImageScene.java b/src/main/java/cz/jzitnik/screens/scenes/BasicImageScene.java index d8a5c0c..dda30e9 100644 --- a/src/main/java/cz/jzitnik/screens/scenes/BasicImageScene.java +++ b/src/main/java/cz/jzitnik/screens/scenes/BasicImageScene.java @@ -39,11 +39,9 @@ public class BasicImageScene extends Screen { int imgWidth = image.getWidth(); int imgHeight = image.getHeight(); - // Terminal pixel space (because 1 cell = 2 vertical pixels) int termPixelWidth = termWidth; int termPixelHeight = termHeight * 2; - // Scale while preserving aspect ratio double scale = Math.min( (double) termPixelWidth / imgWidth, (double) termPixelHeight / imgHeight @@ -52,7 +50,6 @@ public class BasicImageScene extends Screen { int scaledWidth = (int) (imgWidth * scale); int scaledHeight = (int) (imgHeight * scale); - // Centering offsets (in pixel space) int xOffset = (termPixelWidth - scaledWidth) / 2; int yOffset = (termPixelHeight - scaledHeight) / 2; diff --git a/src/main/java/cz/jzitnik/utils/events/AbstractEventHandler.java b/src/main/java/cz/jzitnik/utils/events/AbstractEventHandler.java index 42a9b57..229e13a 100644 --- a/src/main/java/cz/jzitnik/utils/events/AbstractEventHandler.java +++ b/src/main/java/cz/jzitnik/utils/events/AbstractEventHandler.java @@ -1,13 +1,5 @@ package cz.jzitnik.utils.events; -import cz.jzitnik.utils.DependencyManager; - public abstract class AbstractEventHandler { - protected final DependencyManager dm; - - public AbstractEventHandler(DependencyManager dm) { - this.dm = dm; - } - public abstract void handle(T event); } diff --git a/src/main/java/cz/jzitnik/utils/events/EventManager.java b/src/main/java/cz/jzitnik/utils/events/EventManager.java index 6cb2eb3..a212f4f 100644 --- a/src/main/java/cz/jzitnik/utils/events/EventManager.java +++ b/src/main/java/cz/jzitnik/utils/events/EventManager.java @@ -74,7 +74,7 @@ public class EventManager extends Thread { for (var clazz : classes) { EventHandler eventHandler = clazz.getAnnotation(EventHandler.class); try { - var instance = (AbstractEventHandler) clazz.getDeclaredConstructor(DependencyManager.class).newInstance(dependencyManager); + var instance = (AbstractEventHandler) clazz.getDeclaredConstructor().newInstance(); handlers.put(eventHandler.value(), instance); } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {