refactor(events): Small event manager refactoring
This commit is contained in:
@@ -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;
|
||||
}
|
||||
@@ -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<RerenderScreen> {
|
||||
@InjectState
|
||||
private RenderState renderState;
|
||||
|
||||
public CliHandler(DependencyManager dm) {
|
||||
super(dm);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(RerenderScreen event) {
|
||||
if (renderState.isTerminalTooSmall()) {
|
||||
|
||||
@@ -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<Dialog> {
|
||||
public DialogEventHandler(DependencyManager dm) {
|
||||
super(dm);
|
||||
}
|
||||
|
||||
@InjectState
|
||||
private DialogState dialogState;
|
||||
|
||||
@@ -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<DroppedItemRerender> {
|
||||
public DroppedItemRerenderHandler(DependencyManager dm) {
|
||||
super(dm);
|
||||
}
|
||||
|
||||
@InjectDependency
|
||||
private EventManager eventManager;
|
||||
|
||||
|
||||
@@ -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<ExitEvent> {
|
||||
@InjectDependency
|
||||
private ScheduledTaskManager scheduledTaskManager;
|
||||
|
||||
public ExitEventHandler(DependencyManager dm) {
|
||||
super(dm);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(ExitEvent event) {
|
||||
threadManager.shutdownAll();
|
||||
|
||||
@@ -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<FullRedrawEvent
|
||||
@InjectState
|
||||
private TerminalState terminalState;
|
||||
|
||||
public FullRedrawEventHandler(DependencyManager dm) {
|
||||
super(dm);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(FullRedrawEvent event) {
|
||||
terminalState.getTerminalScreen().clear();
|
||||
|
||||
@@ -18,12 +18,8 @@ import cz.jzitnik.game.ResourceManager;
|
||||
import cz.jzitnik.states.RenderState;
|
||||
import cz.jzitnik.states.ScreenBuffer;
|
||||
import cz.jzitnik.states.TerminalState;
|
||||
import cz.jzitnik.ui.Inventory;
|
||||
import cz.jzitnik.ui.Stats;
|
||||
import cz.jzitnik.utils.DependencyManager;
|
||||
import cz.jzitnik.utils.GlobalIOHandlerRepository;
|
||||
import cz.jzitnik.utils.RerenderUtils;
|
||||
import cz.jzitnik.utils.UIRoomClickHandlerRepository;
|
||||
import cz.jzitnik.utils.events.AbstractEventHandler;
|
||||
import cz.jzitnik.utils.events.EventManager;
|
||||
import cz.jzitnik.utils.roomtasks.RoomTaskScheduler;
|
||||
@@ -59,10 +55,6 @@ public class FullRoomDrawHandler extends AbstractEventHandler<FullRoomDraw> {
|
||||
@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<FullRoomDraw> {
|
||||
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)));
|
||||
}
|
||||
|
||||
@@ -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<InventoryRere
|
||||
@InjectDependency
|
||||
private Inventory inventory;
|
||||
|
||||
public InventoryRerenderHandler(DependencyManager dm) {
|
||||
super(dm);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(InventoryRerender event) {
|
||||
inventory.renderInventoryRerender();
|
||||
|
||||
@@ -5,16 +5,11 @@ import cz.jzitnik.annotations.injectors.InjectDependency;
|
||||
import cz.jzitnik.annotations.injectors.InjectState;
|
||||
import cz.jzitnik.events.*;
|
||||
import cz.jzitnik.game.GameState;
|
||||
import cz.jzitnik.utils.DependencyManager;
|
||||
import cz.jzitnik.utils.GlobalIOHandlerRepository;
|
||||
import cz.jzitnik.utils.events.AbstractEventHandler;
|
||||
|
||||
@EventHandler(KeyboardPressEvent.class)
|
||||
public class KeyboardPressEventHandler extends AbstractEventHandler<KeyboardPressEvent> {
|
||||
public KeyboardPressEventHandler(DependencyManager dm) {
|
||||
super(dm);
|
||||
}
|
||||
|
||||
@InjectState
|
||||
private GameState gameState;
|
||||
|
||||
|
||||
@@ -20,10 +20,6 @@ import java.util.stream.Stream;
|
||||
|
||||
@EventHandler(MouseAction.class)
|
||||
public class MouseActionEventHandler extends AbstractEventHandler<MouseAction> {
|
||||
public MouseActionEventHandler(DependencyManager dm) {
|
||||
super(dm);
|
||||
}
|
||||
|
||||
@InjectDependency
|
||||
private EventManager eventManager;
|
||||
|
||||
@@ -39,6 +35,9 @@ public class MouseActionEventHandler extends AbstractEventHandler<MouseAction> {
|
||||
@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<MouseAction> {
|
||||
gameState.getPlayer().swing(playerConfig.getSwingTimeMs());
|
||||
|
||||
object.ifPresent(selectable -> {
|
||||
dm.inject(selectable);
|
||||
dependencyManager.inject(selectable);
|
||||
selectable.interact();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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<MouseMoveEvent> {
|
||||
public MouseMoveEventHandler(DependencyManager dm) {
|
||||
super(dm);
|
||||
}
|
||||
|
||||
private MouseMoveEvent lastEvent = new MouseMoveEvent(new MouseAction(MouseActionType.MOVE, 1, new TerminalPosition(0, 0)));
|
||||
|
||||
@InjectState
|
||||
|
||||
@@ -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<PlayerMoveEvent
|
||||
@InjectDependency
|
||||
private Stats stats;
|
||||
|
||||
public PlayerMoveEventHandler(DependencyManager dm) {
|
||||
super(dm);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(PlayerMoveEvent event) {
|
||||
if (renderState.isTerminalTooSmall()) {
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
package cz.jzitnik.events.handlers;
|
||||
|
||||
import cz.jzitnik.annotations.EventHandler;
|
||||
import cz.jzitnik.annotations.injectors.InjectDependency;
|
||||
import cz.jzitnik.annotations.injectors.InjectState;
|
||||
import cz.jzitnik.events.QuestionAnswerEvent;
|
||||
import cz.jzitnik.game.dialog.Dialog;
|
||||
import cz.jzitnik.game.dialog.OnEnd;
|
||||
import cz.jzitnik.states.DialogState;
|
||||
import cz.jzitnik.utils.DependencyManager;
|
||||
import cz.jzitnik.utils.events.AbstractEventHandler;
|
||||
import cz.jzitnik.utils.events.EventManager;
|
||||
|
||||
@EventHandler(QuestionAnswerEvent.class)
|
||||
public class QuestionAnswerEventHandler extends AbstractEventHandler<QuestionAnswerEvent> {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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<RenderStats> {
|
||||
@InjectDependency
|
||||
private Stats stats;
|
||||
|
||||
public RenderStatsHandler(DependencyManager dm) {
|
||||
super(dm);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(RenderStats event) {
|
||||
stats.rerender();
|
||||
|
||||
@@ -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<RerenderPart> {
|
||||
public RerenderPartHandler(DependencyManager dm) {
|
||||
super(dm);
|
||||
}
|
||||
|
||||
@InjectState
|
||||
private TerminalState terminalState;
|
||||
|
||||
|
||||
@@ -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<RoomChangeEvent
|
||||
@InjectDependency
|
||||
private RoomTaskScheduler roomTaskScheduler;
|
||||
|
||||
public RoomChangeEventHandler(DependencyManager dm) {
|
||||
super(dm);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(RoomChangeEvent event) {
|
||||
RoomCords playerCords = gameState.getPlayer().getPlayerCords();
|
||||
|
||||
@@ -11,7 +11,6 @@ import cz.jzitnik.states.ScreenBuffer;
|
||||
import cz.jzitnik.ui.pixels.AlphaPixel;
|
||||
import cz.jzitnik.ui.pixels.Empty;
|
||||
import cz.jzitnik.ui.pixels.Pixel;
|
||||
import cz.jzitnik.utils.DependencyManager;
|
||||
import cz.jzitnik.utils.events.AbstractEventHandler;
|
||||
import cz.jzitnik.utils.events.EventManager;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -19,10 +18,6 @@ import lombok.extern.slf4j.Slf4j;
|
||||
@Slf4j
|
||||
@EventHandler(TerminalResizeEvent.class)
|
||||
public class TerminalResizeEventHandler extends AbstractEventHandler<TerminalResizeEvent> {
|
||||
public TerminalResizeEventHandler(DependencyManager dm) {
|
||||
super(dm);
|
||||
}
|
||||
|
||||
@InjectDependency
|
||||
private EventManager eventManager;
|
||||
|
||||
|
||||
@@ -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<TerminalTooSmallEvent> {
|
||||
public TerminalTooSmallEventHandler(DependencyManager dm) {
|
||||
super(dm);
|
||||
}
|
||||
|
||||
@InjectState
|
||||
private TerminalState terminalState;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -1,13 +1,5 @@
|
||||
package cz.jzitnik.utils.events;
|
||||
|
||||
import cz.jzitnik.utils.DependencyManager;
|
||||
|
||||
public abstract class AbstractEventHandler<T> {
|
||||
protected final DependencyManager dm;
|
||||
|
||||
public AbstractEventHandler(DependencyManager dm) {
|
||||
this.dm = dm;
|
||||
}
|
||||
|
||||
public abstract void handle(T event);
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ public class EventManager extends Thread {
|
||||
for (var clazz : classes) {
|
||||
EventHandler eventHandler = clazz.getAnnotation(EventHandler.class);
|
||||
try {
|
||||
var instance = (AbstractEventHandler<? extends Event>) clazz.getDeclaredConstructor(DependencyManager.class).newInstance(dependencyManager);
|
||||
var instance = (AbstractEventHandler<? extends Event>) clazz.getDeclaredConstructor().newInstance();
|
||||
handlers.put(eventHandler.value(), instance);
|
||||
} catch (InstantiationException | IllegalAccessException | InvocationTargetException |
|
||||
NoSuchMethodException e) {
|
||||
|
||||
Reference in New Issue
Block a user