feat: Better full redraw
This commit is contained in:
6
src/main/java/cz/jzitnik/events/FullRedrawEvent.java
Normal file
6
src/main/java/cz/jzitnik/events/FullRedrawEvent.java
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package cz.jzitnik.events;
|
||||||
|
|
||||||
|
import cz.jzitnik.utils.events.Event;
|
||||||
|
|
||||||
|
public class FullRedrawEvent implements Event {
|
||||||
|
}
|
||||||
@@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,17 +4,12 @@ import com.googlecode.lanterna.input.KeyStroke;
|
|||||||
import cz.jzitnik.annotations.EventHandler;
|
import cz.jzitnik.annotations.EventHandler;
|
||||||
import cz.jzitnik.annotations.injectors.InjectDependency;
|
import cz.jzitnik.annotations.injectors.InjectDependency;
|
||||||
import cz.jzitnik.annotations.injectors.InjectState;
|
import cz.jzitnik.annotations.injectors.InjectState;
|
||||||
import cz.jzitnik.events.ExitEvent;
|
import cz.jzitnik.events.*;
|
||||||
import cz.jzitnik.events.FullRoomDraw;
|
|
||||||
import cz.jzitnik.events.KeyboardPressEvent;
|
|
||||||
import cz.jzitnik.events.PlayerMoveEvent;
|
|
||||||
import cz.jzitnik.game.GameState;
|
import cz.jzitnik.game.GameState;
|
||||||
import cz.jzitnik.utils.DependencyManager;
|
import cz.jzitnik.utils.DependencyManager;
|
||||||
import cz.jzitnik.utils.events.AbstractEventHandler;
|
import cz.jzitnik.utils.events.AbstractEventHandler;
|
||||||
import cz.jzitnik.utils.events.EventManager;
|
import cz.jzitnik.utils.events.EventManager;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
|
|
||||||
@Slf4j
|
|
||||||
@EventHandler(KeyboardPressEvent.class)
|
@EventHandler(KeyboardPressEvent.class)
|
||||||
public class KeyboardPressEventHandler extends AbstractEventHandler<KeyboardPressEvent> {
|
public class KeyboardPressEventHandler extends AbstractEventHandler<KeyboardPressEvent> {
|
||||||
public KeyboardPressEventHandler(DependencyManager dm) {
|
public KeyboardPressEventHandler(DependencyManager dm) {
|
||||||
@@ -41,8 +36,7 @@ public class KeyboardPressEventHandler extends AbstractEventHandler<KeyboardPres
|
|||||||
eventManager.emitEvent(new ExitEvent());
|
eventManager.emitEvent(new ExitEvent());
|
||||||
break;
|
break;
|
||||||
case F5:
|
case F5:
|
||||||
log.debug("Fully rerendering screen");
|
eventManager.emitEvent(new FullRedrawEvent());
|
||||||
eventManager.emitEvent(new FullRoomDraw(true));
|
|
||||||
break;
|
break;
|
||||||
case Character:
|
case Character:
|
||||||
switch (keyStroke.getCharacter()) {
|
switch (keyStroke.getCharacter()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user