feat: Better full redraw

This commit is contained in:
2026-01-02 13:11:19 +01:00
parent 17d162bd76
commit 84f757a70e
3 changed files with 45 additions and 8 deletions

View File

@@ -0,0 +1,6 @@
package cz.jzitnik.events;
import cz.jzitnik.utils.events.Event;
public class FullRedrawEvent implements Event {
}

View File

@@ -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<FullRedrawEvent> {
@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));
}
}

View File

@@ -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<KeyboardPressEvent> {
public KeyboardPressEventHandler(DependencyManager dm) {
@@ -41,8 +36,7 @@ public class KeyboardPressEventHandler extends AbstractEventHandler<KeyboardPres
eventManager.emitEvent(new ExitEvent());
break;
case F5:
log.debug("Fully rerendering screen");
eventManager.emitEvent(new FullRoomDraw(true));
eventManager.emitEvent(new FullRedrawEvent());
break;
case Character:
switch (keyStroke.getCharacter()) {