From 84f757a70ec94492aa215f71d592e3dffe029f8f Mon Sep 17 00:00:00 2001 From: jzitnik-dev Date: Fri, 2 Jan 2026 13:11:19 +0100 Subject: [PATCH] feat: Better full redraw --- .../cz/jzitnik/events/FullRedrawEvent.java | 6 +++ .../handlers/FullRedrawEventHandler.java | 37 +++++++++++++++++++ .../handlers/KeyboardPressEventHandler.java | 10 +---- 3 files changed, 45 insertions(+), 8 deletions(-) create mode 100644 src/main/java/cz/jzitnik/events/FullRedrawEvent.java create mode 100644 src/main/java/cz/jzitnik/events/handlers/FullRedrawEventHandler.java diff --git a/src/main/java/cz/jzitnik/events/FullRedrawEvent.java b/src/main/java/cz/jzitnik/events/FullRedrawEvent.java new file mode 100644 index 0000000..745f928 --- /dev/null +++ b/src/main/java/cz/jzitnik/events/FullRedrawEvent.java @@ -0,0 +1,6 @@ +package cz.jzitnik.events; + +import cz.jzitnik.utils.events.Event; + +public class FullRedrawEvent implements Event { +} diff --git a/src/main/java/cz/jzitnik/events/handlers/FullRedrawEventHandler.java b/src/main/java/cz/jzitnik/events/handlers/FullRedrawEventHandler.java new file mode 100644 index 0000000..ecd3e69 --- /dev/null +++ b/src/main/java/cz/jzitnik/events/handlers/FullRedrawEventHandler.java @@ -0,0 +1,37 @@ +package cz.jzitnik.events.handlers; + +import com.googlecode.lanterna.screen.Screen; +import cz.jzitnik.annotations.EventHandler; +import cz.jzitnik.annotations.injectors.InjectDependency; +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; + +import java.io.IOException; + +@EventHandler(FullRedrawEvent.class) +public class FullRedrawEventHandler extends AbstractEventHandler { + @InjectDependency + private EventManager eventManager; + + @InjectState + private TerminalState terminalState; + + public FullRedrawEventHandler(DependencyManager dm) { + super(dm); + } + + @Override + public void handle(FullRedrawEvent event) { + terminalState.getTerminalScreen().clear(); + try { + terminalState.getTerminalScreen().refresh(Screen.RefreshType.COMPLETE); + } catch (IOException _) { + } + eventManager.emitEvent(new FullRoomDraw(true)); + } +} diff --git a/src/main/java/cz/jzitnik/events/handlers/KeyboardPressEventHandler.java b/src/main/java/cz/jzitnik/events/handlers/KeyboardPressEventHandler.java index 56dcb5c..4976253 100644 --- a/src/main/java/cz/jzitnik/events/handlers/KeyboardPressEventHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/KeyboardPressEventHandler.java @@ -4,17 +4,12 @@ import com.googlecode.lanterna.input.KeyStroke; import cz.jzitnik.annotations.EventHandler; import cz.jzitnik.annotations.injectors.InjectDependency; import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.events.ExitEvent; -import cz.jzitnik.events.FullRoomDraw; -import cz.jzitnik.events.KeyboardPressEvent; -import cz.jzitnik.events.PlayerMoveEvent; +import cz.jzitnik.events.*; import cz.jzitnik.game.GameState; import cz.jzitnik.utils.DependencyManager; import cz.jzitnik.utils.events.AbstractEventHandler; import cz.jzitnik.utils.events.EventManager; -import lombok.extern.slf4j.Slf4j; -@Slf4j @EventHandler(KeyboardPressEvent.class) public class KeyboardPressEventHandler extends AbstractEventHandler { public KeyboardPressEventHandler(DependencyManager dm) { @@ -41,8 +36,7 @@ public class KeyboardPressEventHandler extends AbstractEventHandler