From c7f2ba0cbdee4d8ebdd3dacb227b7d100df18547 Mon Sep 17 00:00:00 2001 From: jzitnik-dev Date: Mon, 15 Dec 2025 23:12:56 +0100 Subject: [PATCH] feat: Screens Different types of screens have been implemented. For now only ChestScreen. --- .../jzitnik/events/handlers/CliHandler.java | 3 +- .../handlers/KeyboardPressEventHandler.java | 2 +- .../handlers/MouseActionEventHandler.java | 1 + .../handlers/RoomChangeEventHandler.java | 2 +- .../handlers/TerminalResizeEventHandler.java | 10 +++- src/main/java/cz/jzitnik/game/Constants.java | 7 +++ src/main/java/cz/jzitnik/game/GameRoom.java | 39 +++++++++++++++- src/main/java/cz/jzitnik/game/GameSetup.java | 2 - .../java/cz/jzitnik/game/objects/Chest.java | 2 +- .../java/cz/jzitnik/screens/ChestScreen.java | 46 +++++++++++++++++-- src/main/java/cz/jzitnik/screens/Screen.java | 4 +- 11 files changed, 104 insertions(+), 14 deletions(-) create mode 100644 src/main/java/cz/jzitnik/game/Constants.java diff --git a/src/main/java/cz/jzitnik/events/handlers/CliHandler.java b/src/main/java/cz/jzitnik/events/handlers/CliHandler.java index 2fc3c39..75c41fa 100644 --- a/src/main/java/cz/jzitnik/events/handlers/CliHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/CliHandler.java @@ -5,6 +5,7 @@ import com.googlecode.lanterna.graphics.TextGraphics; import cz.jzitnik.annotations.EventHandler; import cz.jzitnik.annotations.injectors.InjectState; import cz.jzitnik.events.RerenderScreen; +import cz.jzitnik.game.Constants; import cz.jzitnik.states.ScreenBuffer; import cz.jzitnik.states.TerminalState; import cz.jzitnik.ui.pixels.Empty; @@ -42,7 +43,7 @@ public class CliHandler extends AbstractEventHandler { for (int y = start.getRow(); y <= end.getRow(); y++) { for (int x = start.getColumn(); x <= end.getColumn(); x++) { Pixel pixel = buffer[y][x]; - TextColor color = pixel.getClass().equals(Empty.class) ? new TextColor.RGB(4, 4, 16) : pixel.getColor(); + TextColor color = pixel.getClass().equals(Empty.class) ? Constants.DEFAULT_COLOR : pixel.getColor(); drawPixel(tg, x, y, color); } diff --git a/src/main/java/cz/jzitnik/events/handlers/KeyboardPressEventHandler.java b/src/main/java/cz/jzitnik/events/handlers/KeyboardPressEventHandler.java index ce70507..3c62cde 100644 --- a/src/main/java/cz/jzitnik/events/handlers/KeyboardPressEventHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/KeyboardPressEventHandler.java @@ -27,7 +27,7 @@ public class KeyboardPressEventHandler extends AbstractEventHandler { if (object.isEmpty()) return; ((Interactable) object.get()).interact(dm); + object.get().setSelected(false); } } } diff --git a/src/main/java/cz/jzitnik/events/handlers/RoomChangeEventHandler.java b/src/main/java/cz/jzitnik/events/handlers/RoomChangeEventHandler.java index 7a134b4..8d089f7 100644 --- a/src/main/java/cz/jzitnik/events/handlers/RoomChangeEventHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/RoomChangeEventHandler.java @@ -45,7 +45,7 @@ public class RoomChangeEventHandler extends AbstractEventHandler playerCords.updateCords(155, 60); case RIGHT -> playerCords.updateCords(30, 50); case TOP -> playerCords.updateCords(90, 110); - case BOTTOM -> playerCords.updateCords(85, 10); + case BOTTOM -> playerCords.updateCords(90, 10); } gameState.setCurrentRoom(newRoom); diff --git a/src/main/java/cz/jzitnik/events/handlers/TerminalResizeEventHandler.java b/src/main/java/cz/jzitnik/events/handlers/TerminalResizeEventHandler.java index 7e10c39..58b88ac 100644 --- a/src/main/java/cz/jzitnik/events/handlers/TerminalResizeEventHandler.java +++ b/src/main/java/cz/jzitnik/events/handlers/TerminalResizeEventHandler.java @@ -6,6 +6,7 @@ import cz.jzitnik.annotations.injectors.InjectDependency; import cz.jzitnik.annotations.injectors.InjectState; import cz.jzitnik.events.FullRoomDraw; import cz.jzitnik.events.TerminalResizeEvent; +import cz.jzitnik.game.GameState; import cz.jzitnik.states.ScreenBuffer; import cz.jzitnik.ui.pixels.Empty; import cz.jzitnik.ui.pixels.Pixel; @@ -27,6 +28,9 @@ public class TerminalResizeEventHandler extends AbstractEventHandler