From bfcce054d537a1b9fabd2a8c57c32f75fa05f65e Mon Sep 17 00:00:00 2001 From: jzitnik-dev Date: Fri, 30 Jan 2026 13:14:56 +0100 Subject: [PATCH 01/14] chore: Starting setting up multiplayer --- .idea/compiler.xml | 23 +++ .idea/encodings.xml | 6 + .idea/jarRepositories.xml | 25 +++ .idea/misc.xml | 16 +- common/.gitignore | 39 ++++ common/.idea/.gitignore | 3 + common/.idea/encodings.xml | 7 + common/.idea/misc.xml | 14 ++ common/.idea/vcs.xml | 6 + common/pom.xml | 28 +++ .gitignore => game/.gitignore | 0 game/.idea/.gitignore | 3 + game/.idea/encodings.xml | 7 + game/.idea/misc.xml | 26 +++ game/.idea/vcs.xml | 6 + game/pom.xml | 183 ++++++++++++++++++ .../src/main/java/cz/jzitnik/client}/Cli.java | 20 +- .../main/java/cz/jzitnik/client}/Game.java | 14 +- .../main/java/cz/jzitnik/client}/Main.java | 2 +- .../jzitnik/client}/annotations/Config.java | 2 +- .../client}/annotations/Dependency.java | 2 +- .../client}/annotations/EventHandler.java | 4 +- .../jzitnik/client}/annotations/PostInit.java | 2 +- .../client}/annotations/ScheduledTask.java | 2 +- .../cz/jzitnik/client}/annotations/State.java | 2 +- .../client}/annotations/ThreadRegistry.java | 2 +- .../annotations/injectors/InjectConfig.java | 2 +- .../injectors/InjectDependency.java | 2 +- .../annotations/injectors/InjectState.java | 2 +- .../annotations/ui/KeyboardPressHandler.java | 2 +- .../annotations/ui/KeyboardPressHandlers.java | 2 +- .../client}/annotations/ui/MouseHandler.java | 2 +- .../annotations/ui/MouseHandlerType.java | 2 +- .../client}/annotations/ui/Render.java | 2 +- .../cz/jzitnik/client}/annotations/ui/UI.java | 2 +- .../cz/jzitnik/client}/config/CoreLogic.java | 5 +- .../cz/jzitnik/client}/config/Debugging.java | 4 +- .../client}/config/MicrophoneConfig.java | 4 +- .../jzitnik/client}/config/PlayerConfig.java | 6 +- .../client}/config/ThreadPoolConfig.java | 5 +- .../client/events/DroppedItemRerender.java | 7 + .../cz/jzitnik/client}/events/ExitEvent.java | 4 +- .../client/events/FullRedrawEvent.java | 6 + .../jzitnik/client}/events/FullRoomDraw.java | 5 +- .../client/events/InventoryRerender.java | 6 + .../client}/events/KeyboardPressEvent.java | 4 +- .../jzitnik/client}/events/MouseAction.java | 4 +- .../client}/events/MouseMoveEvent.java | 4 +- .../client}/events/PlayerMoveEvent.java | 4 +- .../cz/jzitnik/client/events/RenderStats.java | 6 + .../jzitnik/client}/events/RerenderPart.java | 4 +- .../client}/events/RerenderScreen.java | 6 +- .../client/events/RoomChangeEvent.java | 7 + .../client}/events/TerminalResizeEvent.java | 4 +- .../client/events/TerminalTooSmallEvent.java | 6 + .../client}/events/handlers/CliHandler.java | 26 +-- .../events/handlers/DialogEventHandler.java | 34 ++-- .../handlers/DroppedItemRerenderHandler.java | 16 +- .../events/handlers/ExitEventHandler.java | 20 +- .../handlers/FullRedrawEventHandler.java | 18 +- .../events/handlers/FullRoomDrawHandler.java | 42 ++-- .../handlers/InventoryRerenderHandler.java | 16 +- .../handlers/KeyboardPressEventHandler.java | 16 +- .../handlers/MouseActionEventHandler.java | 30 +-- .../handlers/MouseMoveEventHandler.java | 42 ++-- .../handlers/PlayerMoveEventHandler.java | 50 ++--- .../events/handlers/RenderStatsHandler.java | 16 +- .../events/handlers/RerenderPartHandler.java | 34 ++-- .../handlers/RoomChangeEventHandler.java | 24 +-- .../handlers/TerminalResizeEventHandler.java | 26 +-- .../TerminalTooSmallEventHandler.java | 12 +- .../cz/jzitnik/client}/game/Constants.java | 2 +- .../cz/jzitnik/client}/game/GameRoom.java | 12 +- .../cz/jzitnik/client}/game/GameRoomPart.java | 5 +- .../cz/jzitnik/client}/game/GameState.java | 10 +- .../java/cz/jzitnik/client}/game/Player.java | 20 +- .../jzitnik/client}/game/ResourceManager.java | 6 +- .../jzitnik/client}/game/dialog/Dialog.java | 4 +- .../cz/jzitnik/client}/game/dialog/OnEnd.java | 2 +- .../InvalidCoordinatesException.java | 2 +- .../jzitnik/client}/game/items/GameItem.java | 8 +- .../game/items/types/InteractableItem.java | 6 +- .../client}/game/items/types/ItemType.java | 6 +- .../client}/game/items/types/food/Food.java | 16 +- .../types/interfaces/WeaponInterface.java | 2 +- .../game/items/types/weapons/Sword.java | 2 +- .../game/items/types/weapons/Weapon.java | 6 +- .../jzitnik/client}/game/mobs/DialogMob.java | 18 +- .../client}/game/mobs/HittableMob.java | 22 +-- .../client}/game/mobs/HittableMobDrops.java | 24 +-- .../client}/game/mobs/HittableMobNoDrops.java | 10 +- .../cz/jzitnik/client}/game/mobs/Mob.java | 16 +- .../tasks/BlindMobFollowingPlayerTask.java | 28 +-- .../mobs/tasks/EnemyPlayerAttackingTask.java | 18 +- .../mobs/tasks/MobFollowingPlayerTask.java | 38 ++-- .../client}/game/mobs/tasks/MobRoomTask.java | 6 +- .../game/mobs/tasks/utils/AStarAlg.java | 6 +- .../jzitnik/client}/game/objects/Chest.java | 52 +++-- .../client}/game/objects/DroppedItem.java | 24 ++- .../client}/game/objects/GameObject.java | 8 +- .../client}/game/objects/Interactable.java | 2 +- .../client}/game/objects/UIClickHandler.java | 4 +- .../jzitnik/client}/game/setup/GameSetup.java | 18 +- .../game/setup/scenes/GameMenuScene.java | 26 +-- .../client}/game/setup/scenes/IntroScene.java | 10 +- .../client}/game/utils/Renderable.java | 2 +- .../jzitnik/client}/game/utils/RoomCords.java | 4 +- .../client}/game/utils/Selectable.java | 4 +- .../cz/jzitnik/client}/screens/Screen.java | 6 +- .../client}/screens/VideoPlayScreen.java | 10 +- .../screens/scenes/BasicImageScene.java | 16 +- .../screens/scenes/BasicVideoScene.java | 8 +- .../jzitnik/client}/screens/scenes/Scene.java | 20 +- .../screens/scenes/VideoSceneWithAudio.java | 10 +- .../cz/jzitnik/client}/sound/SoundPlayer.java | 2 +- .../jzitnik/client}/states/DialogState.java | 6 +- .../client}/states/MicrophoneState.java | 4 +- .../jzitnik/client/states/PlayerConfig.java | 8 + .../client}/states/PlayerMovementState.java | 4 +- .../jzitnik/client}/states/RenderState.java | 4 +- .../jzitnik/client}/states/RunningState.java | 4 +- .../jzitnik/client}/states/ScreenBuffer.java | 8 +- .../jzitnik/client}/states/TerminalState.java | 4 +- .../client}/tasks/StaminaIncreaseTask.java | 26 +-- .../client}/threads/MicrophoneThread.java | 10 +- .../java/cz/jzitnik/client}/ui/DialogUI.java | 38 ++-- .../jzitnik/client}/ui/GlobalShortcuts.java | 20 +- .../java/cz/jzitnik/client}/ui/Inventory.java | 54 +++--- .../java/cz/jzitnik/client}/ui/Stats.java | 28 +-- .../jzitnik/client}/ui/pixels/AlphaPixel.java | 2 +- .../client}/ui/pixels/ColoredPixel.java | 2 +- .../cz/jzitnik/client}/ui/pixels/Empty.java | 2 +- .../cz/jzitnik/client}/ui/pixels/Pixel.java | 2 +- .../cz/jzitnik/client}/ui/utils/Grid.java | 6 +- .../client}/utils/DependencyManager.java | 14 +- .../utils/GlobalIOHandlerRepository.java | 18 +- .../jzitnik/client}/utils/RerenderUtils.java | 28 +-- .../utils/ScheduledSerializedTaskManager.java | 6 +- .../client}/utils/ScheduledTaskManager.java | 10 +- .../client}/utils/ShutdownableThread.java | 2 +- .../jzitnik/client}/utils/StateManager.java | 6 +- .../jzitnik/client}/utils/TextRenderer.java | 14 +- .../jzitnik/client}/utils/ThreadManager.java | 6 +- .../utils/UIRoomClickHandlerRepository.java | 18 +- .../utils/events/AbstractEventHandler.java | 2 +- .../cz/jzitnik/client/utils/events/Event.java | 4 + .../client}/utils/events/EventManager.java | 16 +- .../client}/utils/roomtasks/RoomTask.java | 2 +- .../utils/roomtasks/RoomTaskScheduler.java | 18 +- {src => game/src}/main/resources/audio.ogg | Bin .../src}/main/resources/audio/menu.ogg | Bin .../main/resources/config/core_logic.yaml | 0 .../src}/main/resources/config/debugging.yaml | 0 .../main/resources/config/microphone.yaml | 0 .../src}/main/resources/config/player.yaml | 0 .../src}/main/resources/config/threads.yaml | 0 .../src}/main/resources/fonts/default.ttf | Bin {src => game/src}/main/resources/logback.xml | 0 {src => game/src}/main/resources/menu.png | Bin .../src}/main/resources/setup/player.yaml | 0 .../src}/main/resources/setup/rooms.yaml | 2 +- .../src}/main/resources/textures/chest.png | Bin .../main/resources/textures/food/apple.png | Bin .../main/resources/textures/player/back.png | Bin .../main/resources/textures/player/front.png | Bin .../main/resources/textures/player/left.png | Bin .../main/resources/textures/player/right.png | Bin .../src}/main/resources/textures/rooms/1.png | Bin .../src}/main/resources/textures/rooms/2.png | Bin .../src}/main/resources/textures/rooms/3.png | Bin .../src}/main/resources/textures/rooms/4.png | Bin .../main/resources/textures/rooms/doors.png | Bin .../main/resources/textures/rooms/frozen.png | Bin .../resources/textures/tools/wooden_sword.png | Bin .../src}/main/resources/textures/ui/heart.png | Bin .../main/resources/textures/ui/stamina.png | Bin {src => game/src}/main/resources/video.mp4 | Bin pom.xml | 180 ++--------------- server/.gitignore | 39 ++++ server/.idea/.gitignore | 3 + server/.idea/encodings.xml | 7 + server/.idea/misc.xml | 14 ++ server/.idea/vcs.xml | 6 + server/pom.xml | 22 +++ .../src/main/java/cz/jzitnik/server/Main.java | 7 + .../jzitnik/events/DroppedItemRerender.java | 7 - .../cz/jzitnik/events/FullRedrawEvent.java | 6 - .../cz/jzitnik/events/InventoryRerender.java | 6 - .../java/cz/jzitnik/events/RenderStats.java | 6 - .../cz/jzitnik/events/RoomChangeEvent.java | 7 - .../jzitnik/events/TerminalTooSmallEvent.java | 6 - .../java/cz/jzitnik/states/PlayerConfig.java | 8 - .../java/cz/jzitnik/utils/events/Event.java | 4 - 193 files changed, 1263 insertions(+), 969 deletions(-) create mode 100644 .idea/compiler.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 common/.gitignore create mode 100644 common/.idea/.gitignore create mode 100644 common/.idea/encodings.xml create mode 100644 common/.idea/misc.xml create mode 100644 common/.idea/vcs.xml create mode 100644 common/pom.xml rename .gitignore => game/.gitignore (100%) create mode 100644 game/.idea/.gitignore create mode 100644 game/.idea/encodings.xml create mode 100644 game/.idea/misc.xml create mode 100644 game/.idea/vcs.xml create mode 100644 game/pom.xml rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/Cli.java (80%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/Game.java (69%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/Main.java (87%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/annotations/Config.java (87%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/annotations/Dependency.java (89%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/annotations/EventHandler.java (77%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/annotations/PostInit.java (86%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/annotations/ScheduledTask.java (89%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/annotations/State.java (86%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/annotations/ThreadRegistry.java (87%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/annotations/injectors/InjectConfig.java (84%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/annotations/injectors/InjectDependency.java (84%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/annotations/injectors/InjectState.java (84%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/annotations/ui/KeyboardPressHandler.java (88%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/annotations/ui/KeyboardPressHandlers.java (87%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/annotations/ui/MouseHandler.java (87%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/annotations/ui/MouseHandlerType.java (60%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/annotations/ui/Render.java (85%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/annotations/ui/UI.java (85%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/config/CoreLogic.java (81%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/config/Debugging.java (89%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/config/MicrophoneConfig.java (82%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/config/PlayerConfig.java (90%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/config/ThreadPoolConfig.java (85%) create mode 100644 game/src/main/java/cz/jzitnik/client/events/DroppedItemRerender.java rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/ExitEvent.java (52%) create mode 100644 game/src/main/java/cz/jzitnik/client/events/FullRedrawEvent.java rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/FullRoomDraw.java (73%) create mode 100644 game/src/main/java/cz/jzitnik/client/events/InventoryRerender.java rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/KeyboardPressEvent.java (73%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/MouseAction.java (86%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/MouseMoveEvent.java (68%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/PlayerMoveEvent.java (73%) create mode 100644 game/src/main/java/cz/jzitnik/client/events/RenderStats.java rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/RerenderPart.java (75%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/RerenderScreen.java (93%) create mode 100644 game/src/main/java/cz/jzitnik/client/events/RoomChangeEvent.java rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/TerminalResizeEvent.java (73%) create mode 100644 game/src/main/java/cz/jzitnik/client/events/TerminalTooSmallEvent.java rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/handlers/CliHandler.java (85%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/handlers/DialogEventHandler.java (90%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/handlers/DroppedItemRerenderHandler.java (64%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/handlers/ExitEventHandler.java (55%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/handlers/FullRedrawEventHandler.java (57%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/handlers/FullRoomDrawHandler.java (76%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/handlers/InventoryRerenderHandler.java (64%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/handlers/KeyboardPressEventHandler.java (55%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/handlers/MouseActionEventHandler.java (73%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/handlers/MouseMoveEventHandler.java (86%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/handlers/PlayerMoveEventHandler.java (84%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/handlers/RenderStatsHandler.java (60%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/handlers/RerenderPartHandler.java (68%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/handlers/RoomChangeEventHandler.java (73%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/handlers/TerminalResizeEventHandler.java (69%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/events/handlers/TerminalTooSmallEventHandler.java (85%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/Constants.java (82%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/GameRoom.java (89%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/GameRoomPart.java (91%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/GameState.java (73%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/Player.java (90%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/ResourceManager.java (93%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/dialog/Dialog.java (79%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/dialog/OnEnd.java (88%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/exceptions/InvalidCoordinatesException.java (83%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/items/GameItem.java (78%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/items/types/InteractableItem.java (59%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/items/types/ItemType.java (72%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/items/types/food/Food.java (69%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/items/types/interfaces/WeaponInterface.java (53%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/items/types/weapons/Sword.java (84%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/items/types/weapons/Weapon.java (66%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/mobs/DialogMob.java (60%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/mobs/HittableMob.java (85%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/mobs/HittableMobDrops.java (82%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/mobs/HittableMobNoDrops.java (76%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/mobs/Mob.java (79%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/mobs/tasks/BlindMobFollowingPlayerTask.java (73%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/mobs/tasks/EnemyPlayerAttackingTask.java (79%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/mobs/tasks/MobFollowingPlayerTask.java (81%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/mobs/tasks/MobRoomTask.java (84%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/mobs/tasks/utils/AStarAlg.java (96%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/objects/Chest.java (87%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/objects/DroppedItem.java (63%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/objects/GameObject.java (81%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/objects/Interactable.java (58%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/objects/UIClickHandler.java (76%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/setup/GameSetup.java (74%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/setup/scenes/GameMenuScene.java (75%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/setup/scenes/IntroScene.java (61%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/utils/Renderable.java (73%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/utils/RoomCords.java (95%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/game/utils/Selectable.java (75%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/screens/Screen.java (61%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/screens/VideoPlayScreen.java (95%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/screens/scenes/BasicImageScene.java (87%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/screens/scenes/BasicVideoScene.java (61%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/screens/scenes/Scene.java (84%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/screens/scenes/VideoSceneWithAudio.java (78%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/sound/SoundPlayer.java (99%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/states/DialogState.java (60%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/states/MicrophoneState.java (65%) create mode 100644 game/src/main/java/cz/jzitnik/client/states/PlayerConfig.java rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/states/PlayerMovementState.java (70%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/states/RenderState.java (70%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/states/RunningState.java (56%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/states/ScreenBuffer.java (53%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/states/TerminalState.java (76%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/tasks/StaminaIncreaseTask.java (76%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/threads/MicrophoneThread.java (88%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/ui/DialogUI.java (86%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/ui/GlobalShortcuts.java (63%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/ui/Inventory.java (92%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/ui/Stats.java (84%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/ui/pixels/AlphaPixel.java (89%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/ui/pixels/ColoredPixel.java (87%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/ui/pixels/Empty.java (73%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/ui/pixels/Pixel.java (85%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/ui/utils/Grid.java (98%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/utils/DependencyManager.java (95%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/utils/GlobalIOHandlerRepository.java (92%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/utils/RerenderUtils.java (93%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/utils/ScheduledSerializedTaskManager.java (96%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/utils/ScheduledTaskManager.java (91%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/utils/ShutdownableThread.java (79%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/utils/StateManager.java (93%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/utils/TextRenderer.java (95%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/utils/ThreadManager.java (90%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/utils/UIRoomClickHandlerRepository.java (90%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/utils/events/AbstractEventHandler.java (69%) create mode 100644 game/src/main/java/cz/jzitnik/client/utils/events/Event.java rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/utils/events/EventManager.java (90%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/utils/roomtasks/RoomTask.java (89%) rename {src/main/java/cz/jzitnik => game/src/main/java/cz/jzitnik/client}/utils/roomtasks/RoomTaskScheduler.java (84%) rename {src => game/src}/main/resources/audio.ogg (100%) rename {src => game/src}/main/resources/audio/menu.ogg (100%) rename {src => game/src}/main/resources/config/core_logic.yaml (100%) rename {src => game/src}/main/resources/config/debugging.yaml (100%) rename {src => game/src}/main/resources/config/microphone.yaml (100%) rename {src => game/src}/main/resources/config/player.yaml (100%) rename {src => game/src}/main/resources/config/threads.yaml (100%) rename {src => game/src}/main/resources/fonts/default.ttf (100%) rename {src => game/src}/main/resources/logback.xml (100%) rename {src => game/src}/main/resources/menu.png (100%) rename {src => game/src}/main/resources/setup/player.yaml (100%) rename {src => game/src}/main/resources/setup/rooms.yaml (99%) rename {src => game/src}/main/resources/textures/chest.png (100%) rename {src => game/src}/main/resources/textures/food/apple.png (100%) rename {src => game/src}/main/resources/textures/player/back.png (100%) rename {src => game/src}/main/resources/textures/player/front.png (100%) rename {src => game/src}/main/resources/textures/player/left.png (100%) rename {src => game/src}/main/resources/textures/player/right.png (100%) rename {src => game/src}/main/resources/textures/rooms/1.png (100%) rename {src => game/src}/main/resources/textures/rooms/2.png (100%) rename {src => game/src}/main/resources/textures/rooms/3.png (100%) rename {src => game/src}/main/resources/textures/rooms/4.png (100%) rename {src => game/src}/main/resources/textures/rooms/doors.png (100%) rename {src => game/src}/main/resources/textures/rooms/frozen.png (100%) rename {src => game/src}/main/resources/textures/tools/wooden_sword.png (100%) rename {src => game/src}/main/resources/textures/ui/heart.png (100%) rename {src => game/src}/main/resources/textures/ui/stamina.png (100%) rename {src => game/src}/main/resources/video.mp4 (100%) create mode 100644 server/.gitignore create mode 100644 server/.idea/.gitignore create mode 100644 server/.idea/encodings.xml create mode 100644 server/.idea/misc.xml create mode 100644 server/.idea/vcs.xml create mode 100644 server/pom.xml create mode 100644 server/src/main/java/cz/jzitnik/server/Main.java delete mode 100644 src/main/java/cz/jzitnik/events/DroppedItemRerender.java delete mode 100644 src/main/java/cz/jzitnik/events/FullRedrawEvent.java delete mode 100644 src/main/java/cz/jzitnik/events/InventoryRerender.java delete mode 100644 src/main/java/cz/jzitnik/events/RenderStats.java delete mode 100644 src/main/java/cz/jzitnik/events/RoomChangeEvent.java delete mode 100644 src/main/java/cz/jzitnik/events/TerminalTooSmallEvent.java delete mode 100644 src/main/java/cz/jzitnik/states/PlayerConfig.java delete mode 100644 src/main/java/cz/jzitnik/utils/events/Event.java diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..5c84731 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml index aa00ffa..fd66ed6 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -1,6 +1,12 @@ + + + + + + diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..09fe16c --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 3202223..86993b2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,17 +1,5 @@ - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/common/.gitignore b/common/.gitignore new file mode 100644 index 0000000..480bdf5 --- /dev/null +++ b/common/.gitignore @@ -0,0 +1,39 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ +.kotlin + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/common/.idea/.gitignore b/common/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/common/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/common/.idea/encodings.xml b/common/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/common/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/common/.idea/misc.xml b/common/.idea/misc.xml new file mode 100644 index 0000000..4878ef2 --- /dev/null +++ b/common/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/common/.idea/vcs.xml b/common/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/common/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/common/pom.xml b/common/pom.xml new file mode 100644 index 0000000..7303d3b --- /dev/null +++ b/common/pom.xml @@ -0,0 +1,28 @@ + + + 4.0.0 + + + cz.jzitnik + game-parent + 1.0-SNAPSHOT + + + common + + + + tools.jackson.core + jackson-databind + 3.0.4 + + + + tools.jackson.dataformat + jackson-dataformat-yaml + 3.0.4 + + + diff --git a/.gitignore b/game/.gitignore similarity index 100% rename from .gitignore rename to game/.gitignore diff --git a/game/.idea/.gitignore b/game/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/game/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/game/.idea/encodings.xml b/game/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/game/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/game/.idea/misc.xml b/game/.idea/misc.xml new file mode 100644 index 0000000..3202223 --- /dev/null +++ b/game/.idea/misc.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/game/.idea/vcs.xml b/game/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/game/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/game/pom.xml b/game/pom.xml new file mode 100644 index 0000000..759b5da --- /dev/null +++ b/game/pom.xml @@ -0,0 +1,183 @@ + + + 4.0.0 + + + cz.jzitnik + game-parent + 1.0-SNAPSHOT + + + game + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + + + org.projectlombok + lombok + 1.18.38 + + + 25 + 25 + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.1 + + + package + + shade + + + + + + + cz.jzitnik.client.Main + + + false + false + + + + + org.codehaus.mojo + exec-maven-plugin + 3.1.0 + + + + java + + + + + cz.jzitnik.client.Main + compile + + + + + + + + + be.0110.repo-releases + 0110.be repository + https://mvn.0110.be/releases + + + + + + cz.jzitnik + common + 1.0-SNAPSHOT + + + org.projectlombok + lombok + 1.18.42 + provided + + + + org.reflections + reflections + 0.10.2 + + + + com.google.guava + guava + 33.5.0-jre + + + + tools.jackson.core + jackson-databind + 3.0.4 + + + + tools.jackson.dataformat + jackson-dataformat-yaml + 3.0.4 + + + + org.junit.jupiter + junit-jupiter + 6.0.2 + + + + org.junit.jupiter + junit-jupiter-api + 6.0.2 + test + + + + org.slf4j + slf4j-api + 2.0.17 + + + + ch.qos.logback + logback-classic + 1.5.25 + + + + com.github.trilarion + java-vorbis-support + 1.2.1 + + + + com.googlecode.lanterna + lanterna + 3.1.3 + + + + org.bytedeco + javacv-platform + 1.5.12 + + + + org.bytedeco + ffmpeg-platform + 7.1.1-1.5.12 + + + + be.tarsos.dsp + core + 2.5 + + + + be.tarsos.dsp + jvm + 2.5 + + + diff --git a/src/main/java/cz/jzitnik/Cli.java b/game/src/main/java/cz/jzitnik/client/Cli.java similarity index 80% rename from src/main/java/cz/jzitnik/Cli.java rename to game/src/main/java/cz/jzitnik/client/Cli.java index 8b4aa52..897412f 100644 --- a/src/main/java/cz/jzitnik/Cli.java +++ b/game/src/main/java/cz/jzitnik/client/Cli.java @@ -1,18 +1,18 @@ -package cz.jzitnik; +package cz.jzitnik.client; import com.googlecode.lanterna.input.KeyStroke; import com.googlecode.lanterna.screen.TerminalScreen; import com.googlecode.lanterna.terminal.DefaultTerminalFactory; import com.googlecode.lanterna.terminal.MouseCaptureMode; -import cz.jzitnik.annotations.Dependency; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.events.KeyboardPressEvent; -import cz.jzitnik.events.MouseAction; -import cz.jzitnik.events.TerminalResizeEvent; -import cz.jzitnik.states.RunningState; -import cz.jzitnik.states.TerminalState; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.KeyboardPressEvent; +import cz.jzitnik.client.events.MouseAction; +import cz.jzitnik.client.events.TerminalResizeEvent; +import cz.jzitnik.client.states.RunningState; +import cz.jzitnik.client.states.TerminalState; +import cz.jzitnik.client.utils.events.EventManager; import lombok.extern.slf4j.Slf4j; import java.io.IOException; diff --git a/src/main/java/cz/jzitnik/Game.java b/game/src/main/java/cz/jzitnik/client/Game.java similarity index 69% rename from src/main/java/cz/jzitnik/Game.java rename to game/src/main/java/cz/jzitnik/client/Game.java index 1e26c6d..d6601e5 100644 --- a/src/main/java/cz/jzitnik/Game.java +++ b/game/src/main/java/cz/jzitnik/client/Game.java @@ -1,11 +1,11 @@ -package cz.jzitnik; +package cz.jzitnik.client; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.game.setup.GameSetup; -import cz.jzitnik.utils.DependencyManager; -import cz.jzitnik.utils.GlobalIOHandlerRepository; -import cz.jzitnik.utils.ScheduledTaskManager; -import cz.jzitnik.utils.ThreadManager; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.game.setup.GameSetup; +import cz.jzitnik.client.utils.DependencyManager; +import cz.jzitnik.client.utils.GlobalIOHandlerRepository; +import cz.jzitnik.client.utils.ScheduledTaskManager; +import cz.jzitnik.client.utils.ThreadManager; import org.reflections.Reflections; import java.io.IOException; diff --git a/src/main/java/cz/jzitnik/Main.java b/game/src/main/java/cz/jzitnik/client/Main.java similarity index 87% rename from src/main/java/cz/jzitnik/Main.java rename to game/src/main/java/cz/jzitnik/client/Main.java index a649b6d..41515de 100644 --- a/src/main/java/cz/jzitnik/Main.java +++ b/game/src/main/java/cz/jzitnik/client/Main.java @@ -1,4 +1,4 @@ -package cz.jzitnik; +package cz.jzitnik.client; // events/handlers/MouseMoveEventHandler.java diff --git a/src/main/java/cz/jzitnik/annotations/Config.java b/game/src/main/java/cz/jzitnik/client/annotations/Config.java similarity index 87% rename from src/main/java/cz/jzitnik/annotations/Config.java rename to game/src/main/java/cz/jzitnik/client/annotations/Config.java index 163c563..882f382 100644 --- a/src/main/java/cz/jzitnik/annotations/Config.java +++ b/game/src/main/java/cz/jzitnik/client/annotations/Config.java @@ -1,4 +1,4 @@ -package cz.jzitnik.annotations; +package cz.jzitnik.client.annotations; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/src/main/java/cz/jzitnik/annotations/Dependency.java b/game/src/main/java/cz/jzitnik/client/annotations/Dependency.java similarity index 89% rename from src/main/java/cz/jzitnik/annotations/Dependency.java rename to game/src/main/java/cz/jzitnik/client/annotations/Dependency.java index 87ed5a5..288c601 100644 --- a/src/main/java/cz/jzitnik/annotations/Dependency.java +++ b/game/src/main/java/cz/jzitnik/client/annotations/Dependency.java @@ -1,4 +1,4 @@ -package cz.jzitnik.annotations; +package cz.jzitnik.client.annotations; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/src/main/java/cz/jzitnik/annotations/EventHandler.java b/game/src/main/java/cz/jzitnik/client/annotations/EventHandler.java similarity index 77% rename from src/main/java/cz/jzitnik/annotations/EventHandler.java rename to game/src/main/java/cz/jzitnik/client/annotations/EventHandler.java index e9c7d2c..79bdc30 100644 --- a/src/main/java/cz/jzitnik/annotations/EventHandler.java +++ b/game/src/main/java/cz/jzitnik/client/annotations/EventHandler.java @@ -1,6 +1,6 @@ -package cz.jzitnik.annotations; +package cz.jzitnik.client.annotations; -import cz.jzitnik.utils.events.Event; +import cz.jzitnik.client.utils.events.Event; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/src/main/java/cz/jzitnik/annotations/PostInit.java b/game/src/main/java/cz/jzitnik/client/annotations/PostInit.java similarity index 86% rename from src/main/java/cz/jzitnik/annotations/PostInit.java rename to game/src/main/java/cz/jzitnik/client/annotations/PostInit.java index 7861229..2998554 100644 --- a/src/main/java/cz/jzitnik/annotations/PostInit.java +++ b/game/src/main/java/cz/jzitnik/client/annotations/PostInit.java @@ -1,4 +1,4 @@ -package cz.jzitnik.annotations; +package cz.jzitnik.client.annotations; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/src/main/java/cz/jzitnik/annotations/ScheduledTask.java b/game/src/main/java/cz/jzitnik/client/annotations/ScheduledTask.java similarity index 89% rename from src/main/java/cz/jzitnik/annotations/ScheduledTask.java rename to game/src/main/java/cz/jzitnik/client/annotations/ScheduledTask.java index f60c113..9856180 100644 --- a/src/main/java/cz/jzitnik/annotations/ScheduledTask.java +++ b/game/src/main/java/cz/jzitnik/client/annotations/ScheduledTask.java @@ -1,4 +1,4 @@ -package cz.jzitnik.annotations; +package cz.jzitnik.client.annotations; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/src/main/java/cz/jzitnik/annotations/State.java b/game/src/main/java/cz/jzitnik/client/annotations/State.java similarity index 86% rename from src/main/java/cz/jzitnik/annotations/State.java rename to game/src/main/java/cz/jzitnik/client/annotations/State.java index bf23ec3..0d9646b 100644 --- a/src/main/java/cz/jzitnik/annotations/State.java +++ b/game/src/main/java/cz/jzitnik/client/annotations/State.java @@ -1,4 +1,4 @@ -package cz.jzitnik.annotations; +package cz.jzitnik.client.annotations; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/src/main/java/cz/jzitnik/annotations/ThreadRegistry.java b/game/src/main/java/cz/jzitnik/client/annotations/ThreadRegistry.java similarity index 87% rename from src/main/java/cz/jzitnik/annotations/ThreadRegistry.java rename to game/src/main/java/cz/jzitnik/client/annotations/ThreadRegistry.java index ea4dfdd..ff3ec98 100644 --- a/src/main/java/cz/jzitnik/annotations/ThreadRegistry.java +++ b/game/src/main/java/cz/jzitnik/client/annotations/ThreadRegistry.java @@ -1,4 +1,4 @@ -package cz.jzitnik.annotations; +package cz.jzitnik.client.annotations; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/src/main/java/cz/jzitnik/annotations/injectors/InjectConfig.java b/game/src/main/java/cz/jzitnik/client/annotations/injectors/InjectConfig.java similarity index 84% rename from src/main/java/cz/jzitnik/annotations/injectors/InjectConfig.java rename to game/src/main/java/cz/jzitnik/client/annotations/injectors/InjectConfig.java index b95916e..3371552 100644 --- a/src/main/java/cz/jzitnik/annotations/injectors/InjectConfig.java +++ b/game/src/main/java/cz/jzitnik/client/annotations/injectors/InjectConfig.java @@ -1,4 +1,4 @@ -package cz.jzitnik.annotations.injectors; +package cz.jzitnik.client.annotations.injectors; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/src/main/java/cz/jzitnik/annotations/injectors/InjectDependency.java b/game/src/main/java/cz/jzitnik/client/annotations/injectors/InjectDependency.java similarity index 84% rename from src/main/java/cz/jzitnik/annotations/injectors/InjectDependency.java rename to game/src/main/java/cz/jzitnik/client/annotations/injectors/InjectDependency.java index 5c6fd13..2b8d0d6 100644 --- a/src/main/java/cz/jzitnik/annotations/injectors/InjectDependency.java +++ b/game/src/main/java/cz/jzitnik/client/annotations/injectors/InjectDependency.java @@ -1,4 +1,4 @@ -package cz.jzitnik.annotations.injectors; +package cz.jzitnik.client.annotations.injectors; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/src/main/java/cz/jzitnik/annotations/injectors/InjectState.java b/game/src/main/java/cz/jzitnik/client/annotations/injectors/InjectState.java similarity index 84% rename from src/main/java/cz/jzitnik/annotations/injectors/InjectState.java rename to game/src/main/java/cz/jzitnik/client/annotations/injectors/InjectState.java index d01eaa7..0c6ae48 100644 --- a/src/main/java/cz/jzitnik/annotations/injectors/InjectState.java +++ b/game/src/main/java/cz/jzitnik/client/annotations/injectors/InjectState.java @@ -1,4 +1,4 @@ -package cz.jzitnik.annotations.injectors; +package cz.jzitnik.client.annotations.injectors; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/src/main/java/cz/jzitnik/annotations/ui/KeyboardPressHandler.java b/game/src/main/java/cz/jzitnik/client/annotations/ui/KeyboardPressHandler.java similarity index 88% rename from src/main/java/cz/jzitnik/annotations/ui/KeyboardPressHandler.java rename to game/src/main/java/cz/jzitnik/client/annotations/ui/KeyboardPressHandler.java index d5e6eaa..b8c172a 100644 --- a/src/main/java/cz/jzitnik/annotations/ui/KeyboardPressHandler.java +++ b/game/src/main/java/cz/jzitnik/client/annotations/ui/KeyboardPressHandler.java @@ -1,4 +1,4 @@ -package cz.jzitnik.annotations.ui; +package cz.jzitnik.client.annotations.ui; import com.googlecode.lanterna.input.KeyType; diff --git a/src/main/java/cz/jzitnik/annotations/ui/KeyboardPressHandlers.java b/game/src/main/java/cz/jzitnik/client/annotations/ui/KeyboardPressHandlers.java similarity index 87% rename from src/main/java/cz/jzitnik/annotations/ui/KeyboardPressHandlers.java rename to game/src/main/java/cz/jzitnik/client/annotations/ui/KeyboardPressHandlers.java index b8892ae..32d1abf 100644 --- a/src/main/java/cz/jzitnik/annotations/ui/KeyboardPressHandlers.java +++ b/game/src/main/java/cz/jzitnik/client/annotations/ui/KeyboardPressHandlers.java @@ -1,4 +1,4 @@ -package cz.jzitnik.annotations.ui; +package cz.jzitnik.client.annotations.ui; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/src/main/java/cz/jzitnik/annotations/ui/MouseHandler.java b/game/src/main/java/cz/jzitnik/client/annotations/ui/MouseHandler.java similarity index 87% rename from src/main/java/cz/jzitnik/annotations/ui/MouseHandler.java rename to game/src/main/java/cz/jzitnik/client/annotations/ui/MouseHandler.java index e18ed7c..5ea0f70 100644 --- a/src/main/java/cz/jzitnik/annotations/ui/MouseHandler.java +++ b/game/src/main/java/cz/jzitnik/client/annotations/ui/MouseHandler.java @@ -1,4 +1,4 @@ -package cz.jzitnik.annotations.ui; +package cz.jzitnik.client.annotations.ui; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/src/main/java/cz/jzitnik/annotations/ui/MouseHandlerType.java b/game/src/main/java/cz/jzitnik/client/annotations/ui/MouseHandlerType.java similarity index 60% rename from src/main/java/cz/jzitnik/annotations/ui/MouseHandlerType.java rename to game/src/main/java/cz/jzitnik/client/annotations/ui/MouseHandlerType.java index 26e46d7..158904b 100644 --- a/src/main/java/cz/jzitnik/annotations/ui/MouseHandlerType.java +++ b/game/src/main/java/cz/jzitnik/client/annotations/ui/MouseHandlerType.java @@ -1,4 +1,4 @@ -package cz.jzitnik.annotations.ui; +package cz.jzitnik.client.annotations.ui; public enum MouseHandlerType { CLICK, diff --git a/src/main/java/cz/jzitnik/annotations/ui/Render.java b/game/src/main/java/cz/jzitnik/client/annotations/ui/Render.java similarity index 85% rename from src/main/java/cz/jzitnik/annotations/ui/Render.java rename to game/src/main/java/cz/jzitnik/client/annotations/ui/Render.java index 6a2a79c..0f60582 100644 --- a/src/main/java/cz/jzitnik/annotations/ui/Render.java +++ b/game/src/main/java/cz/jzitnik/client/annotations/ui/Render.java @@ -1,4 +1,4 @@ -package cz.jzitnik.annotations.ui; +package cz.jzitnik.client.annotations.ui; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/src/main/java/cz/jzitnik/annotations/ui/UI.java b/game/src/main/java/cz/jzitnik/client/annotations/ui/UI.java similarity index 85% rename from src/main/java/cz/jzitnik/annotations/ui/UI.java rename to game/src/main/java/cz/jzitnik/client/annotations/ui/UI.java index 9980fcf..c74f7e2 100644 --- a/src/main/java/cz/jzitnik/annotations/ui/UI.java +++ b/game/src/main/java/cz/jzitnik/client/annotations/ui/UI.java @@ -1,4 +1,4 @@ -package cz.jzitnik.annotations.ui; +package cz.jzitnik.client.annotations.ui; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/src/main/java/cz/jzitnik/config/CoreLogic.java b/game/src/main/java/cz/jzitnik/client/config/CoreLogic.java similarity index 81% rename from src/main/java/cz/jzitnik/config/CoreLogic.java rename to game/src/main/java/cz/jzitnik/client/config/CoreLogic.java index 31a1484..545b613 100644 --- a/src/main/java/cz/jzitnik/config/CoreLogic.java +++ b/game/src/main/java/cz/jzitnik/client/config/CoreLogic.java @@ -1,9 +1,8 @@ -package cz.jzitnik.config; +package cz.jzitnik.client.config; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import cz.jzitnik.annotations.Config; -import lombok.Getter; +import cz.jzitnik.client.annotations.Config; @Config("core_logic.yaml") public record CoreLogic(int itemDropDisappearMinutes) { diff --git a/src/main/java/cz/jzitnik/config/Debugging.java b/game/src/main/java/cz/jzitnik/client/config/Debugging.java similarity index 89% rename from src/main/java/cz/jzitnik/config/Debugging.java rename to game/src/main/java/cz/jzitnik/client/config/Debugging.java index b5ac702..287cdff 100644 --- a/src/main/java/cz/jzitnik/config/Debugging.java +++ b/game/src/main/java/cz/jzitnik/client/config/Debugging.java @@ -1,8 +1,8 @@ -package cz.jzitnik.config; +package cz.jzitnik.client.config; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import cz.jzitnik.annotations.Config; +import cz.jzitnik.client.annotations.Config; @Config("debugging.yaml") public record Debugging(boolean renderColliders, boolean renderPlayerCollider, boolean showPlayerCordsLogs) { diff --git a/src/main/java/cz/jzitnik/config/MicrophoneConfig.java b/game/src/main/java/cz/jzitnik/client/config/MicrophoneConfig.java similarity index 82% rename from src/main/java/cz/jzitnik/config/MicrophoneConfig.java rename to game/src/main/java/cz/jzitnik/client/config/MicrophoneConfig.java index a55bda2..b07ba83 100644 --- a/src/main/java/cz/jzitnik/config/MicrophoneConfig.java +++ b/game/src/main/java/cz/jzitnik/client/config/MicrophoneConfig.java @@ -1,8 +1,8 @@ -package cz.jzitnik.config; +package cz.jzitnik.client.config; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import cz.jzitnik.annotations.Config; +import cz.jzitnik.client.annotations.Config; @Config("microphone.yaml") public record MicrophoneConfig(float volumeThreshold) { diff --git a/src/main/java/cz/jzitnik/config/PlayerConfig.java b/game/src/main/java/cz/jzitnik/client/config/PlayerConfig.java similarity index 90% rename from src/main/java/cz/jzitnik/config/PlayerConfig.java rename to game/src/main/java/cz/jzitnik/client/config/PlayerConfig.java index 1e355a6..78079ce 100644 --- a/src/main/java/cz/jzitnik/config/PlayerConfig.java +++ b/game/src/main/java/cz/jzitnik/client/config/PlayerConfig.java @@ -1,9 +1,9 @@ -package cz.jzitnik.config; +package cz.jzitnik.client.config; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import cz.jzitnik.annotations.Config; -import cz.jzitnik.events.handlers.PlayerMoveEventHandler; +import cz.jzitnik.client.annotations.Config; +import cz.jzitnik.client.events.handlers.PlayerMoveEventHandler; @Config("player.yaml") public record PlayerConfig( diff --git a/src/main/java/cz/jzitnik/config/ThreadPoolConfig.java b/game/src/main/java/cz/jzitnik/client/config/ThreadPoolConfig.java similarity index 85% rename from src/main/java/cz/jzitnik/config/ThreadPoolConfig.java rename to game/src/main/java/cz/jzitnik/client/config/ThreadPoolConfig.java index 2dc4110..b1c2dfc 100644 --- a/src/main/java/cz/jzitnik/config/ThreadPoolConfig.java +++ b/game/src/main/java/cz/jzitnik/client/config/ThreadPoolConfig.java @@ -1,9 +1,8 @@ -package cz.jzitnik.config; +package cz.jzitnik.client.config; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import cz.jzitnik.annotations.Config; -import lombok.Getter; +import cz.jzitnik.client.annotations.Config; @Config("threads.yaml") public record ThreadPoolConfig(int eventThreadCount, int taskThreadCount) { diff --git a/game/src/main/java/cz/jzitnik/client/events/DroppedItemRerender.java b/game/src/main/java/cz/jzitnik/client/events/DroppedItemRerender.java new file mode 100644 index 0000000..1f421de --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/events/DroppedItemRerender.java @@ -0,0 +1,7 @@ +package cz.jzitnik.client.events; + +import cz.jzitnik.client.game.objects.DroppedItem; +import cz.jzitnik.client.utils.events.Event; + +public record DroppedItemRerender(DroppedItem droppedItem) implements Event { +} diff --git a/src/main/java/cz/jzitnik/events/ExitEvent.java b/game/src/main/java/cz/jzitnik/client/events/ExitEvent.java similarity index 52% rename from src/main/java/cz/jzitnik/events/ExitEvent.java rename to game/src/main/java/cz/jzitnik/client/events/ExitEvent.java index 1649807..0a5761d 100644 --- a/src/main/java/cz/jzitnik/events/ExitEvent.java +++ b/game/src/main/java/cz/jzitnik/client/events/ExitEvent.java @@ -1,6 +1,6 @@ -package cz.jzitnik.events; +package cz.jzitnik.client.events; -import cz.jzitnik.utils.events.Event; +import cz.jzitnik.client.utils.events.Event; /** Custom event without any handler **/ public class ExitEvent implements Event { diff --git a/game/src/main/java/cz/jzitnik/client/events/FullRedrawEvent.java b/game/src/main/java/cz/jzitnik/client/events/FullRedrawEvent.java new file mode 100644 index 0000000..cc88a6e --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/events/FullRedrawEvent.java @@ -0,0 +1,6 @@ +package cz.jzitnik.client.events; + +import cz.jzitnik.client.utils.events.Event; + +public class FullRedrawEvent implements Event { +} diff --git a/src/main/java/cz/jzitnik/events/FullRoomDraw.java b/game/src/main/java/cz/jzitnik/client/events/FullRoomDraw.java similarity index 73% rename from src/main/java/cz/jzitnik/events/FullRoomDraw.java rename to game/src/main/java/cz/jzitnik/client/events/FullRoomDraw.java index 1268625..7097833 100644 --- a/src/main/java/cz/jzitnik/events/FullRoomDraw.java +++ b/game/src/main/java/cz/jzitnik/client/events/FullRoomDraw.java @@ -1,7 +1,6 @@ -package cz.jzitnik.events; +package cz.jzitnik.client.events; -import cz.jzitnik.utils.events.Event; -import lombok.AllArgsConstructor; +import cz.jzitnik.client.utils.events.Event; import lombok.Getter; import lombok.NoArgsConstructor; diff --git a/game/src/main/java/cz/jzitnik/client/events/InventoryRerender.java b/game/src/main/java/cz/jzitnik/client/events/InventoryRerender.java new file mode 100644 index 0000000..998db13 --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/events/InventoryRerender.java @@ -0,0 +1,6 @@ +package cz.jzitnik.client.events; + +import cz.jzitnik.client.utils.events.Event; + +public class InventoryRerender implements Event { +} diff --git a/src/main/java/cz/jzitnik/events/KeyboardPressEvent.java b/game/src/main/java/cz/jzitnik/client/events/KeyboardPressEvent.java similarity index 73% rename from src/main/java/cz/jzitnik/events/KeyboardPressEvent.java rename to game/src/main/java/cz/jzitnik/client/events/KeyboardPressEvent.java index 52ec8ae..19b2e2b 100644 --- a/src/main/java/cz/jzitnik/events/KeyboardPressEvent.java +++ b/game/src/main/java/cz/jzitnik/client/events/KeyboardPressEvent.java @@ -1,7 +1,7 @@ -package cz.jzitnik.events; +package cz.jzitnik.client.events; import com.googlecode.lanterna.input.KeyStroke; -import cz.jzitnik.utils.events.Event; +import cz.jzitnik.client.utils.events.Event; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/cz/jzitnik/events/MouseAction.java b/game/src/main/java/cz/jzitnik/client/events/MouseAction.java similarity index 86% rename from src/main/java/cz/jzitnik/events/MouseAction.java rename to game/src/main/java/cz/jzitnik/client/events/MouseAction.java index 6959efc..605e5db 100644 --- a/src/main/java/cz/jzitnik/events/MouseAction.java +++ b/game/src/main/java/cz/jzitnik/client/events/MouseAction.java @@ -1,8 +1,8 @@ -package cz.jzitnik.events; +package cz.jzitnik.client.events; import com.googlecode.lanterna.TerminalPosition; import com.googlecode.lanterna.input.MouseActionType; -import cz.jzitnik.utils.events.Event; +import cz.jzitnik.client.utils.events.Event; public class MouseAction extends com.googlecode.lanterna.input.MouseAction implements Event { public MouseAction(MouseActionType actionType, int button, TerminalPosition position) { diff --git a/src/main/java/cz/jzitnik/events/MouseMoveEvent.java b/game/src/main/java/cz/jzitnik/client/events/MouseMoveEvent.java similarity index 68% rename from src/main/java/cz/jzitnik/events/MouseMoveEvent.java rename to game/src/main/java/cz/jzitnik/client/events/MouseMoveEvent.java index 9bb769b..e4c4e82 100644 --- a/src/main/java/cz/jzitnik/events/MouseMoveEvent.java +++ b/game/src/main/java/cz/jzitnik/client/events/MouseMoveEvent.java @@ -1,6 +1,6 @@ -package cz.jzitnik.events; +package cz.jzitnik.client.events; -import cz.jzitnik.utils.events.Event; +import cz.jzitnik.client.utils.events.Event; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/cz/jzitnik/events/PlayerMoveEvent.java b/game/src/main/java/cz/jzitnik/client/events/PlayerMoveEvent.java similarity index 73% rename from src/main/java/cz/jzitnik/events/PlayerMoveEvent.java rename to game/src/main/java/cz/jzitnik/client/events/PlayerMoveEvent.java index 41169ce..34ed568 100644 --- a/src/main/java/cz/jzitnik/events/PlayerMoveEvent.java +++ b/game/src/main/java/cz/jzitnik/client/events/PlayerMoveEvent.java @@ -1,7 +1,7 @@ -package cz.jzitnik.events; +package cz.jzitnik.client.events; import com.googlecode.lanterna.input.KeyStroke; -import cz.jzitnik.utils.events.Event; +import cz.jzitnik.client.utils.events.Event; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/game/src/main/java/cz/jzitnik/client/events/RenderStats.java b/game/src/main/java/cz/jzitnik/client/events/RenderStats.java new file mode 100644 index 0000000..2df5177 --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/events/RenderStats.java @@ -0,0 +1,6 @@ +package cz.jzitnik.client.events; + +import cz.jzitnik.client.utils.events.Event; + +public class RenderStats implements Event { +} diff --git a/src/main/java/cz/jzitnik/events/RerenderPart.java b/game/src/main/java/cz/jzitnik/client/events/RerenderPart.java similarity index 75% rename from src/main/java/cz/jzitnik/events/RerenderPart.java rename to game/src/main/java/cz/jzitnik/client/events/RerenderPart.java index 77de5b9..bd79e2d 100644 --- a/src/main/java/cz/jzitnik/events/RerenderPart.java +++ b/game/src/main/java/cz/jzitnik/client/events/RerenderPart.java @@ -1,6 +1,6 @@ -package cz.jzitnik.events; +package cz.jzitnik.client.events; -import cz.jzitnik.utils.events.Event; +import cz.jzitnik.client.utils.events.Event; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/cz/jzitnik/events/RerenderScreen.java b/game/src/main/java/cz/jzitnik/client/events/RerenderScreen.java similarity index 93% rename from src/main/java/cz/jzitnik/events/RerenderScreen.java rename to game/src/main/java/cz/jzitnik/client/events/RerenderScreen.java index 5ef8e58..404d48c 100644 --- a/src/main/java/cz/jzitnik/events/RerenderScreen.java +++ b/game/src/main/java/cz/jzitnik/client/events/RerenderScreen.java @@ -1,13 +1,11 @@ -package cz.jzitnik.events; +package cz.jzitnik.client.events; import com.googlecode.lanterna.TerminalPosition; import com.googlecode.lanterna.TerminalSize; -import cz.jzitnik.utils.events.Event; +import cz.jzitnik.client.utils.events.Event; import lombok.AllArgsConstructor; import lombok.Data; -import java.awt.*; - public record RerenderScreen(ScreenPart[] parts) implements Event { public RerenderScreen(ScreenPart part) { this(new ScreenPart[]{part}); diff --git a/game/src/main/java/cz/jzitnik/client/events/RoomChangeEvent.java b/game/src/main/java/cz/jzitnik/client/events/RoomChangeEvent.java new file mode 100644 index 0000000..7573d09 --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/events/RoomChangeEvent.java @@ -0,0 +1,7 @@ +package cz.jzitnik.client.events; + +import cz.jzitnik.client.events.handlers.FullRoomDrawHandler; +import cz.jzitnik.client.utils.events.Event; + +public record RoomChangeEvent(FullRoomDrawHandler.DoorPosition door) implements Event { +} diff --git a/src/main/java/cz/jzitnik/events/TerminalResizeEvent.java b/game/src/main/java/cz/jzitnik/client/events/TerminalResizeEvent.java similarity index 73% rename from src/main/java/cz/jzitnik/events/TerminalResizeEvent.java rename to game/src/main/java/cz/jzitnik/client/events/TerminalResizeEvent.java index f5749d1..7f3af38 100644 --- a/src/main/java/cz/jzitnik/events/TerminalResizeEvent.java +++ b/game/src/main/java/cz/jzitnik/client/events/TerminalResizeEvent.java @@ -1,7 +1,7 @@ -package cz.jzitnik.events; +package cz.jzitnik.client.events; import com.googlecode.lanterna.TerminalSize; -import cz.jzitnik.utils.events.Event; +import cz.jzitnik.client.utils.events.Event; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/game/src/main/java/cz/jzitnik/client/events/TerminalTooSmallEvent.java b/game/src/main/java/cz/jzitnik/client/events/TerminalTooSmallEvent.java new file mode 100644 index 0000000..a2795b5 --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/events/TerminalTooSmallEvent.java @@ -0,0 +1,6 @@ +package cz.jzitnik.client.events; + +import cz.jzitnik.client.utils.events.Event; + +public class TerminalTooSmallEvent implements Event { +} diff --git a/src/main/java/cz/jzitnik/events/handlers/CliHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/CliHandler.java similarity index 85% rename from src/main/java/cz/jzitnik/events/handlers/CliHandler.java rename to game/src/main/java/cz/jzitnik/client/events/handlers/CliHandler.java index 3385631..989838a 100644 --- a/src/main/java/cz/jzitnik/events/handlers/CliHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/CliHandler.java @@ -1,19 +1,19 @@ -package cz.jzitnik.events.handlers; +package cz.jzitnik.client.events.handlers; import com.googlecode.lanterna.TextColor; 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.RenderState; -import cz.jzitnik.states.ScreenBuffer; -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.ui.pixels.Pixel; -import cz.jzitnik.utils.events.AbstractEventHandler; +import cz.jzitnik.client.annotations.EventHandler; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.RerenderScreen; +import cz.jzitnik.client.game.Constants; +import cz.jzitnik.client.states.RenderState; +import cz.jzitnik.client.states.ScreenBuffer; +import cz.jzitnik.client.states.TerminalState; +import cz.jzitnik.client.ui.pixels.AlphaPixel; +import cz.jzitnik.client.ui.pixels.ColoredPixel; +import cz.jzitnik.client.ui.pixels.Empty; +import cz.jzitnik.client.ui.pixels.Pixel; +import cz.jzitnik.client.utils.events.AbstractEventHandler; import lombok.extern.slf4j.Slf4j; import java.io.IOException; diff --git a/src/main/java/cz/jzitnik/events/handlers/DialogEventHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/DialogEventHandler.java similarity index 90% rename from src/main/java/cz/jzitnik/events/handlers/DialogEventHandler.java rename to game/src/main/java/cz/jzitnik/client/events/handlers/DialogEventHandler.java index 6d30233..acd5bfe 100644 --- a/src/main/java/cz/jzitnik/events/handlers/DialogEventHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/DialogEventHandler.java @@ -1,24 +1,24 @@ -package cz.jzitnik.events.handlers; +package cz.jzitnik.client.events.handlers; import com.googlecode.lanterna.TerminalPosition; import com.googlecode.lanterna.TerminalSize; import com.googlecode.lanterna.TextColor; -import cz.jzitnik.annotations.EventHandler; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.events.RerenderScreen; -import cz.jzitnik.game.dialog.Dialog; -import cz.jzitnik.game.dialog.OnEnd; -import cz.jzitnik.states.DialogState; -import cz.jzitnik.states.ScreenBuffer; -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; +import cz.jzitnik.client.annotations.EventHandler; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.RerenderScreen; +import cz.jzitnik.client.game.dialog.Dialog; +import cz.jzitnik.client.game.dialog.OnEnd; +import cz.jzitnik.client.states.DialogState; +import cz.jzitnik.client.states.ScreenBuffer; +import cz.jzitnik.client.states.TerminalState; +import cz.jzitnik.client.ui.pixels.AlphaPixel; +import cz.jzitnik.client.ui.pixels.ColoredPixel; +import cz.jzitnik.client.ui.pixels.Empty; +import cz.jzitnik.client.utils.DependencyManager; +import cz.jzitnik.client.utils.TextRenderer; +import cz.jzitnik.client.utils.events.AbstractEventHandler; +import cz.jzitnik.client.utils.events.EventManager; import lombok.extern.slf4j.Slf4j; import java.awt.*; diff --git a/src/main/java/cz/jzitnik/events/handlers/DroppedItemRerenderHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/DroppedItemRerenderHandler.java similarity index 64% rename from src/main/java/cz/jzitnik/events/handlers/DroppedItemRerenderHandler.java rename to game/src/main/java/cz/jzitnik/client/events/handlers/DroppedItemRerenderHandler.java index ebd8bcd..63613d4 100644 --- a/src/main/java/cz/jzitnik/events/handlers/DroppedItemRerenderHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/DroppedItemRerenderHandler.java @@ -1,12 +1,12 @@ -package cz.jzitnik.events.handlers; +package cz.jzitnik.client.events.handlers; -import cz.jzitnik.annotations.EventHandler; -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.events.AbstractEventHandler; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.EventHandler; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.events.DroppedItemRerender; +import cz.jzitnik.client.events.RerenderPart; +import cz.jzitnik.client.game.utils.RoomCords; +import cz.jzitnik.client.utils.events.AbstractEventHandler; +import cz.jzitnik.client.utils.events.EventManager; import java.awt.image.BufferedImage; diff --git a/src/main/java/cz/jzitnik/events/handlers/ExitEventHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/ExitEventHandler.java similarity index 55% rename from src/main/java/cz/jzitnik/events/handlers/ExitEventHandler.java rename to game/src/main/java/cz/jzitnik/client/events/handlers/ExitEventHandler.java index 3759879..1c9cec5 100644 --- a/src/main/java/cz/jzitnik/events/handlers/ExitEventHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/ExitEventHandler.java @@ -1,14 +1,14 @@ -package cz.jzitnik.events.handlers; +package cz.jzitnik.client.events.handlers; -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.states.RunningState; -import cz.jzitnik.utils.ScheduledTaskManager; -import cz.jzitnik.utils.ThreadManager; -import cz.jzitnik.utils.events.AbstractEventHandler; -import cz.jzitnik.utils.roomtasks.RoomTaskScheduler; +import cz.jzitnik.client.annotations.EventHandler; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.ExitEvent; +import cz.jzitnik.client.states.RunningState; +import cz.jzitnik.client.utils.ScheduledTaskManager; +import cz.jzitnik.client.utils.ThreadManager; +import cz.jzitnik.client.utils.events.AbstractEventHandler; +import cz.jzitnik.client.utils.roomtasks.RoomTaskScheduler; @EventHandler(ExitEvent.class) public class ExitEventHandler extends AbstractEventHandler { diff --git a/src/main/java/cz/jzitnik/events/handlers/FullRedrawEventHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/FullRedrawEventHandler.java similarity index 57% rename from src/main/java/cz/jzitnik/events/handlers/FullRedrawEventHandler.java rename to game/src/main/java/cz/jzitnik/client/events/handlers/FullRedrawEventHandler.java index f27fe7f..dfa6e95 100644 --- a/src/main/java/cz/jzitnik/events/handlers/FullRedrawEventHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/FullRedrawEventHandler.java @@ -1,14 +1,14 @@ -package cz.jzitnik.events.handlers; +package cz.jzitnik.client.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.events.AbstractEventHandler; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.EventHandler; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.FullRedrawEvent; +import cz.jzitnik.client.events.FullRoomDraw; +import cz.jzitnik.client.states.TerminalState; +import cz.jzitnik.client.utils.events.AbstractEventHandler; +import cz.jzitnik.client.utils.events.EventManager; import java.io.IOException; diff --git a/src/main/java/cz/jzitnik/events/handlers/FullRoomDrawHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/FullRoomDrawHandler.java similarity index 76% rename from src/main/java/cz/jzitnik/events/handlers/FullRoomDrawHandler.java rename to game/src/main/java/cz/jzitnik/client/events/handlers/FullRoomDrawHandler.java index d766cf0..e4c22cc 100644 --- a/src/main/java/cz/jzitnik/events/handlers/FullRoomDrawHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/FullRoomDrawHandler.java @@ -1,28 +1,28 @@ -package cz.jzitnik.events.handlers; +package cz.jzitnik.client.events.handlers; import com.googlecode.lanterna.TerminalPosition; import com.googlecode.lanterna.TerminalSize; import com.googlecode.lanterna.screen.TerminalScreen; -import cz.jzitnik.annotations.EventHandler; -import cz.jzitnik.annotations.injectors.InjectConfig; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.config.Debugging; -import cz.jzitnik.events.FullRoomDraw; -import cz.jzitnik.events.RerenderScreen; -import cz.jzitnik.events.TerminalTooSmallEvent; -import cz.jzitnik.game.GameRoom; -import cz.jzitnik.game.GameState; -import cz.jzitnik.game.Player; -import cz.jzitnik.game.ResourceManager; -import cz.jzitnik.states.RenderState; -import cz.jzitnik.states.ScreenBuffer; -import cz.jzitnik.states.TerminalState; -import cz.jzitnik.utils.GlobalIOHandlerRepository; -import cz.jzitnik.utils.RerenderUtils; -import cz.jzitnik.utils.events.AbstractEventHandler; -import cz.jzitnik.utils.events.EventManager; -import cz.jzitnik.utils.roomtasks.RoomTaskScheduler; +import cz.jzitnik.client.annotations.EventHandler; +import cz.jzitnik.client.annotations.injectors.InjectConfig; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.config.Debugging; +import cz.jzitnik.client.events.FullRoomDraw; +import cz.jzitnik.client.events.RerenderScreen; +import cz.jzitnik.client.events.TerminalTooSmallEvent; +import cz.jzitnik.client.game.GameRoom; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.Player; +import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.states.RenderState; +import cz.jzitnik.client.states.ScreenBuffer; +import cz.jzitnik.client.states.TerminalState; +import cz.jzitnik.client.utils.GlobalIOHandlerRepository; +import cz.jzitnik.client.utils.RerenderUtils; +import cz.jzitnik.client.utils.events.AbstractEventHandler; +import cz.jzitnik.client.utils.events.EventManager; +import cz.jzitnik.client.utils.roomtasks.RoomTaskScheduler; import lombok.extern.slf4j.Slf4j; import java.awt.image.BufferedImage; diff --git a/src/main/java/cz/jzitnik/events/handlers/InventoryRerenderHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/InventoryRerenderHandler.java similarity index 64% rename from src/main/java/cz/jzitnik/events/handlers/InventoryRerenderHandler.java rename to game/src/main/java/cz/jzitnik/client/events/handlers/InventoryRerenderHandler.java index 57efc34..2511276 100644 --- a/src/main/java/cz/jzitnik/events/handlers/InventoryRerenderHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/InventoryRerenderHandler.java @@ -1,13 +1,13 @@ -package cz.jzitnik.events.handlers; +package cz.jzitnik.client.events.handlers; import com.googlecode.lanterna.TerminalPosition; -import cz.jzitnik.annotations.EventHandler; -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.events.AbstractEventHandler; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.EventHandler; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.events.InventoryRerender; +import cz.jzitnik.client.events.RerenderScreen; +import cz.jzitnik.client.ui.Inventory; +import cz.jzitnik.client.utils.events.AbstractEventHandler; +import cz.jzitnik.client.utils.events.EventManager; @EventHandler(InventoryRerender.class) public class InventoryRerenderHandler extends AbstractEventHandler { diff --git a/src/main/java/cz/jzitnik/events/handlers/KeyboardPressEventHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/KeyboardPressEventHandler.java similarity index 55% rename from src/main/java/cz/jzitnik/events/handlers/KeyboardPressEventHandler.java rename to game/src/main/java/cz/jzitnik/client/events/handlers/KeyboardPressEventHandler.java index 0b4379d..980f0f3 100644 --- a/src/main/java/cz/jzitnik/events/handlers/KeyboardPressEventHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/KeyboardPressEventHandler.java @@ -1,12 +1,12 @@ -package cz.jzitnik.events.handlers; +package cz.jzitnik.client.events.handlers; -import cz.jzitnik.annotations.EventHandler; -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.GlobalIOHandlerRepository; -import cz.jzitnik.utils.events.AbstractEventHandler; +import cz.jzitnik.client.annotations.EventHandler; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.KeyboardPressEvent; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.utils.GlobalIOHandlerRepository; +import cz.jzitnik.client.utils.events.AbstractEventHandler; @EventHandler(KeyboardPressEvent.class) public class KeyboardPressEventHandler extends AbstractEventHandler { diff --git a/src/main/java/cz/jzitnik/events/handlers/MouseActionEventHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/MouseActionEventHandler.java similarity index 73% rename from src/main/java/cz/jzitnik/events/handlers/MouseActionEventHandler.java rename to game/src/main/java/cz/jzitnik/client/events/handlers/MouseActionEventHandler.java index 1a5fd2c..1ee0b41 100644 --- a/src/main/java/cz/jzitnik/events/handlers/MouseActionEventHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/MouseActionEventHandler.java @@ -1,19 +1,19 @@ -package cz.jzitnik.events.handlers; +package cz.jzitnik.client.events.handlers; -import cz.jzitnik.annotations.EventHandler; -import cz.jzitnik.annotations.injectors.InjectConfig; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.config.PlayerConfig; -import cz.jzitnik.events.MouseAction; -import cz.jzitnik.events.MouseMoveEvent; -import cz.jzitnik.game.GameState; -import cz.jzitnik.game.utils.Selectable; -import cz.jzitnik.states.RenderState; -import cz.jzitnik.utils.DependencyManager; -import cz.jzitnik.utils.UIRoomClickHandlerRepository; -import cz.jzitnik.utils.events.AbstractEventHandler; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.EventHandler; +import cz.jzitnik.client.annotations.injectors.InjectConfig; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.config.PlayerConfig; +import cz.jzitnik.client.events.MouseAction; +import cz.jzitnik.client.events.MouseMoveEvent; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.utils.Selectable; +import cz.jzitnik.client.states.RenderState; +import cz.jzitnik.client.utils.DependencyManager; +import cz.jzitnik.client.utils.UIRoomClickHandlerRepository; +import cz.jzitnik.client.utils.events.AbstractEventHandler; +import cz.jzitnik.client.utils.events.EventManager; import java.util.Optional; import java.util.stream.Stream; diff --git a/src/main/java/cz/jzitnik/events/handlers/MouseMoveEventHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/MouseMoveEventHandler.java similarity index 86% rename from src/main/java/cz/jzitnik/events/handlers/MouseMoveEventHandler.java rename to game/src/main/java/cz/jzitnik/client/events/handlers/MouseMoveEventHandler.java index f0b8976..91cb494 100644 --- a/src/main/java/cz/jzitnik/events/handlers/MouseMoveEventHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/MouseMoveEventHandler.java @@ -1,27 +1,27 @@ -package cz.jzitnik.events.handlers; +package cz.jzitnik.client.events.handlers; import com.googlecode.lanterna.TerminalPosition; import com.googlecode.lanterna.input.MouseActionType; -import cz.jzitnik.annotations.EventHandler; -import cz.jzitnik.annotations.injectors.InjectConfig; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.config.Debugging; -import cz.jzitnik.config.PlayerConfig; -import cz.jzitnik.events.MouseAction; -import cz.jzitnik.events.MouseMoveEvent; -import cz.jzitnik.events.RerenderScreen; -import cz.jzitnik.game.GameRoom; -import cz.jzitnik.game.GameState; -import cz.jzitnik.game.Player; -import cz.jzitnik.game.ResourceManager; -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.RerenderUtils; -import cz.jzitnik.utils.events.AbstractEventHandler; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.EventHandler; +import cz.jzitnik.client.annotations.injectors.InjectConfig; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.config.Debugging; +import cz.jzitnik.client.config.PlayerConfig; +import cz.jzitnik.client.events.MouseAction; +import cz.jzitnik.client.events.MouseMoveEvent; +import cz.jzitnik.client.events.RerenderScreen; +import cz.jzitnik.client.game.GameRoom; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.Player; +import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.game.utils.RoomCords; +import cz.jzitnik.client.game.utils.Selectable; +import cz.jzitnik.client.states.ScreenBuffer; +import cz.jzitnik.client.states.TerminalState; +import cz.jzitnik.client.utils.RerenderUtils; +import cz.jzitnik.client.utils.events.AbstractEventHandler; +import cz.jzitnik.client.utils.events.EventManager; import lombok.extern.slf4j.Slf4j; import java.awt.image.BufferedImage; diff --git a/src/main/java/cz/jzitnik/events/handlers/PlayerMoveEventHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/PlayerMoveEventHandler.java similarity index 84% rename from src/main/java/cz/jzitnik/events/handlers/PlayerMoveEventHandler.java rename to game/src/main/java/cz/jzitnik/client/events/handlers/PlayerMoveEventHandler.java index bba05f7..924bff6 100644 --- a/src/main/java/cz/jzitnik/events/handlers/PlayerMoveEventHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/PlayerMoveEventHandler.java @@ -1,31 +1,31 @@ -package cz.jzitnik.events.handlers; +package cz.jzitnik.client.events.handlers; import com.googlecode.lanterna.TerminalPosition; import com.googlecode.lanterna.input.KeyStroke; -import cz.jzitnik.annotations.EventHandler; -import cz.jzitnik.annotations.injectors.InjectConfig; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.config.Debugging; -import cz.jzitnik.config.PlayerConfig; -import cz.jzitnik.events.MouseMoveEvent; -import cz.jzitnik.events.PlayerMoveEvent; -import cz.jzitnik.events.RerenderScreen; -import cz.jzitnik.events.RoomChangeEvent; -import cz.jzitnik.game.GameRoom; -import cz.jzitnik.game.GameState; -import cz.jzitnik.game.Player; -import cz.jzitnik.game.ResourceManager; -import cz.jzitnik.game.utils.RoomCords; -import cz.jzitnik.states.RenderState; -import cz.jzitnik.states.ScreenBuffer; -import cz.jzitnik.states.PlayerMovementState; -import cz.jzitnik.states.TerminalState; -import cz.jzitnik.ui.Stats; -import cz.jzitnik.utils.RerenderUtils; -import cz.jzitnik.utils.events.AbstractEventHandler; -import cz.jzitnik.utils.events.Event; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.EventHandler; +import cz.jzitnik.client.annotations.injectors.InjectConfig; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.config.Debugging; +import cz.jzitnik.client.config.PlayerConfig; +import cz.jzitnik.client.events.MouseMoveEvent; +import cz.jzitnik.client.events.PlayerMoveEvent; +import cz.jzitnik.client.events.RerenderScreen; +import cz.jzitnik.client.events.RoomChangeEvent; +import cz.jzitnik.client.game.GameRoom; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.Player; +import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.game.utils.RoomCords; +import cz.jzitnik.client.states.RenderState; +import cz.jzitnik.client.states.ScreenBuffer; +import cz.jzitnik.client.states.PlayerMovementState; +import cz.jzitnik.client.states.TerminalState; +import cz.jzitnik.client.ui.Stats; +import cz.jzitnik.client.utils.RerenderUtils; +import cz.jzitnik.client.utils.events.AbstractEventHandler; +import cz.jzitnik.client.utils.events.Event; +import cz.jzitnik.client.utils.events.EventManager; import lombok.extern.slf4j.Slf4j; import java.awt.image.BufferedImage; diff --git a/src/main/java/cz/jzitnik/events/handlers/RenderStatsHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/RenderStatsHandler.java similarity index 60% rename from src/main/java/cz/jzitnik/events/handlers/RenderStatsHandler.java rename to game/src/main/java/cz/jzitnik/client/events/handlers/RenderStatsHandler.java index b13e95f..be3de1f 100644 --- a/src/main/java/cz/jzitnik/events/handlers/RenderStatsHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/RenderStatsHandler.java @@ -1,13 +1,13 @@ -package cz.jzitnik.events.handlers; +package cz.jzitnik.client.events.handlers; import com.googlecode.lanterna.TerminalPosition; -import cz.jzitnik.annotations.EventHandler; -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.events.AbstractEventHandler; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.EventHandler; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.events.RenderStats; +import cz.jzitnik.client.events.RerenderScreen; +import cz.jzitnik.client.ui.Stats; +import cz.jzitnik.client.utils.events.AbstractEventHandler; +import cz.jzitnik.client.utils.events.EventManager; @EventHandler(RenderStats.class) public class RenderStatsHandler extends AbstractEventHandler { diff --git a/src/main/java/cz/jzitnik/events/handlers/RerenderPartHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/RerenderPartHandler.java similarity index 68% rename from src/main/java/cz/jzitnik/events/handlers/RerenderPartHandler.java rename to game/src/main/java/cz/jzitnik/client/events/handlers/RerenderPartHandler.java index b2bc6ee..891a3de 100644 --- a/src/main/java/cz/jzitnik/events/handlers/RerenderPartHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/RerenderPartHandler.java @@ -1,22 +1,22 @@ -package cz.jzitnik.events.handlers; +package cz.jzitnik.client.events.handlers; import com.googlecode.lanterna.TerminalPosition; -import cz.jzitnik.annotations.EventHandler; -import cz.jzitnik.annotations.injectors.InjectConfig; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.config.Debugging; -import cz.jzitnik.events.RerenderPart; -import cz.jzitnik.events.RerenderScreen; -import cz.jzitnik.game.GameRoom; -import cz.jzitnik.game.GameState; -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.RerenderUtils; -import cz.jzitnik.utils.events.AbstractEventHandler; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.EventHandler; +import cz.jzitnik.client.annotations.injectors.InjectConfig; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.config.Debugging; +import cz.jzitnik.client.events.RerenderPart; +import cz.jzitnik.client.events.RerenderScreen; +import cz.jzitnik.client.game.GameRoom; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.game.utils.RoomCords; +import cz.jzitnik.client.states.ScreenBuffer; +import cz.jzitnik.client.states.TerminalState; +import cz.jzitnik.client.utils.RerenderUtils; +import cz.jzitnik.client.utils.events.AbstractEventHandler; +import cz.jzitnik.client.utils.events.EventManager; import java.awt.image.BufferedImage; diff --git a/src/main/java/cz/jzitnik/events/handlers/RoomChangeEventHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/RoomChangeEventHandler.java similarity index 73% rename from src/main/java/cz/jzitnik/events/handlers/RoomChangeEventHandler.java rename to game/src/main/java/cz/jzitnik/client/events/handlers/RoomChangeEventHandler.java index dfdd339..59c5a1b 100644 --- a/src/main/java/cz/jzitnik/events/handlers/RoomChangeEventHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/RoomChangeEventHandler.java @@ -1,16 +1,16 @@ -package cz.jzitnik.events.handlers; +package cz.jzitnik.client.events.handlers; -import cz.jzitnik.annotations.EventHandler; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.events.FullRoomDraw; -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.events.AbstractEventHandler; -import cz.jzitnik.utils.events.EventManager; -import cz.jzitnik.utils.roomtasks.RoomTaskScheduler; +import cz.jzitnik.client.annotations.EventHandler; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.FullRoomDraw; +import cz.jzitnik.client.events.RoomChangeEvent; +import cz.jzitnik.client.game.GameRoom; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.utils.RoomCords; +import cz.jzitnik.client.utils.events.AbstractEventHandler; +import cz.jzitnik.client.utils.events.EventManager; +import cz.jzitnik.client.utils.roomtasks.RoomTaskScheduler; import lombok.extern.slf4j.Slf4j; import java.util.concurrent.Executors; diff --git a/src/main/java/cz/jzitnik/events/handlers/TerminalResizeEventHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/TerminalResizeEventHandler.java similarity index 69% rename from src/main/java/cz/jzitnik/events/handlers/TerminalResizeEventHandler.java rename to game/src/main/java/cz/jzitnik/client/events/handlers/TerminalResizeEventHandler.java index 208e4c9..c9ca2e2 100644 --- a/src/main/java/cz/jzitnik/events/handlers/TerminalResizeEventHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/TerminalResizeEventHandler.java @@ -1,18 +1,18 @@ -package cz.jzitnik.events.handlers; +package cz.jzitnik.client.events.handlers; import com.googlecode.lanterna.TerminalSize; -import cz.jzitnik.annotations.EventHandler; -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.AlphaPixel; -import cz.jzitnik.ui.pixels.Empty; -import cz.jzitnik.ui.pixels.Pixel; -import cz.jzitnik.utils.events.AbstractEventHandler; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.EventHandler; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.FullRoomDraw; +import cz.jzitnik.client.events.TerminalResizeEvent; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.states.ScreenBuffer; +import cz.jzitnik.client.ui.pixels.AlphaPixel; +import cz.jzitnik.client.ui.pixels.Empty; +import cz.jzitnik.client.ui.pixels.Pixel; +import cz.jzitnik.client.utils.events.AbstractEventHandler; +import cz.jzitnik.client.utils.events.EventManager; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/src/main/java/cz/jzitnik/events/handlers/TerminalTooSmallEventHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/TerminalTooSmallEventHandler.java similarity index 85% rename from src/main/java/cz/jzitnik/events/handlers/TerminalTooSmallEventHandler.java rename to game/src/main/java/cz/jzitnik/client/events/handlers/TerminalTooSmallEventHandler.java index a4b4f6b..2a2ac6a 100644 --- a/src/main/java/cz/jzitnik/events/handlers/TerminalTooSmallEventHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/TerminalTooSmallEventHandler.java @@ -1,15 +1,15 @@ -package cz.jzitnik.events.handlers; +package cz.jzitnik.client.events.handlers; import com.googlecode.lanterna.SGR; import com.googlecode.lanterna.TerminalSize; import com.googlecode.lanterna.TextColor; import com.googlecode.lanterna.screen.Screen; import com.googlecode.lanterna.screen.TerminalScreen; -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.events.AbstractEventHandler; +import cz.jzitnik.client.annotations.EventHandler; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.TerminalTooSmallEvent; +import cz.jzitnik.client.states.TerminalState; +import cz.jzitnik.client.utils.events.AbstractEventHandler; import java.io.IOException; import java.util.EnumSet; diff --git a/src/main/java/cz/jzitnik/game/Constants.java b/game/src/main/java/cz/jzitnik/client/game/Constants.java similarity index 82% rename from src/main/java/cz/jzitnik/game/Constants.java rename to game/src/main/java/cz/jzitnik/client/game/Constants.java index 55e0f8c..607479c 100644 --- a/src/main/java/cz/jzitnik/game/Constants.java +++ b/game/src/main/java/cz/jzitnik/client/game/Constants.java @@ -1,4 +1,4 @@ -package cz.jzitnik.game; +package cz.jzitnik.client.game; import com.googlecode.lanterna.TextColor; diff --git a/src/main/java/cz/jzitnik/game/GameRoom.java b/game/src/main/java/cz/jzitnik/client/game/GameRoom.java similarity index 89% rename from src/main/java/cz/jzitnik/game/GameRoom.java rename to game/src/main/java/cz/jzitnik/client/game/GameRoom.java index 40642b8..fb4e068 100644 --- a/src/main/java/cz/jzitnik/game/GameRoom.java +++ b/game/src/main/java/cz/jzitnik/client/game/GameRoom.java @@ -1,11 +1,11 @@ -package cz.jzitnik.game; +package cz.jzitnik.client.game; import com.fasterxml.jackson.annotation.*; -import cz.jzitnik.game.mobs.Mob; -import cz.jzitnik.game.objects.DroppedItem; -import cz.jzitnik.game.objects.GameObject; -import cz.jzitnik.ui.pixels.Empty; -import cz.jzitnik.ui.pixels.Pixel; +import cz.jzitnik.client.game.mobs.Mob; +import cz.jzitnik.client.game.objects.DroppedItem; +import cz.jzitnik.client.game.objects.GameObject; +import cz.jzitnik.client.ui.pixels.Empty; +import cz.jzitnik.client.ui.pixels.Pixel; import lombok.Getter; import java.util.ArrayList; diff --git a/src/main/java/cz/jzitnik/game/GameRoomPart.java b/game/src/main/java/cz/jzitnik/client/game/GameRoomPart.java similarity index 91% rename from src/main/java/cz/jzitnik/game/GameRoomPart.java rename to game/src/main/java/cz/jzitnik/client/game/GameRoomPart.java index aba0ac8..dcfaa09 100644 --- a/src/main/java/cz/jzitnik/game/GameRoomPart.java +++ b/game/src/main/java/cz/jzitnik/client/game/GameRoomPart.java @@ -1,9 +1,8 @@ -package cz.jzitnik.game; +package cz.jzitnik.client.game; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import cz.jzitnik.game.utils.RoomCords; -import lombok.AllArgsConstructor; +import cz.jzitnik.client.game.utils.RoomCords; import lombok.Data; import lombok.ToString; diff --git a/src/main/java/cz/jzitnik/game/GameState.java b/game/src/main/java/cz/jzitnik/client/game/GameState.java similarity index 73% rename from src/main/java/cz/jzitnik/game/GameState.java rename to game/src/main/java/cz/jzitnik/client/game/GameState.java index efe580e..7914c24 100644 --- a/src/main/java/cz/jzitnik/game/GameState.java +++ b/game/src/main/java/cz/jzitnik/client/game/GameState.java @@ -1,9 +1,9 @@ -package cz.jzitnik.game; +package cz.jzitnik.client.game; -import cz.jzitnik.annotations.State; -import cz.jzitnik.game.objects.Interactable; -import cz.jzitnik.screens.Screen; -import cz.jzitnik.utils.DependencyManager; +import cz.jzitnik.client.annotations.State; +import cz.jzitnik.client.game.objects.Interactable; +import cz.jzitnik.client.screens.Screen; +import cz.jzitnik.client.utils.DependencyManager; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.Setter; diff --git a/src/main/java/cz/jzitnik/game/Player.java b/game/src/main/java/cz/jzitnik/client/game/Player.java similarity index 90% rename from src/main/java/cz/jzitnik/game/Player.java rename to game/src/main/java/cz/jzitnik/client/game/Player.java index 5ae9172..22af029 100644 --- a/src/main/java/cz/jzitnik/game/Player.java +++ b/game/src/main/java/cz/jzitnik/client/game/Player.java @@ -1,16 +1,16 @@ -package cz.jzitnik.game; +package cz.jzitnik.client.game; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import cz.jzitnik.events.RerenderPart; -import cz.jzitnik.game.items.GameItem; -import cz.jzitnik.game.items.types.interfaces.WeaponInterface; -import cz.jzitnik.game.mobs.HittableMob; -import cz.jzitnik.game.utils.RoomCords; -import cz.jzitnik.ui.Inventory; -import cz.jzitnik.utils.DependencyManager; -import cz.jzitnik.utils.events.Event; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.events.RerenderPart; +import cz.jzitnik.client.game.items.GameItem; +import cz.jzitnik.client.game.items.types.interfaces.WeaponInterface; +import cz.jzitnik.client.game.mobs.HittableMob; +import cz.jzitnik.client.game.utils.RoomCords; +import cz.jzitnik.client.ui.Inventory; +import cz.jzitnik.client.utils.DependencyManager; +import cz.jzitnik.client.utils.events.Event; +import cz.jzitnik.client.utils.events.EventManager; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/cz/jzitnik/game/ResourceManager.java b/game/src/main/java/cz/jzitnik/client/game/ResourceManager.java similarity index 93% rename from src/main/java/cz/jzitnik/game/ResourceManager.java rename to game/src/main/java/cz/jzitnik/client/game/ResourceManager.java index 25e2b87..abf3a37 100644 --- a/src/main/java/cz/jzitnik/game/ResourceManager.java +++ b/game/src/main/java/cz/jzitnik/client/game/ResourceManager.java @@ -1,7 +1,7 @@ -package cz.jzitnik.game; +package cz.jzitnik.client.game; -import cz.jzitnik.annotations.Dependency; -import cz.jzitnik.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.injectors.InjectDependency; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/cz/jzitnik/game/dialog/Dialog.java b/game/src/main/java/cz/jzitnik/client/game/dialog/Dialog.java similarity index 79% rename from src/main/java/cz/jzitnik/game/dialog/Dialog.java rename to game/src/main/java/cz/jzitnik/client/game/dialog/Dialog.java index 8956269..b2da3b0 100644 --- a/src/main/java/cz/jzitnik/game/dialog/Dialog.java +++ b/game/src/main/java/cz/jzitnik/client/game/dialog/Dialog.java @@ -1,6 +1,6 @@ -package cz.jzitnik.game.dialog; +package cz.jzitnik.client.game.dialog; -import cz.jzitnik.utils.events.Event; +import cz.jzitnik.client.utils.events.Event; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/cz/jzitnik/game/dialog/OnEnd.java b/game/src/main/java/cz/jzitnik/client/game/dialog/OnEnd.java similarity index 88% rename from src/main/java/cz/jzitnik/game/dialog/OnEnd.java rename to game/src/main/java/cz/jzitnik/client/game/dialog/OnEnd.java index 0bfd4e6..efa2a77 100644 --- a/src/main/java/cz/jzitnik/game/dialog/OnEnd.java +++ b/game/src/main/java/cz/jzitnik/client/game/dialog/OnEnd.java @@ -1,4 +1,4 @@ -package cz.jzitnik.game.dialog; +package cz.jzitnik.client.game.dialog; public interface OnEnd { record RunCode(Runnable runnable, OnEnd onEnd) implements OnEnd {} diff --git a/src/main/java/cz/jzitnik/game/exceptions/InvalidCoordinatesException.java b/game/src/main/java/cz/jzitnik/client/game/exceptions/InvalidCoordinatesException.java similarity index 83% rename from src/main/java/cz/jzitnik/game/exceptions/InvalidCoordinatesException.java rename to game/src/main/java/cz/jzitnik/client/game/exceptions/InvalidCoordinatesException.java index 3383b2f..5b53a54 100644 --- a/src/main/java/cz/jzitnik/game/exceptions/InvalidCoordinatesException.java +++ b/game/src/main/java/cz/jzitnik/client/game/exceptions/InvalidCoordinatesException.java @@ -1,4 +1,4 @@ -package cz.jzitnik.game.exceptions; +package cz.jzitnik.client.game.exceptions; public class InvalidCoordinatesException extends RuntimeException { public InvalidCoordinatesException(String message) { diff --git a/src/main/java/cz/jzitnik/game/items/GameItem.java b/game/src/main/java/cz/jzitnik/client/game/items/GameItem.java similarity index 78% rename from src/main/java/cz/jzitnik/game/items/GameItem.java rename to game/src/main/java/cz/jzitnik/client/game/items/GameItem.java index 1730d05..38f748f 100644 --- a/src/main/java/cz/jzitnik/game/items/GameItem.java +++ b/game/src/main/java/cz/jzitnik/client/game/items/GameItem.java @@ -1,9 +1,9 @@ -package cz.jzitnik.game.items; +package cz.jzitnik.client.game.items; import com.fasterxml.jackson.annotation.*; -import cz.jzitnik.game.ResourceManager; -import cz.jzitnik.game.items.types.ItemType; -import cz.jzitnik.game.utils.Renderable; +import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.game.items.types.ItemType; +import cz.jzitnik.client.game.utils.Renderable; import lombok.Getter; import java.awt.image.BufferedImage; diff --git a/src/main/java/cz/jzitnik/game/items/types/InteractableItem.java b/game/src/main/java/cz/jzitnik/client/game/items/types/InteractableItem.java similarity index 59% rename from src/main/java/cz/jzitnik/game/items/types/InteractableItem.java rename to game/src/main/java/cz/jzitnik/client/game/items/types/InteractableItem.java index a7e4402..f3c28cd 100644 --- a/src/main/java/cz/jzitnik/game/items/types/InteractableItem.java +++ b/game/src/main/java/cz/jzitnik/client/game/items/types/InteractableItem.java @@ -1,7 +1,7 @@ -package cz.jzitnik.game.items.types; +package cz.jzitnik.client.game.items.types; -import cz.jzitnik.utils.DependencyManager; -import cz.jzitnik.utils.StateManager; +import cz.jzitnik.client.utils.DependencyManager; +import cz.jzitnik.client.utils.StateManager; public interface InteractableItem { InteractableItemResponse interact(DependencyManager dependencyManager, StateManager stateManager); diff --git a/src/main/java/cz/jzitnik/game/items/types/ItemType.java b/game/src/main/java/cz/jzitnik/client/game/items/types/ItemType.java similarity index 72% rename from src/main/java/cz/jzitnik/game/items/types/ItemType.java rename to game/src/main/java/cz/jzitnik/client/game/items/types/ItemType.java index d84751d..0a5610e 100644 --- a/src/main/java/cz/jzitnik/game/items/types/ItemType.java +++ b/game/src/main/java/cz/jzitnik/client/game/items/types/ItemType.java @@ -1,9 +1,9 @@ -package cz.jzitnik.game.items.types; +package cz.jzitnik.client.game.items.types; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import cz.jzitnik.game.items.types.food.Food; -import cz.jzitnik.game.items.types.weapons.Sword; +import cz.jzitnik.client.game.items.types.food.Food; +import cz.jzitnik.client.game.items.types.weapons.Sword; @JsonTypeInfo( use = JsonTypeInfo.Id.NAME, diff --git a/src/main/java/cz/jzitnik/game/items/types/food/Food.java b/game/src/main/java/cz/jzitnik/client/game/items/types/food/Food.java similarity index 69% rename from src/main/java/cz/jzitnik/game/items/types/food/Food.java rename to game/src/main/java/cz/jzitnik/client/game/items/types/food/Food.java index 18a1e95..45902d2 100644 --- a/src/main/java/cz/jzitnik/game/items/types/food/Food.java +++ b/game/src/main/java/cz/jzitnik/client/game/items/types/food/Food.java @@ -1,14 +1,14 @@ -package cz.jzitnik.game.items.types.food; +package cz.jzitnik.client.game.items.types.food; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import cz.jzitnik.events.RenderStats; -import cz.jzitnik.game.GameState; -import cz.jzitnik.game.items.types.InteractableItem; -import cz.jzitnik.game.items.types.ItemType; -import cz.jzitnik.utils.DependencyManager; -import cz.jzitnik.utils.StateManager; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.events.RenderStats; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.items.types.InteractableItem; +import cz.jzitnik.client.game.items.types.ItemType; +import cz.jzitnik.client.utils.DependencyManager; +import cz.jzitnik.client.utils.StateManager; +import cz.jzitnik.client.utils.events.EventManager; public class Food implements InteractableItem, ItemType { private final int addHealth; diff --git a/src/main/java/cz/jzitnik/game/items/types/interfaces/WeaponInterface.java b/game/src/main/java/cz/jzitnik/client/game/items/types/interfaces/WeaponInterface.java similarity index 53% rename from src/main/java/cz/jzitnik/game/items/types/interfaces/WeaponInterface.java rename to game/src/main/java/cz/jzitnik/client/game/items/types/interfaces/WeaponInterface.java index 3e7d70c..e55352b 100644 --- a/src/main/java/cz/jzitnik/game/items/types/interfaces/WeaponInterface.java +++ b/game/src/main/java/cz/jzitnik/client/game/items/types/interfaces/WeaponInterface.java @@ -1,4 +1,4 @@ -package cz.jzitnik.game.items.types.interfaces; +package cz.jzitnik.client.game.items.types.interfaces; public interface WeaponInterface { int getDamageDeal(); diff --git a/src/main/java/cz/jzitnik/game/items/types/weapons/Sword.java b/game/src/main/java/cz/jzitnik/client/game/items/types/weapons/Sword.java similarity index 84% rename from src/main/java/cz/jzitnik/game/items/types/weapons/Sword.java rename to game/src/main/java/cz/jzitnik/client/game/items/types/weapons/Sword.java index bf7026a..0b66d23 100644 --- a/src/main/java/cz/jzitnik/game/items/types/weapons/Sword.java +++ b/game/src/main/java/cz/jzitnik/client/game/items/types/weapons/Sword.java @@ -1,4 +1,4 @@ -package cz.jzitnik.game.items.types.weapons; +package cz.jzitnik.client.game.items.types.weapons; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/cz/jzitnik/game/items/types/weapons/Weapon.java b/game/src/main/java/cz/jzitnik/client/game/items/types/weapons/Weapon.java similarity index 66% rename from src/main/java/cz/jzitnik/game/items/types/weapons/Weapon.java rename to game/src/main/java/cz/jzitnik/client/game/items/types/weapons/Weapon.java index 594e163..9ff2e59 100644 --- a/src/main/java/cz/jzitnik/game/items/types/weapons/Weapon.java +++ b/game/src/main/java/cz/jzitnik/client/game/items/types/weapons/Weapon.java @@ -1,7 +1,7 @@ -package cz.jzitnik.game.items.types.weapons; +package cz.jzitnik.client.game.items.types.weapons; -import cz.jzitnik.game.items.types.ItemType; -import cz.jzitnik.game.items.types.interfaces.WeaponInterface; +import cz.jzitnik.client.game.items.types.ItemType; +import cz.jzitnik.client.game.items.types.interfaces.WeaponInterface; import lombok.AllArgsConstructor; @AllArgsConstructor diff --git a/src/main/java/cz/jzitnik/game/mobs/DialogMob.java b/game/src/main/java/cz/jzitnik/client/game/mobs/DialogMob.java similarity index 60% rename from src/main/java/cz/jzitnik/game/mobs/DialogMob.java rename to game/src/main/java/cz/jzitnik/client/game/mobs/DialogMob.java index 63c03ff..d10ae74 100644 --- a/src/main/java/cz/jzitnik/game/mobs/DialogMob.java +++ b/game/src/main/java/cz/jzitnik/client/game/mobs/DialogMob.java @@ -1,13 +1,13 @@ -package cz.jzitnik.game.mobs; +package cz.jzitnik.client.game.mobs; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.game.GameRoomPart; -import cz.jzitnik.game.dialog.Dialog; -import cz.jzitnik.game.mobs.tasks.MobRoomTask; -import cz.jzitnik.game.utils.RoomCords; -import cz.jzitnik.states.DialogState; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.game.GameRoomPart; +import cz.jzitnik.client.game.dialog.Dialog; +import cz.jzitnik.client.game.mobs.tasks.MobRoomTask; +import cz.jzitnik.client.game.utils.RoomCords; +import cz.jzitnik.client.states.DialogState; +import cz.jzitnik.client.utils.events.EventManager; import lombok.extern.slf4j.Slf4j; import java.awt.image.BufferedImage; diff --git a/src/main/java/cz/jzitnik/game/mobs/HittableMob.java b/game/src/main/java/cz/jzitnik/client/game/mobs/HittableMob.java similarity index 85% rename from src/main/java/cz/jzitnik/game/mobs/HittableMob.java rename to game/src/main/java/cz/jzitnik/client/game/mobs/HittableMob.java index 85b2799..0ede243 100644 --- a/src/main/java/cz/jzitnik/game/mobs/HittableMob.java +++ b/game/src/main/java/cz/jzitnik/client/game/mobs/HittableMob.java @@ -1,15 +1,15 @@ -package cz.jzitnik.game.mobs; +package cz.jzitnik.client.game.mobs; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.events.RerenderPart; -import cz.jzitnik.game.GameRoomPart; -import cz.jzitnik.game.GameState; -import cz.jzitnik.game.mobs.tasks.MobRoomTask; -import cz.jzitnik.game.utils.RoomCords; -import cz.jzitnik.utils.events.EventManager; -import cz.jzitnik.utils.roomtasks.RoomTask; -import cz.jzitnik.utils.roomtasks.RoomTaskScheduler; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.RerenderPart; +import cz.jzitnik.client.game.GameRoomPart; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.mobs.tasks.MobRoomTask; +import cz.jzitnik.client.game.utils.RoomCords; +import cz.jzitnik.client.utils.events.EventManager; +import cz.jzitnik.client.utils.roomtasks.RoomTask; +import cz.jzitnik.client.utils.roomtasks.RoomTaskScheduler; import lombok.Getter; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/cz/jzitnik/game/mobs/HittableMobDrops.java b/game/src/main/java/cz/jzitnik/client/game/mobs/HittableMobDrops.java similarity index 82% rename from src/main/java/cz/jzitnik/game/mobs/HittableMobDrops.java rename to game/src/main/java/cz/jzitnik/client/game/mobs/HittableMobDrops.java index 48679dd..2c9a355 100644 --- a/src/main/java/cz/jzitnik/game/mobs/HittableMobDrops.java +++ b/game/src/main/java/cz/jzitnik/client/game/mobs/HittableMobDrops.java @@ -1,19 +1,19 @@ -package cz.jzitnik.game.mobs; +package cz.jzitnik.client.game.mobs; import com.fasterxml.jackson.annotation.JacksonInject; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.events.DroppedItemRerender; -import cz.jzitnik.events.InventoryRerender; -import cz.jzitnik.game.*; -import cz.jzitnik.game.items.GameItem; -import cz.jzitnik.game.mobs.tasks.MobRoomTask; -import cz.jzitnik.game.objects.DroppedItem; -import cz.jzitnik.game.utils.RoomCords; -import cz.jzitnik.utils.events.Event; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.DroppedItemRerender; +import cz.jzitnik.client.events.InventoryRerender; +import cz.jzitnik.client.game.*; +import cz.jzitnik.client.game.items.GameItem; +import cz.jzitnik.client.game.mobs.tasks.MobRoomTask; +import cz.jzitnik.client.game.objects.DroppedItem; +import cz.jzitnik.client.game.utils.RoomCords; +import cz.jzitnik.client.utils.events.Event; +import cz.jzitnik.client.utils.events.EventManager; import java.awt.image.BufferedImage; import java.util.ArrayList; diff --git a/src/main/java/cz/jzitnik/game/mobs/HittableMobNoDrops.java b/game/src/main/java/cz/jzitnik/client/game/mobs/HittableMobNoDrops.java similarity index 76% rename from src/main/java/cz/jzitnik/game/mobs/HittableMobNoDrops.java rename to game/src/main/java/cz/jzitnik/client/game/mobs/HittableMobNoDrops.java index b944bce..834f736 100644 --- a/src/main/java/cz/jzitnik/game/mobs/HittableMobNoDrops.java +++ b/game/src/main/java/cz/jzitnik/client/game/mobs/HittableMobNoDrops.java @@ -1,12 +1,12 @@ -package cz.jzitnik.game.mobs; +package cz.jzitnik.client.game.mobs; import com.fasterxml.jackson.annotation.JacksonInject; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import cz.jzitnik.game.GameRoomPart; -import cz.jzitnik.game.ResourceManager; -import cz.jzitnik.game.mobs.tasks.MobRoomTask; -import cz.jzitnik.game.utils.RoomCords; +import cz.jzitnik.client.game.GameRoomPart; +import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.game.mobs.tasks.MobRoomTask; +import cz.jzitnik.client.game.utils.RoomCords; public class HittableMobNoDrops extends HittableMob { @JsonCreator diff --git a/src/main/java/cz/jzitnik/game/mobs/Mob.java b/game/src/main/java/cz/jzitnik/client/game/mobs/Mob.java similarity index 79% rename from src/main/java/cz/jzitnik/game/mobs/Mob.java rename to game/src/main/java/cz/jzitnik/client/game/mobs/Mob.java index 2751838..bcf7dc4 100644 --- a/src/main/java/cz/jzitnik/game/mobs/Mob.java +++ b/game/src/main/java/cz/jzitnik/client/game/mobs/Mob.java @@ -1,15 +1,15 @@ -package cz.jzitnik.game.mobs; +package cz.jzitnik.client.game.mobs; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.game.GameRoomPart; -import cz.jzitnik.game.mobs.tasks.MobRoomTask; -import cz.jzitnik.game.utils.Renderable; -import cz.jzitnik.game.utils.RoomCords; -import cz.jzitnik.game.utils.Selectable; -import cz.jzitnik.utils.roomtasks.RoomTaskScheduler; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.game.GameRoomPart; +import cz.jzitnik.client.game.mobs.tasks.MobRoomTask; +import cz.jzitnik.client.game.utils.Renderable; +import cz.jzitnik.client.game.utils.RoomCords; +import cz.jzitnik.client.game.utils.Selectable; +import cz.jzitnik.client.utils.roomtasks.RoomTaskScheduler; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/cz/jzitnik/game/mobs/tasks/BlindMobFollowingPlayerTask.java b/game/src/main/java/cz/jzitnik/client/game/mobs/tasks/BlindMobFollowingPlayerTask.java similarity index 73% rename from src/main/java/cz/jzitnik/game/mobs/tasks/BlindMobFollowingPlayerTask.java rename to game/src/main/java/cz/jzitnik/client/game/mobs/tasks/BlindMobFollowingPlayerTask.java index d1649c9..30b3bf6 100644 --- a/src/main/java/cz/jzitnik/game/mobs/tasks/BlindMobFollowingPlayerTask.java +++ b/game/src/main/java/cz/jzitnik/client/game/mobs/tasks/BlindMobFollowingPlayerTask.java @@ -1,20 +1,20 @@ -package cz.jzitnik.game.mobs.tasks; +package cz.jzitnik.client.game.mobs.tasks; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import cz.jzitnik.annotations.injectors.InjectConfig; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.config.Debugging; -import cz.jzitnik.config.MicrophoneConfig; -import cz.jzitnik.game.GameState; -import cz.jzitnik.game.ResourceManager; -import cz.jzitnik.game.mobs.Mob; -import cz.jzitnik.game.utils.RoomCords; -import cz.jzitnik.states.MicrophoneState; -import cz.jzitnik.states.ScreenBuffer; -import cz.jzitnik.states.TerminalState; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.injectors.InjectConfig; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.config.Debugging; +import cz.jzitnik.client.config.MicrophoneConfig; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.game.mobs.Mob; +import cz.jzitnik.client.game.utils.RoomCords; +import cz.jzitnik.client.states.MicrophoneState; +import cz.jzitnik.client.states.ScreenBuffer; +import cz.jzitnik.client.states.TerminalState; +import cz.jzitnik.client.utils.events.EventManager; import lombok.RequiredArgsConstructor; import lombok.Setter; diff --git a/src/main/java/cz/jzitnik/game/mobs/tasks/EnemyPlayerAttackingTask.java b/game/src/main/java/cz/jzitnik/client/game/mobs/tasks/EnemyPlayerAttackingTask.java similarity index 79% rename from src/main/java/cz/jzitnik/game/mobs/tasks/EnemyPlayerAttackingTask.java rename to game/src/main/java/cz/jzitnik/client/game/mobs/tasks/EnemyPlayerAttackingTask.java index 7ad2ee0..ec5807e 100644 --- a/src/main/java/cz/jzitnik/game/mobs/tasks/EnemyPlayerAttackingTask.java +++ b/game/src/main/java/cz/jzitnik/client/game/mobs/tasks/EnemyPlayerAttackingTask.java @@ -1,15 +1,15 @@ -package cz.jzitnik.game.mobs.tasks; +package cz.jzitnik.client.game.mobs.tasks; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.events.RenderStats; -import cz.jzitnik.game.GameState; -import cz.jzitnik.game.mobs.Mob; -import cz.jzitnik.game.utils.RoomCords; -import cz.jzitnik.utils.DependencyManager; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.RenderStats; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.mobs.Mob; +import cz.jzitnik.client.game.utils.RoomCords; +import cz.jzitnik.client.utils.DependencyManager; +import cz.jzitnik.client.utils.events.EventManager; import lombok.RequiredArgsConstructor; import lombok.Setter; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/cz/jzitnik/game/mobs/tasks/MobFollowingPlayerTask.java b/game/src/main/java/cz/jzitnik/client/game/mobs/tasks/MobFollowingPlayerTask.java similarity index 81% rename from src/main/java/cz/jzitnik/game/mobs/tasks/MobFollowingPlayerTask.java rename to game/src/main/java/cz/jzitnik/client/game/mobs/tasks/MobFollowingPlayerTask.java index 3263213..4485853 100644 --- a/src/main/java/cz/jzitnik/game/mobs/tasks/MobFollowingPlayerTask.java +++ b/game/src/main/java/cz/jzitnik/client/game/mobs/tasks/MobFollowingPlayerTask.java @@ -1,26 +1,26 @@ -package cz.jzitnik.game.mobs.tasks; +package cz.jzitnik.client.game.mobs.tasks; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.googlecode.lanterna.TerminalPosition; -import cz.jzitnik.annotations.injectors.InjectConfig; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.config.Debugging; -import cz.jzitnik.events.MouseMoveEvent; -import cz.jzitnik.events.RerenderScreen; -import cz.jzitnik.game.GameRoomPart; -import cz.jzitnik.game.GameState; -import cz.jzitnik.game.Player; -import cz.jzitnik.game.ResourceManager; -import cz.jzitnik.game.mobs.Mob; -import cz.jzitnik.game.mobs.tasks.utils.AStarAlg; -import cz.jzitnik.game.utils.RoomCords; -import cz.jzitnik.states.ScreenBuffer; -import cz.jzitnik.states.TerminalState; -import cz.jzitnik.utils.RerenderUtils; -import cz.jzitnik.utils.events.Event; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.injectors.InjectConfig; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.config.Debugging; +import cz.jzitnik.client.events.MouseMoveEvent; +import cz.jzitnik.client.events.RerenderScreen; +import cz.jzitnik.client.game.GameRoomPart; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.Player; +import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.game.mobs.Mob; +import cz.jzitnik.client.game.mobs.tasks.utils.AStarAlg; +import cz.jzitnik.client.game.utils.RoomCords; +import cz.jzitnik.client.states.ScreenBuffer; +import cz.jzitnik.client.states.TerminalState; +import cz.jzitnik.client.utils.RerenderUtils; +import cz.jzitnik.client.utils.events.Event; +import cz.jzitnik.client.utils.events.EventManager; import lombok.RequiredArgsConstructor; import lombok.Setter; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/cz/jzitnik/game/mobs/tasks/MobRoomTask.java b/game/src/main/java/cz/jzitnik/client/game/mobs/tasks/MobRoomTask.java similarity index 84% rename from src/main/java/cz/jzitnik/game/mobs/tasks/MobRoomTask.java rename to game/src/main/java/cz/jzitnik/client/game/mobs/tasks/MobRoomTask.java index 5305133..99373ab 100644 --- a/src/main/java/cz/jzitnik/game/mobs/tasks/MobRoomTask.java +++ b/game/src/main/java/cz/jzitnik/client/game/mobs/tasks/MobRoomTask.java @@ -1,9 +1,9 @@ -package cz.jzitnik.game.mobs.tasks; +package cz.jzitnik.client.game.mobs.tasks; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import cz.jzitnik.game.mobs.Mob; -import cz.jzitnik.utils.roomtasks.RoomTask; +import cz.jzitnik.client.game.mobs.Mob; +import cz.jzitnik.client.utils.roomtasks.RoomTask; import java.util.concurrent.TimeUnit; diff --git a/src/main/java/cz/jzitnik/game/mobs/tasks/utils/AStarAlg.java b/game/src/main/java/cz/jzitnik/client/game/mobs/tasks/utils/AStarAlg.java similarity index 96% rename from src/main/java/cz/jzitnik/game/mobs/tasks/utils/AStarAlg.java rename to game/src/main/java/cz/jzitnik/client/game/mobs/tasks/utils/AStarAlg.java index d1181e4..81862c2 100644 --- a/src/main/java/cz/jzitnik/game/mobs/tasks/utils/AStarAlg.java +++ b/game/src/main/java/cz/jzitnik/client/game/mobs/tasks/utils/AStarAlg.java @@ -1,7 +1,7 @@ -package cz.jzitnik.game.mobs.tasks.utils; +package cz.jzitnik.client.game.mobs.tasks.utils; -import cz.jzitnik.game.GameRoomPart; -import cz.jzitnik.game.utils.RoomCords; +import cz.jzitnik.client.game.GameRoomPart; +import cz.jzitnik.client.game.utils.RoomCords; import java.util.*; diff --git a/src/main/java/cz/jzitnik/game/objects/Chest.java b/game/src/main/java/cz/jzitnik/client/game/objects/Chest.java similarity index 87% rename from src/main/java/cz/jzitnik/game/objects/Chest.java rename to game/src/main/java/cz/jzitnik/client/game/objects/Chest.java index 5110e09..45fd5e7 100644 --- a/src/main/java/cz/jzitnik/game/objects/Chest.java +++ b/game/src/main/java/cz/jzitnik/client/game/objects/Chest.java @@ -1,4 +1,4 @@ -package cz.jzitnik.game.objects; +package cz.jzitnik.client.game.objects; import com.fasterxml.jackson.annotation.JacksonInject; import com.fasterxml.jackson.annotation.JsonCreator; @@ -6,32 +6,30 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.collect.Lists; import com.googlecode.lanterna.TerminalPosition; import com.googlecode.lanterna.TextColor; -import cz.jzitnik.annotations.injectors.InjectConfig; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.config.Debugging; -import cz.jzitnik.events.InventoryRerender; -import cz.jzitnik.events.MouseAction; -import cz.jzitnik.events.RerenderPart; -import cz.jzitnik.events.RerenderScreen; -import cz.jzitnik.game.GameRoom; -import cz.jzitnik.game.GameState; -import cz.jzitnik.game.Player; -import cz.jzitnik.game.ResourceManager; -import cz.jzitnik.game.items.GameItem; -import cz.jzitnik.game.utils.RoomCords; -import cz.jzitnik.states.ScreenBuffer; -import cz.jzitnik.states.TerminalState; -import cz.jzitnik.ui.Inventory; -import cz.jzitnik.ui.utils.Grid; -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.RerenderUtils; -import cz.jzitnik.utils.StateManager; -import cz.jzitnik.utils.UIRoomClickHandlerRepository; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.injectors.InjectConfig; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.config.Debugging; +import cz.jzitnik.client.events.InventoryRerender; +import cz.jzitnik.client.events.MouseAction; +import cz.jzitnik.client.events.RerenderPart; +import cz.jzitnik.client.events.RerenderScreen; +import cz.jzitnik.client.game.GameRoom; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.Player; +import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.game.items.GameItem; +import cz.jzitnik.client.game.utils.RoomCords; +import cz.jzitnik.client.states.ScreenBuffer; +import cz.jzitnik.client.states.TerminalState; +import cz.jzitnik.client.ui.Inventory; +import cz.jzitnik.client.ui.utils.Grid; +import cz.jzitnik.client.ui.pixels.ColoredPixel; +import cz.jzitnik.client.ui.pixels.Empty; +import cz.jzitnik.client.ui.pixels.Pixel; +import cz.jzitnik.client.utils.RerenderUtils; +import cz.jzitnik.client.utils.UIRoomClickHandlerRepository; +import cz.jzitnik.client.utils.events.EventManager; import lombok.extern.slf4j.Slf4j; import java.awt.image.BufferedImage; diff --git a/src/main/java/cz/jzitnik/game/objects/DroppedItem.java b/game/src/main/java/cz/jzitnik/client/game/objects/DroppedItem.java similarity index 63% rename from src/main/java/cz/jzitnik/game/objects/DroppedItem.java rename to game/src/main/java/cz/jzitnik/client/game/objects/DroppedItem.java index ad74bb9..adab9d7 100644 --- a/src/main/java/cz/jzitnik/game/objects/DroppedItem.java +++ b/game/src/main/java/cz/jzitnik/client/game/objects/DroppedItem.java @@ -1,17 +1,15 @@ -package cz.jzitnik.game.objects; +package cz.jzitnik.client.game.objects; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.events.DroppedItemRerender; -import cz.jzitnik.events.InventoryRerender; -import cz.jzitnik.game.GameRoom; -import cz.jzitnik.game.GameState; -import cz.jzitnik.game.items.GameItem; -import cz.jzitnik.game.utils.RoomCords; -import cz.jzitnik.game.utils.Selectable; -import cz.jzitnik.utils.DependencyManager; -import cz.jzitnik.utils.StateManager; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.DroppedItemRerender; +import cz.jzitnik.client.events.InventoryRerender; +import cz.jzitnik.client.game.GameRoom; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.items.GameItem; +import cz.jzitnik.client.game.utils.RoomCords; +import cz.jzitnik.client.game.utils.Selectable; +import cz.jzitnik.client.utils.events.EventManager; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.Setter; diff --git a/src/main/java/cz/jzitnik/game/objects/GameObject.java b/game/src/main/java/cz/jzitnik/client/game/objects/GameObject.java similarity index 81% rename from src/main/java/cz/jzitnik/game/objects/GameObject.java rename to game/src/main/java/cz/jzitnik/client/game/objects/GameObject.java index b4bda1a..df90901 100644 --- a/src/main/java/cz/jzitnik/game/objects/GameObject.java +++ b/game/src/main/java/cz/jzitnik/client/game/objects/GameObject.java @@ -1,11 +1,11 @@ -package cz.jzitnik.game.objects; +package cz.jzitnik.client.game.objects; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import cz.jzitnik.game.utils.Renderable; -import cz.jzitnik.game.utils.RoomCords; -import cz.jzitnik.game.utils.Selectable; +import cz.jzitnik.client.game.utils.Renderable; +import cz.jzitnik.client.game.utils.RoomCords; +import cz.jzitnik.client.game.utils.Selectable; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.Setter; diff --git a/src/main/java/cz/jzitnik/game/objects/Interactable.java b/game/src/main/java/cz/jzitnik/client/game/objects/Interactable.java similarity index 58% rename from src/main/java/cz/jzitnik/game/objects/Interactable.java rename to game/src/main/java/cz/jzitnik/client/game/objects/Interactable.java index 1f4f09a..c050911 100644 --- a/src/main/java/cz/jzitnik/game/objects/Interactable.java +++ b/game/src/main/java/cz/jzitnik/client/game/objects/Interactable.java @@ -1,4 +1,4 @@ -package cz.jzitnik.game.objects; +package cz.jzitnik.client.game.objects; public interface Interactable { void interact(); diff --git a/src/main/java/cz/jzitnik/game/objects/UIClickHandler.java b/game/src/main/java/cz/jzitnik/client/game/objects/UIClickHandler.java similarity index 76% rename from src/main/java/cz/jzitnik/game/objects/UIClickHandler.java rename to game/src/main/java/cz/jzitnik/client/game/objects/UIClickHandler.java index f3775af..ecc365e 100644 --- a/src/main/java/cz/jzitnik/game/objects/UIClickHandler.java +++ b/game/src/main/java/cz/jzitnik/client/game/objects/UIClickHandler.java @@ -1,6 +1,6 @@ -package cz.jzitnik.game.objects; +package cz.jzitnik.client.game.objects; -import cz.jzitnik.events.MouseAction; +import cz.jzitnik.client.events.MouseAction; public interface UIClickHandler { boolean handleClick(MouseAction mouseAction); diff --git a/src/main/java/cz/jzitnik/game/setup/GameSetup.java b/game/src/main/java/cz/jzitnik/client/game/setup/GameSetup.java similarity index 74% rename from src/main/java/cz/jzitnik/game/setup/GameSetup.java rename to game/src/main/java/cz/jzitnik/client/game/setup/GameSetup.java index b6cff1a..78b5c12 100644 --- a/src/main/java/cz/jzitnik/game/setup/GameSetup.java +++ b/game/src/main/java/cz/jzitnik/client/game/setup/GameSetup.java @@ -1,13 +1,13 @@ -package cz.jzitnik.game.setup; +package cz.jzitnik.client.game.setup; -import cz.jzitnik.annotations.Dependency; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.game.GameRoom; -import cz.jzitnik.game.GameState; -import cz.jzitnik.game.Player; -import cz.jzitnik.game.ResourceManager; -import cz.jzitnik.utils.DependencyManager; +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.game.GameRoom; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.Player; +import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.utils.DependencyManager; import lombok.extern.slf4j.Slf4j; import tools.jackson.core.type.TypeReference; import tools.jackson.databind.ObjectMapper; diff --git a/src/main/java/cz/jzitnik/game/setup/scenes/GameMenuScene.java b/game/src/main/java/cz/jzitnik/client/game/setup/scenes/GameMenuScene.java similarity index 75% rename from src/main/java/cz/jzitnik/game/setup/scenes/GameMenuScene.java rename to game/src/main/java/cz/jzitnik/client/game/setup/scenes/GameMenuScene.java index 89c5c26..990472b 100644 --- a/src/main/java/cz/jzitnik/game/setup/scenes/GameMenuScene.java +++ b/game/src/main/java/cz/jzitnik/client/game/setup/scenes/GameMenuScene.java @@ -1,18 +1,18 @@ -package cz.jzitnik.game.setup.scenes; +package cz.jzitnik.client.game.setup.scenes; import com.googlecode.lanterna.input.KeyType; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.events.FullRoomDraw; -import cz.jzitnik.events.KeyboardPressEvent; -import cz.jzitnik.events.MouseAction; -import cz.jzitnik.game.GameState; -import cz.jzitnik.screens.Screen; -import cz.jzitnik.screens.scenes.BasicImageScene; -import cz.jzitnik.screens.scenes.Scene; -import cz.jzitnik.sound.SoundPlayer; -import cz.jzitnik.utils.DependencyManager; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.FullRoomDraw; +import cz.jzitnik.client.events.KeyboardPressEvent; +import cz.jzitnik.client.events.MouseAction; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.screens.Screen; +import cz.jzitnik.client.screens.scenes.BasicImageScene; +import cz.jzitnik.client.screens.scenes.Scene; +import cz.jzitnik.client.sound.SoundPlayer; +import cz.jzitnik.client.utils.DependencyManager; +import cz.jzitnik.client.utils.events.EventManager; public class GameMenuScene extends Scene { private static class GameMenuAudioScreen extends Screen { diff --git a/src/main/java/cz/jzitnik/game/setup/scenes/IntroScene.java b/game/src/main/java/cz/jzitnik/client/game/setup/scenes/IntroScene.java similarity index 61% rename from src/main/java/cz/jzitnik/game/setup/scenes/IntroScene.java rename to game/src/main/java/cz/jzitnik/client/game/setup/scenes/IntroScene.java index f499105..2c26a85 100644 --- a/src/main/java/cz/jzitnik/game/setup/scenes/IntroScene.java +++ b/game/src/main/java/cz/jzitnik/client/game/setup/scenes/IntroScene.java @@ -1,9 +1,9 @@ -package cz.jzitnik.game.setup.scenes; +package cz.jzitnik.client.game.setup.scenes; -import cz.jzitnik.screens.Screen; -import cz.jzitnik.screens.scenes.Scene; -import cz.jzitnik.screens.scenes.VideoSceneWithAudio; -import cz.jzitnik.utils.DependencyManager; +import cz.jzitnik.client.screens.Screen; +import cz.jzitnik.client.screens.scenes.Scene; +import cz.jzitnik.client.screens.scenes.VideoSceneWithAudio; +import cz.jzitnik.client.utils.DependencyManager; public class IntroScene extends Scene { public IntroScene(DependencyManager dependencyManager) { diff --git a/src/main/java/cz/jzitnik/game/utils/Renderable.java b/game/src/main/java/cz/jzitnik/client/game/utils/Renderable.java similarity index 73% rename from src/main/java/cz/jzitnik/game/utils/Renderable.java rename to game/src/main/java/cz/jzitnik/client/game/utils/Renderable.java index c39e169..b1f4d87 100644 --- a/src/main/java/cz/jzitnik/game/utils/Renderable.java +++ b/game/src/main/java/cz/jzitnik/client/game/utils/Renderable.java @@ -1,4 +1,4 @@ -package cz.jzitnik.game.utils; +package cz.jzitnik.client.game.utils; import java.awt.image.BufferedImage; diff --git a/src/main/java/cz/jzitnik/game/utils/RoomCords.java b/game/src/main/java/cz/jzitnik/client/game/utils/RoomCords.java similarity index 95% rename from src/main/java/cz/jzitnik/game/utils/RoomCords.java rename to game/src/main/java/cz/jzitnik/client/game/utils/RoomCords.java index 4d42f2a..a40bbd2 100644 --- a/src/main/java/cz/jzitnik/game/utils/RoomCords.java +++ b/game/src/main/java/cz/jzitnik/client/game/utils/RoomCords.java @@ -1,8 +1,8 @@ -package cz.jzitnik.game.utils; +package cz.jzitnik.client.game.utils; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; -import cz.jzitnik.game.GameRoomPart; +import cz.jzitnik.client.game.GameRoomPart; import lombok.Getter; import lombok.ToString; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/cz/jzitnik/game/utils/Selectable.java b/game/src/main/java/cz/jzitnik/client/game/utils/Selectable.java similarity index 75% rename from src/main/java/cz/jzitnik/game/utils/Selectable.java rename to game/src/main/java/cz/jzitnik/client/game/utils/Selectable.java index 1052413..32a6326 100644 --- a/src/main/java/cz/jzitnik/game/utils/Selectable.java +++ b/game/src/main/java/cz/jzitnik/client/game/utils/Selectable.java @@ -1,6 +1,6 @@ -package cz.jzitnik.game.utils; +package cz.jzitnik.client.game.utils; -import cz.jzitnik.game.objects.Interactable; +import cz.jzitnik.client.game.objects.Interactable; import java.awt.image.BufferedImage; diff --git a/src/main/java/cz/jzitnik/screens/Screen.java b/game/src/main/java/cz/jzitnik/client/screens/Screen.java similarity index 61% rename from src/main/java/cz/jzitnik/screens/Screen.java rename to game/src/main/java/cz/jzitnik/client/screens/Screen.java index c821afe..68eae0e 100644 --- a/src/main/java/cz/jzitnik/screens/Screen.java +++ b/game/src/main/java/cz/jzitnik/client/screens/Screen.java @@ -1,7 +1,7 @@ -package cz.jzitnik.screens; +package cz.jzitnik.client.screens; -import cz.jzitnik.events.KeyboardPressEvent; -import cz.jzitnik.events.MouseAction; +import cz.jzitnik.client.events.KeyboardPressEvent; +import cz.jzitnik.client.events.MouseAction; public abstract class Screen { public abstract void fullRender(); diff --git a/src/main/java/cz/jzitnik/screens/VideoPlayScreen.java b/game/src/main/java/cz/jzitnik/client/screens/VideoPlayScreen.java similarity index 95% rename from src/main/java/cz/jzitnik/screens/VideoPlayScreen.java rename to game/src/main/java/cz/jzitnik/client/screens/VideoPlayScreen.java index 9532bc3..b330ad1 100644 --- a/src/main/java/cz/jzitnik/screens/VideoPlayScreen.java +++ b/game/src/main/java/cz/jzitnik/client/screens/VideoPlayScreen.java @@ -1,11 +1,11 @@ -package cz.jzitnik.screens; +package cz.jzitnik.client.screens; import com.googlecode.lanterna.TextColor; import com.googlecode.lanterna.screen.TerminalScreen; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.game.ResourceManager; -import cz.jzitnik.states.TerminalState; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.states.TerminalState; import lombok.extern.slf4j.Slf4j; import org.bytedeco.javacv.FFmpegFrameGrabber; import org.bytedeco.javacv.Frame; diff --git a/src/main/java/cz/jzitnik/screens/scenes/BasicImageScene.java b/game/src/main/java/cz/jzitnik/client/screens/scenes/BasicImageScene.java similarity index 87% rename from src/main/java/cz/jzitnik/screens/scenes/BasicImageScene.java rename to game/src/main/java/cz/jzitnik/client/screens/scenes/BasicImageScene.java index dda30e9..386c876 100644 --- a/src/main/java/cz/jzitnik/screens/scenes/BasicImageScene.java +++ b/game/src/main/java/cz/jzitnik/client/screens/scenes/BasicImageScene.java @@ -1,14 +1,14 @@ -package cz.jzitnik.screens.scenes; +package cz.jzitnik.client.screens.scenes; import com.googlecode.lanterna.TextColor; import com.googlecode.lanterna.screen.TerminalScreen; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.events.KeyboardPressEvent; -import cz.jzitnik.events.MouseAction; -import cz.jzitnik.game.ResourceManager; -import cz.jzitnik.screens.Screen; -import cz.jzitnik.states.TerminalState; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.KeyboardPressEvent; +import cz.jzitnik.client.events.MouseAction; +import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.screens.Screen; +import cz.jzitnik.client.states.TerminalState; import java.awt.image.BufferedImage; import java.io.IOException; diff --git a/src/main/java/cz/jzitnik/screens/scenes/BasicVideoScene.java b/game/src/main/java/cz/jzitnik/client/screens/scenes/BasicVideoScene.java similarity index 61% rename from src/main/java/cz/jzitnik/screens/scenes/BasicVideoScene.java rename to game/src/main/java/cz/jzitnik/client/screens/scenes/BasicVideoScene.java index 2895646..3f6c68c 100644 --- a/src/main/java/cz/jzitnik/screens/scenes/BasicVideoScene.java +++ b/game/src/main/java/cz/jzitnik/client/screens/scenes/BasicVideoScene.java @@ -1,8 +1,8 @@ -package cz.jzitnik.screens.scenes; +package cz.jzitnik.client.screens.scenes; -import cz.jzitnik.events.KeyboardPressEvent; -import cz.jzitnik.events.MouseAction; -import cz.jzitnik.screens.VideoPlayScreen; +import cz.jzitnik.client.events.KeyboardPressEvent; +import cz.jzitnik.client.events.MouseAction; +import cz.jzitnik.client.screens.VideoPlayScreen; public final class BasicVideoScene extends VideoPlayScreen { public BasicVideoScene(String videoPath) { diff --git a/src/main/java/cz/jzitnik/screens/scenes/Scene.java b/game/src/main/java/cz/jzitnik/client/screens/scenes/Scene.java similarity index 84% rename from src/main/java/cz/jzitnik/screens/scenes/Scene.java rename to game/src/main/java/cz/jzitnik/client/screens/scenes/Scene.java index 6c390a0..24affa0 100644 --- a/src/main/java/cz/jzitnik/screens/scenes/Scene.java +++ b/game/src/main/java/cz/jzitnik/client/screens/scenes/Scene.java @@ -1,14 +1,14 @@ -package cz.jzitnik.screens.scenes; +package cz.jzitnik.client.screens.scenes; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.events.FullRoomDraw; -import cz.jzitnik.events.KeyboardPressEvent; -import cz.jzitnik.events.MouseAction; -import cz.jzitnik.game.GameState; -import cz.jzitnik.screens.Screen; -import cz.jzitnik.utils.DependencyManager; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.FullRoomDraw; +import cz.jzitnik.client.events.KeyboardPressEvent; +import cz.jzitnik.client.events.MouseAction; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.screens.Screen; +import cz.jzitnik.client.utils.DependencyManager; +import cz.jzitnik.client.utils.events.EventManager; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/cz/jzitnik/screens/scenes/VideoSceneWithAudio.java b/game/src/main/java/cz/jzitnik/client/screens/scenes/VideoSceneWithAudio.java similarity index 78% rename from src/main/java/cz/jzitnik/screens/scenes/VideoSceneWithAudio.java rename to game/src/main/java/cz/jzitnik/client/screens/scenes/VideoSceneWithAudio.java index 5aa73fd..94b1996 100644 --- a/src/main/java/cz/jzitnik/screens/scenes/VideoSceneWithAudio.java +++ b/game/src/main/java/cz/jzitnik/client/screens/scenes/VideoSceneWithAudio.java @@ -1,9 +1,9 @@ -package cz.jzitnik.screens.scenes; +package cz.jzitnik.client.screens.scenes; -import cz.jzitnik.events.KeyboardPressEvent; -import cz.jzitnik.events.MouseAction; -import cz.jzitnik.screens.VideoPlayScreen; -import cz.jzitnik.sound.SoundPlayer; +import cz.jzitnik.client.events.KeyboardPressEvent; +import cz.jzitnik.client.events.MouseAction; +import cz.jzitnik.client.screens.VideoPlayScreen; +import cz.jzitnik.client.sound.SoundPlayer; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/src/main/java/cz/jzitnik/sound/SoundPlayer.java b/game/src/main/java/cz/jzitnik/client/sound/SoundPlayer.java similarity index 99% rename from src/main/java/cz/jzitnik/sound/SoundPlayer.java rename to game/src/main/java/cz/jzitnik/client/sound/SoundPlayer.java index ea18f7a..293a38f 100644 --- a/src/main/java/cz/jzitnik/sound/SoundPlayer.java +++ b/game/src/main/java/cz/jzitnik/client/sound/SoundPlayer.java @@ -1,4 +1,4 @@ -package cz.jzitnik.sound; +package cz.jzitnik.client.sound; import javax.sound.sampled.*; diff --git a/src/main/java/cz/jzitnik/states/DialogState.java b/game/src/main/java/cz/jzitnik/client/states/DialogState.java similarity index 60% rename from src/main/java/cz/jzitnik/states/DialogState.java rename to game/src/main/java/cz/jzitnik/client/states/DialogState.java index 60f15e0..4e36f41 100644 --- a/src/main/java/cz/jzitnik/states/DialogState.java +++ b/game/src/main/java/cz/jzitnik/client/states/DialogState.java @@ -1,7 +1,7 @@ -package cz.jzitnik.states; +package cz.jzitnik.client.states; -import cz.jzitnik.annotations.State; -import cz.jzitnik.game.dialog.Dialog; +import cz.jzitnik.client.annotations.State; +import cz.jzitnik.client.game.dialog.Dialog; import lombok.Data; @State diff --git a/src/main/java/cz/jzitnik/states/MicrophoneState.java b/game/src/main/java/cz/jzitnik/client/states/MicrophoneState.java similarity index 65% rename from src/main/java/cz/jzitnik/states/MicrophoneState.java rename to game/src/main/java/cz/jzitnik/client/states/MicrophoneState.java index 1095ddd..1c540e0 100644 --- a/src/main/java/cz/jzitnik/states/MicrophoneState.java +++ b/game/src/main/java/cz/jzitnik/client/states/MicrophoneState.java @@ -1,6 +1,6 @@ -package cz.jzitnik.states; +package cz.jzitnik.client.states; -import cz.jzitnik.annotations.State; +import cz.jzitnik.client.annotations.State; import lombok.Data; @Data diff --git a/game/src/main/java/cz/jzitnik/client/states/PlayerConfig.java b/game/src/main/java/cz/jzitnik/client/states/PlayerConfig.java new file mode 100644 index 0000000..38d1595 --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/states/PlayerConfig.java @@ -0,0 +1,8 @@ +package cz.jzitnik.client.states; + +import cz.jzitnik.client.annotations.State; + +@State +public class PlayerConfig { + private int masterVolume = 100; +} diff --git a/src/main/java/cz/jzitnik/states/PlayerMovementState.java b/game/src/main/java/cz/jzitnik/client/states/PlayerMovementState.java similarity index 70% rename from src/main/java/cz/jzitnik/states/PlayerMovementState.java rename to game/src/main/java/cz/jzitnik/client/states/PlayerMovementState.java index eaa4e1d..6f5b966 100644 --- a/src/main/java/cz/jzitnik/states/PlayerMovementState.java +++ b/game/src/main/java/cz/jzitnik/client/states/PlayerMovementState.java @@ -1,6 +1,6 @@ -package cz.jzitnik.states; +package cz.jzitnik.client.states; -import cz.jzitnik.annotations.State; +import cz.jzitnik.client.annotations.State; import lombok.Data; import java.util.concurrent.ScheduledFuture; diff --git a/src/main/java/cz/jzitnik/states/RenderState.java b/game/src/main/java/cz/jzitnik/client/states/RenderState.java similarity index 70% rename from src/main/java/cz/jzitnik/states/RenderState.java rename to game/src/main/java/cz/jzitnik/client/states/RenderState.java index faf2ea5..85e5a12 100644 --- a/src/main/java/cz/jzitnik/states/RenderState.java +++ b/game/src/main/java/cz/jzitnik/client/states/RenderState.java @@ -1,6 +1,6 @@ -package cz.jzitnik.states; +package cz.jzitnik.client.states; -import cz.jzitnik.annotations.State; +import cz.jzitnik.client.annotations.State; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/cz/jzitnik/states/RunningState.java b/game/src/main/java/cz/jzitnik/client/states/RunningState.java similarity index 56% rename from src/main/java/cz/jzitnik/states/RunningState.java rename to game/src/main/java/cz/jzitnik/client/states/RunningState.java index 0333c74..f52a53f 100644 --- a/src/main/java/cz/jzitnik/states/RunningState.java +++ b/game/src/main/java/cz/jzitnik/client/states/RunningState.java @@ -1,6 +1,6 @@ -package cz.jzitnik.states; +package cz.jzitnik.client.states; -import cz.jzitnik.annotations.State; +import cz.jzitnik.client.annotations.State; import lombok.Data; @Data diff --git a/src/main/java/cz/jzitnik/states/ScreenBuffer.java b/game/src/main/java/cz/jzitnik/client/states/ScreenBuffer.java similarity index 53% rename from src/main/java/cz/jzitnik/states/ScreenBuffer.java rename to game/src/main/java/cz/jzitnik/client/states/ScreenBuffer.java index 2465b17..17de964 100644 --- a/src/main/java/cz/jzitnik/states/ScreenBuffer.java +++ b/game/src/main/java/cz/jzitnik/client/states/ScreenBuffer.java @@ -1,8 +1,8 @@ -package cz.jzitnik.states; +package cz.jzitnik.client.states; -import cz.jzitnik.annotations.State; -import cz.jzitnik.ui.pixels.AlphaPixel; -import cz.jzitnik.ui.pixels.Pixel; +import cz.jzitnik.client.annotations.State; +import cz.jzitnik.client.ui.pixels.AlphaPixel; +import cz.jzitnik.client.ui.pixels.Pixel; import lombok.Data; @Data diff --git a/src/main/java/cz/jzitnik/states/TerminalState.java b/game/src/main/java/cz/jzitnik/client/states/TerminalState.java similarity index 76% rename from src/main/java/cz/jzitnik/states/TerminalState.java rename to game/src/main/java/cz/jzitnik/client/states/TerminalState.java index c21f555..4cfdc41 100644 --- a/src/main/java/cz/jzitnik/states/TerminalState.java +++ b/game/src/main/java/cz/jzitnik/client/states/TerminalState.java @@ -1,8 +1,8 @@ -package cz.jzitnik.states; +package cz.jzitnik.client.states; import com.googlecode.lanterna.graphics.TextGraphics; import com.googlecode.lanterna.screen.TerminalScreen; -import cz.jzitnik.annotations.State; +import cz.jzitnik.client.annotations.State; import lombok.Data; @State diff --git a/src/main/java/cz/jzitnik/tasks/StaminaIncreaseTask.java b/game/src/main/java/cz/jzitnik/client/tasks/StaminaIncreaseTask.java similarity index 76% rename from src/main/java/cz/jzitnik/tasks/StaminaIncreaseTask.java rename to game/src/main/java/cz/jzitnik/client/tasks/StaminaIncreaseTask.java index 3866b02..f1b49fb 100644 --- a/src/main/java/cz/jzitnik/tasks/StaminaIncreaseTask.java +++ b/game/src/main/java/cz/jzitnik/client/tasks/StaminaIncreaseTask.java @@ -1,17 +1,17 @@ -package cz.jzitnik.tasks; +package cz.jzitnik.client.tasks; -import cz.jzitnik.annotations.ScheduledTask; -import cz.jzitnik.annotations.injectors.InjectConfig; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.config.PlayerConfig; -import cz.jzitnik.events.RenderStats; -import cz.jzitnik.game.GameState; -import cz.jzitnik.game.Player; -import cz.jzitnik.states.PlayerMovementState; -import cz.jzitnik.utils.DependencyManager; -import cz.jzitnik.utils.ScheduledTaskManager; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.ScheduledTask; +import cz.jzitnik.client.annotations.injectors.InjectConfig; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.config.PlayerConfig; +import cz.jzitnik.client.events.RenderStats; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.Player; +import cz.jzitnik.client.states.PlayerMovementState; +import cz.jzitnik.client.utils.DependencyManager; +import cz.jzitnik.client.utils.ScheduledTaskManager; +import cz.jzitnik.client.utils.events.EventManager; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; diff --git a/src/main/java/cz/jzitnik/threads/MicrophoneThread.java b/game/src/main/java/cz/jzitnik/client/threads/MicrophoneThread.java similarity index 88% rename from src/main/java/cz/jzitnik/threads/MicrophoneThread.java rename to game/src/main/java/cz/jzitnik/client/threads/MicrophoneThread.java index 16f5041..54b8393 100644 --- a/src/main/java/cz/jzitnik/threads/MicrophoneThread.java +++ b/game/src/main/java/cz/jzitnik/client/threads/MicrophoneThread.java @@ -1,14 +1,14 @@ -package cz.jzitnik.threads; +package cz.jzitnik.client.threads; import be.tarsos.dsp.AudioDispatcher; import be.tarsos.dsp.AudioEvent; import be.tarsos.dsp.AudioProcessor; import be.tarsos.dsp.filters.HighPass; import be.tarsos.dsp.io.jvm.AudioDispatcherFactory; -import cz.jzitnik.annotations.ThreadRegistry; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.states.MicrophoneState; -import cz.jzitnik.utils.ShutdownableThread; +import cz.jzitnik.client.annotations.ThreadRegistry; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.states.MicrophoneState; +import cz.jzitnik.client.utils.ShutdownableThread; import lombok.extern.slf4j.Slf4j; import javax.sound.sampled.LineUnavailableException; diff --git a/src/main/java/cz/jzitnik/ui/DialogUI.java b/game/src/main/java/cz/jzitnik/client/ui/DialogUI.java similarity index 86% rename from src/main/java/cz/jzitnik/ui/DialogUI.java rename to game/src/main/java/cz/jzitnik/client/ui/DialogUI.java index af1ea7f..6de27b5 100644 --- a/src/main/java/cz/jzitnik/ui/DialogUI.java +++ b/game/src/main/java/cz/jzitnik/client/ui/DialogUI.java @@ -1,27 +1,27 @@ -package cz.jzitnik.ui; +package cz.jzitnik.client.ui; import com.googlecode.lanterna.TerminalPosition; import com.googlecode.lanterna.TerminalSize; -import cz.jzitnik.annotations.Dependency; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.annotations.ui.MouseHandler; -import cz.jzitnik.annotations.ui.MouseHandlerType; -import cz.jzitnik.annotations.ui.UI; -import cz.jzitnik.events.MouseAction; -import cz.jzitnik.events.RerenderScreen; -import cz.jzitnik.events.handlers.DialogEventHandler; -import cz.jzitnik.game.dialog.OnEnd; -import cz.jzitnik.states.DialogState; -import cz.jzitnik.states.ScreenBuffer; -import cz.jzitnik.states.TerminalState; -import cz.jzitnik.ui.pixels.Empty; -import cz.jzitnik.utils.TextRenderer; -import cz.jzitnik.utils.events.Event; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.annotations.ui.MouseHandler; +import cz.jzitnik.client.annotations.ui.MouseHandlerType; +import cz.jzitnik.client.annotations.ui.UI; +import cz.jzitnik.client.events.MouseAction; +import cz.jzitnik.client.events.RerenderScreen; +import cz.jzitnik.client.events.handlers.DialogEventHandler; +import cz.jzitnik.client.game.dialog.OnEnd; +import cz.jzitnik.client.states.DialogState; +import cz.jzitnik.client.states.ScreenBuffer; +import cz.jzitnik.client.states.TerminalState; +import cz.jzitnik.client.ui.pixels.Empty; +import cz.jzitnik.client.utils.TextRenderer; +import cz.jzitnik.client.utils.events.Event; +import cz.jzitnik.client.utils.events.EventManager; import lombok.extern.slf4j.Slf4j; -import static cz.jzitnik.events.handlers.DialogEventHandler.*; +import static cz.jzitnik.client.events.handlers.DialogEventHandler.*; @Slf4j @UI diff --git a/src/main/java/cz/jzitnik/ui/GlobalShortcuts.java b/game/src/main/java/cz/jzitnik/client/ui/GlobalShortcuts.java similarity index 63% rename from src/main/java/cz/jzitnik/ui/GlobalShortcuts.java rename to game/src/main/java/cz/jzitnik/client/ui/GlobalShortcuts.java index 4434020..9ff3cb3 100644 --- a/src/main/java/cz/jzitnik/ui/GlobalShortcuts.java +++ b/game/src/main/java/cz/jzitnik/client/ui/GlobalShortcuts.java @@ -1,15 +1,15 @@ -package cz.jzitnik.ui; +package cz.jzitnik.client.ui; import com.googlecode.lanterna.input.KeyType; -import cz.jzitnik.annotations.Dependency; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.ui.KeyboardPressHandler; -import cz.jzitnik.annotations.ui.UI; -import cz.jzitnik.events.ExitEvent; -import cz.jzitnik.events.FullRedrawEvent; -import cz.jzitnik.events.KeyboardPressEvent; -import cz.jzitnik.events.PlayerMoveEvent; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.ui.KeyboardPressHandler; +import cz.jzitnik.client.annotations.ui.UI; +import cz.jzitnik.client.events.ExitEvent; +import cz.jzitnik.client.events.FullRedrawEvent; +import cz.jzitnik.client.events.KeyboardPressEvent; +import cz.jzitnik.client.events.PlayerMoveEvent; +import cz.jzitnik.client.utils.events.EventManager; @UI @Dependency diff --git a/src/main/java/cz/jzitnik/ui/Inventory.java b/game/src/main/java/cz/jzitnik/client/ui/Inventory.java similarity index 92% rename from src/main/java/cz/jzitnik/ui/Inventory.java rename to game/src/main/java/cz/jzitnik/client/ui/Inventory.java index 794a74b..daeaba1 100644 --- a/src/main/java/cz/jzitnik/ui/Inventory.java +++ b/game/src/main/java/cz/jzitnik/client/ui/Inventory.java @@ -1,34 +1,34 @@ -package cz.jzitnik.ui; +package cz.jzitnik.client.ui; import com.googlecode.lanterna.TerminalPosition; import com.googlecode.lanterna.TerminalSize; import com.googlecode.lanterna.TextColor; -import cz.jzitnik.annotations.Dependency; -import cz.jzitnik.annotations.injectors.InjectConfig; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.annotations.ui.*; -import cz.jzitnik.config.CoreLogic; -import cz.jzitnik.events.DroppedItemRerender; -import cz.jzitnik.events.InventoryRerender; -import cz.jzitnik.events.KeyboardPressEvent; -import cz.jzitnik.events.MouseAction; -import cz.jzitnik.game.GameState; -import cz.jzitnik.game.ResourceManager; -import cz.jzitnik.game.items.GameItem; -import cz.jzitnik.game.items.types.InteractableItem; -import cz.jzitnik.game.objects.DroppedItem; -import cz.jzitnik.game.utils.RoomCords; -import cz.jzitnik.states.ScreenBuffer; -import cz.jzitnik.states.TerminalState; -import cz.jzitnik.ui.pixels.ColoredPixel; -import cz.jzitnik.ui.pixels.Pixel; -import cz.jzitnik.ui.utils.Grid; -import cz.jzitnik.utils.DependencyManager; -import cz.jzitnik.utils.RerenderUtils; -import cz.jzitnik.utils.ScheduledSerializedTaskManager; -import cz.jzitnik.utils.StateManager; -import cz.jzitnik.utils.events.EventManager; +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.injectors.InjectConfig; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.annotations.ui.*; +import cz.jzitnik.client.config.CoreLogic; +import cz.jzitnik.client.events.DroppedItemRerender; +import cz.jzitnik.client.events.InventoryRerender; +import cz.jzitnik.client.events.KeyboardPressEvent; +import cz.jzitnik.client.events.MouseAction; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.game.items.GameItem; +import cz.jzitnik.client.game.items.types.InteractableItem; +import cz.jzitnik.client.game.objects.DroppedItem; +import cz.jzitnik.client.game.utils.RoomCords; +import cz.jzitnik.client.states.ScreenBuffer; +import cz.jzitnik.client.states.TerminalState; +import cz.jzitnik.client.ui.pixels.ColoredPixel; +import cz.jzitnik.client.ui.pixels.Pixel; +import cz.jzitnik.client.ui.utils.Grid; +import cz.jzitnik.client.utils.DependencyManager; +import cz.jzitnik.client.utils.RerenderUtils; +import cz.jzitnik.client.utils.ScheduledSerializedTaskManager; +import cz.jzitnik.client.utils.StateManager; +import cz.jzitnik.client.utils.events.EventManager; import lombok.Getter; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/cz/jzitnik/ui/Stats.java b/game/src/main/java/cz/jzitnik/client/ui/Stats.java similarity index 84% rename from src/main/java/cz/jzitnik/ui/Stats.java rename to game/src/main/java/cz/jzitnik/client/ui/Stats.java index 74a7ddd..f729ed1 100644 --- a/src/main/java/cz/jzitnik/ui/Stats.java +++ b/game/src/main/java/cz/jzitnik/client/ui/Stats.java @@ -1,19 +1,19 @@ -package cz.jzitnik.ui; +package cz.jzitnik.client.ui; import com.googlecode.lanterna.TextColor; -import cz.jzitnik.annotations.Dependency; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.annotations.ui.Render; -import cz.jzitnik.annotations.ui.UI; -import cz.jzitnik.game.GameState; -import cz.jzitnik.game.Player; -import cz.jzitnik.game.ResourceManager; -import cz.jzitnik.states.ScreenBuffer; -import cz.jzitnik.ui.pixels.ColoredPixel; -import cz.jzitnik.ui.pixels.Empty; -import cz.jzitnik.ui.pixels.Pixel; -import cz.jzitnik.utils.RerenderUtils; +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.annotations.ui.Render; +import cz.jzitnik.client.annotations.ui.UI; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.Player; +import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.states.ScreenBuffer; +import cz.jzitnik.client.ui.pixels.ColoredPixel; +import cz.jzitnik.client.ui.pixels.Empty; +import cz.jzitnik.client.ui.pixels.Pixel; +import cz.jzitnik.client.utils.RerenderUtils; import lombok.Getter; import java.awt.image.BufferedImage; diff --git a/src/main/java/cz/jzitnik/ui/pixels/AlphaPixel.java b/game/src/main/java/cz/jzitnik/client/ui/pixels/AlphaPixel.java similarity index 89% rename from src/main/java/cz/jzitnik/ui/pixels/AlphaPixel.java rename to game/src/main/java/cz/jzitnik/client/ui/pixels/AlphaPixel.java index fdc1ff9..b6819fb 100644 --- a/src/main/java/cz/jzitnik/ui/pixels/AlphaPixel.java +++ b/game/src/main/java/cz/jzitnik/client/ui/pixels/AlphaPixel.java @@ -1,4 +1,4 @@ -package cz.jzitnik.ui.pixels; +package cz.jzitnik.client.ui.pixels; import com.googlecode.lanterna.TextColor; import lombok.Getter; diff --git a/src/main/java/cz/jzitnik/ui/pixels/ColoredPixel.java b/game/src/main/java/cz/jzitnik/client/ui/pixels/ColoredPixel.java similarity index 87% rename from src/main/java/cz/jzitnik/ui/pixels/ColoredPixel.java rename to game/src/main/java/cz/jzitnik/client/ui/pixels/ColoredPixel.java index 0c844ab..767da0a 100644 --- a/src/main/java/cz/jzitnik/ui/pixels/ColoredPixel.java +++ b/game/src/main/java/cz/jzitnik/client/ui/pixels/ColoredPixel.java @@ -1,4 +1,4 @@ -package cz.jzitnik.ui.pixels; +package cz.jzitnik.client.ui.pixels; import com.googlecode.lanterna.TextColor; diff --git a/src/main/java/cz/jzitnik/ui/pixels/Empty.java b/game/src/main/java/cz/jzitnik/client/ui/pixels/Empty.java similarity index 73% rename from src/main/java/cz/jzitnik/ui/pixels/Empty.java rename to game/src/main/java/cz/jzitnik/client/ui/pixels/Empty.java index 761bc06..219cc2d 100644 --- a/src/main/java/cz/jzitnik/ui/pixels/Empty.java +++ b/game/src/main/java/cz/jzitnik/client/ui/pixels/Empty.java @@ -1,4 +1,4 @@ -package cz.jzitnik.ui.pixels; +package cz.jzitnik.client.ui.pixels; public final class Empty extends AlphaPixel { public Empty() { diff --git a/src/main/java/cz/jzitnik/ui/pixels/Pixel.java b/game/src/main/java/cz/jzitnik/client/ui/pixels/Pixel.java similarity index 85% rename from src/main/java/cz/jzitnik/ui/pixels/Pixel.java rename to game/src/main/java/cz/jzitnik/client/ui/pixels/Pixel.java index 462f242..1d7a1b9 100644 --- a/src/main/java/cz/jzitnik/ui/pixels/Pixel.java +++ b/game/src/main/java/cz/jzitnik/client/ui/pixels/Pixel.java @@ -1,4 +1,4 @@ -package cz.jzitnik.ui.pixels; +package cz.jzitnik.client.ui.pixels; import com.googlecode.lanterna.TextColor; import lombok.AllArgsConstructor; diff --git a/src/main/java/cz/jzitnik/ui/utils/Grid.java b/game/src/main/java/cz/jzitnik/client/ui/utils/Grid.java similarity index 98% rename from src/main/java/cz/jzitnik/ui/utils/Grid.java rename to game/src/main/java/cz/jzitnik/client/ui/utils/Grid.java index 5d5c3ae..d97ba3a 100644 --- a/src/main/java/cz/jzitnik/ui/utils/Grid.java +++ b/game/src/main/java/cz/jzitnik/client/ui/utils/Grid.java @@ -1,7 +1,7 @@ -package cz.jzitnik.ui.utils; +package cz.jzitnik.client.ui.utils; -import cz.jzitnik.ui.pixels.ColoredPixel; -import cz.jzitnik.ui.pixels.Pixel; +import cz.jzitnik.client.ui.pixels.ColoredPixel; +import cz.jzitnik.client.ui.pixels.Pixel; import java.awt.image.BufferedImage; diff --git a/src/main/java/cz/jzitnik/utils/DependencyManager.java b/game/src/main/java/cz/jzitnik/client/utils/DependencyManager.java similarity index 95% rename from src/main/java/cz/jzitnik/utils/DependencyManager.java rename to game/src/main/java/cz/jzitnik/client/utils/DependencyManager.java index df403be..3e67869 100644 --- a/src/main/java/cz/jzitnik/utils/DependencyManager.java +++ b/game/src/main/java/cz/jzitnik/client/utils/DependencyManager.java @@ -1,16 +1,16 @@ -package cz.jzitnik.utils; +package cz.jzitnik.client.utils; // Don't blame me that I'm using field injection instead of construction injection. I just like it more, leave me alone. // Yes, I know I'll suffer in the unit tests. (who said there will be any? hmmm) import com.google.common.collect.ClassToInstanceMap; import com.google.common.collect.MutableClassToInstanceMap; -import cz.jzitnik.annotations.Config; -import cz.jzitnik.annotations.Dependency; -import cz.jzitnik.annotations.PostInit; -import cz.jzitnik.annotations.injectors.InjectConfig; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; +import cz.jzitnik.client.annotations.Config; +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.PostInit; +import cz.jzitnik.client.annotations.injectors.InjectConfig; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; import lombok.extern.slf4j.Slf4j; import org.reflections.Reflections; import tools.jackson.core.JacksonException; diff --git a/src/main/java/cz/jzitnik/utils/GlobalIOHandlerRepository.java b/game/src/main/java/cz/jzitnik/client/utils/GlobalIOHandlerRepository.java similarity index 92% rename from src/main/java/cz/jzitnik/utils/GlobalIOHandlerRepository.java rename to game/src/main/java/cz/jzitnik/client/utils/GlobalIOHandlerRepository.java index 062283b..61aa022 100644 --- a/src/main/java/cz/jzitnik/utils/GlobalIOHandlerRepository.java +++ b/game/src/main/java/cz/jzitnik/client/utils/GlobalIOHandlerRepository.java @@ -1,14 +1,14 @@ -package cz.jzitnik.utils; +package cz.jzitnik.client.utils; import com.googlecode.lanterna.input.KeyType; -import cz.jzitnik.annotations.Dependency; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.ui.KeyboardPressHandler; -import cz.jzitnik.annotations.ui.MouseHandler; -import cz.jzitnik.annotations.ui.Render; -import cz.jzitnik.annotations.ui.UI; -import cz.jzitnik.events.KeyboardPressEvent; -import cz.jzitnik.events.MouseAction; +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.ui.KeyboardPressHandler; +import cz.jzitnik.client.annotations.ui.MouseHandler; +import cz.jzitnik.client.annotations.ui.Render; +import cz.jzitnik.client.annotations.ui.UI; +import cz.jzitnik.client.events.KeyboardPressEvent; +import cz.jzitnik.client.events.MouseAction; import lombok.extern.slf4j.Slf4j; import org.reflections.Reflections; diff --git a/src/main/java/cz/jzitnik/utils/RerenderUtils.java b/game/src/main/java/cz/jzitnik/client/utils/RerenderUtils.java similarity index 93% rename from src/main/java/cz/jzitnik/utils/RerenderUtils.java rename to game/src/main/java/cz/jzitnik/client/utils/RerenderUtils.java index 1f691c5..3a00124 100644 --- a/src/main/java/cz/jzitnik/utils/RerenderUtils.java +++ b/game/src/main/java/cz/jzitnik/client/utils/RerenderUtils.java @@ -1,20 +1,20 @@ -package cz.jzitnik.utils; +package cz.jzitnik.client.utils; import com.googlecode.lanterna.TerminalSize; import com.googlecode.lanterna.TextColor; -import cz.jzitnik.config.Debugging; -import cz.jzitnik.events.handlers.FullRoomDrawHandler; -import cz.jzitnik.game.GameRoom; -import cz.jzitnik.game.Player; -import cz.jzitnik.game.ResourceManager; -import cz.jzitnik.game.mobs.Mob; -import cz.jzitnik.game.objects.DroppedItem; -import cz.jzitnik.game.objects.GameObject; -import cz.jzitnik.game.utils.RoomCords; -import cz.jzitnik.states.ScreenBuffer; -import cz.jzitnik.ui.pixels.ColoredPixel; -import cz.jzitnik.ui.pixels.Empty; -import cz.jzitnik.ui.pixels.Pixel; +import cz.jzitnik.client.config.Debugging; +import cz.jzitnik.client.events.handlers.FullRoomDrawHandler; +import cz.jzitnik.client.game.GameRoom; +import cz.jzitnik.client.game.Player; +import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.game.mobs.Mob; +import cz.jzitnik.client.game.objects.DroppedItem; +import cz.jzitnik.client.game.objects.GameObject; +import cz.jzitnik.client.game.utils.RoomCords; +import cz.jzitnik.client.states.ScreenBuffer; +import cz.jzitnik.client.ui.pixels.ColoredPixel; +import cz.jzitnik.client.ui.pixels.Empty; +import cz.jzitnik.client.ui.pixels.Pixel; import lombok.extern.slf4j.Slf4j; import java.awt.image.BufferedImage; diff --git a/src/main/java/cz/jzitnik/utils/ScheduledSerializedTaskManager.java b/game/src/main/java/cz/jzitnik/client/utils/ScheduledSerializedTaskManager.java similarity index 96% rename from src/main/java/cz/jzitnik/utils/ScheduledSerializedTaskManager.java rename to game/src/main/java/cz/jzitnik/client/utils/ScheduledSerializedTaskManager.java index 600e3df..1a51b5f 100644 --- a/src/main/java/cz/jzitnik/utils/ScheduledSerializedTaskManager.java +++ b/game/src/main/java/cz/jzitnik/client/utils/ScheduledSerializedTaskManager.java @@ -1,7 +1,7 @@ -package cz.jzitnik.utils; +package cz.jzitnik.client.utils; -import cz.jzitnik.annotations.Dependency; -import cz.jzitnik.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.injectors.InjectDependency; import lombok.Getter; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/cz/jzitnik/utils/ScheduledTaskManager.java b/game/src/main/java/cz/jzitnik/client/utils/ScheduledTaskManager.java similarity index 91% rename from src/main/java/cz/jzitnik/utils/ScheduledTaskManager.java rename to game/src/main/java/cz/jzitnik/client/utils/ScheduledTaskManager.java index 18f6649..e7782f8 100644 --- a/src/main/java/cz/jzitnik/utils/ScheduledTaskManager.java +++ b/game/src/main/java/cz/jzitnik/client/utils/ScheduledTaskManager.java @@ -1,9 +1,9 @@ -package cz.jzitnik.utils; +package cz.jzitnik.client.utils; -import cz.jzitnik.annotations.Dependency; -import cz.jzitnik.annotations.ScheduledTask; -import cz.jzitnik.annotations.injectors.InjectConfig; -import cz.jzitnik.config.ThreadPoolConfig; +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.ScheduledTask; +import cz.jzitnik.client.annotations.injectors.InjectConfig; +import cz.jzitnik.client.config.ThreadPoolConfig; import lombok.extern.slf4j.Slf4j; import org.reflections.Reflections; diff --git a/src/main/java/cz/jzitnik/utils/ShutdownableThread.java b/game/src/main/java/cz/jzitnik/client/utils/ShutdownableThread.java similarity index 79% rename from src/main/java/cz/jzitnik/utils/ShutdownableThread.java rename to game/src/main/java/cz/jzitnik/client/utils/ShutdownableThread.java index 20d7c13..8400862 100644 --- a/src/main/java/cz/jzitnik/utils/ShutdownableThread.java +++ b/game/src/main/java/cz/jzitnik/client/utils/ShutdownableThread.java @@ -1,4 +1,4 @@ -package cz.jzitnik.utils; +package cz.jzitnik.client.utils; public abstract class ShutdownableThread extends Thread { public abstract void run(); diff --git a/src/main/java/cz/jzitnik/utils/StateManager.java b/game/src/main/java/cz/jzitnik/client/utils/StateManager.java similarity index 93% rename from src/main/java/cz/jzitnik/utils/StateManager.java rename to game/src/main/java/cz/jzitnik/client/utils/StateManager.java index 51837a9..d57298b 100644 --- a/src/main/java/cz/jzitnik/utils/StateManager.java +++ b/game/src/main/java/cz/jzitnik/client/utils/StateManager.java @@ -1,8 +1,8 @@ // NOTE: [StateManager] cannot use injectors like @InjectDependency or @InjectState -package cz.jzitnik.utils; +package cz.jzitnik.client.utils; -import cz.jzitnik.annotations.Dependency; -import cz.jzitnik.annotations.State; +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.State; import lombok.extern.slf4j.Slf4j; import org.reflections.Reflections; diff --git a/src/main/java/cz/jzitnik/utils/TextRenderer.java b/game/src/main/java/cz/jzitnik/client/utils/TextRenderer.java similarity index 95% rename from src/main/java/cz/jzitnik/utils/TextRenderer.java rename to game/src/main/java/cz/jzitnik/client/utils/TextRenderer.java index 1431115..abf0df2 100644 --- a/src/main/java/cz/jzitnik/utils/TextRenderer.java +++ b/game/src/main/java/cz/jzitnik/client/utils/TextRenderer.java @@ -1,12 +1,12 @@ -package cz.jzitnik.utils; +package cz.jzitnik.client.utils; import com.googlecode.lanterna.TextColor; -import cz.jzitnik.annotations.Dependency; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.game.ResourceManager; -import cz.jzitnik.ui.pixels.AlphaPixel; -import cz.jzitnik.ui.pixels.ColoredPixel; -import cz.jzitnik.ui.pixels.Empty; +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.ui.pixels.AlphaPixel; +import cz.jzitnik.client.ui.pixels.ColoredPixel; +import cz.jzitnik.client.ui.pixels.Empty; import java.awt.*; import java.awt.font.FontRenderContext; diff --git a/src/main/java/cz/jzitnik/utils/ThreadManager.java b/game/src/main/java/cz/jzitnik/client/utils/ThreadManager.java similarity index 90% rename from src/main/java/cz/jzitnik/utils/ThreadManager.java rename to game/src/main/java/cz/jzitnik/client/utils/ThreadManager.java index 789e881..63569fa 100644 --- a/src/main/java/cz/jzitnik/utils/ThreadManager.java +++ b/game/src/main/java/cz/jzitnik/client/utils/ThreadManager.java @@ -1,7 +1,7 @@ -package cz.jzitnik.utils; +package cz.jzitnik.client.utils; -import cz.jzitnik.annotations.Dependency; -import cz.jzitnik.annotations.ThreadRegistry; +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.ThreadRegistry; import org.reflections.Reflections; import java.lang.reflect.InvocationTargetException; diff --git a/src/main/java/cz/jzitnik/utils/UIRoomClickHandlerRepository.java b/game/src/main/java/cz/jzitnik/client/utils/UIRoomClickHandlerRepository.java similarity index 90% rename from src/main/java/cz/jzitnik/utils/UIRoomClickHandlerRepository.java rename to game/src/main/java/cz/jzitnik/client/utils/UIRoomClickHandlerRepository.java index 70d9e88..d1707a3 100644 --- a/src/main/java/cz/jzitnik/utils/UIRoomClickHandlerRepository.java +++ b/game/src/main/java/cz/jzitnik/client/utils/UIRoomClickHandlerRepository.java @@ -1,14 +1,14 @@ -package cz.jzitnik.utils; +package cz.jzitnik.client.utils; import com.googlecode.lanterna.TerminalPosition; -import cz.jzitnik.annotations.Dependency; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.events.MouseAction; -import cz.jzitnik.events.RerenderScreen; -import cz.jzitnik.game.GameRoom; -import cz.jzitnik.game.GameState; -import cz.jzitnik.game.objects.UIClickHandler; +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.MouseAction; +import cz.jzitnik.client.events.RerenderScreen; +import cz.jzitnik.client.game.GameRoom; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.objects.UIClickHandler; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; diff --git a/src/main/java/cz/jzitnik/utils/events/AbstractEventHandler.java b/game/src/main/java/cz/jzitnik/client/utils/events/AbstractEventHandler.java similarity index 69% rename from src/main/java/cz/jzitnik/utils/events/AbstractEventHandler.java rename to game/src/main/java/cz/jzitnik/client/utils/events/AbstractEventHandler.java index 229e13a..51dd639 100644 --- a/src/main/java/cz/jzitnik/utils/events/AbstractEventHandler.java +++ b/game/src/main/java/cz/jzitnik/client/utils/events/AbstractEventHandler.java @@ -1,4 +1,4 @@ -package cz.jzitnik.utils.events; +package cz.jzitnik.client.utils.events; public abstract class AbstractEventHandler { public abstract void handle(T event); diff --git a/game/src/main/java/cz/jzitnik/client/utils/events/Event.java b/game/src/main/java/cz/jzitnik/client/utils/events/Event.java new file mode 100644 index 0000000..5e5fac4 --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/utils/events/Event.java @@ -0,0 +1,4 @@ +package cz.jzitnik.client.utils.events; + +public interface Event { +} diff --git a/src/main/java/cz/jzitnik/utils/events/EventManager.java b/game/src/main/java/cz/jzitnik/client/utils/events/EventManager.java similarity index 90% rename from src/main/java/cz/jzitnik/utils/events/EventManager.java rename to game/src/main/java/cz/jzitnik/client/utils/events/EventManager.java index 7437dfa..d1a7b03 100644 --- a/src/main/java/cz/jzitnik/utils/events/EventManager.java +++ b/game/src/main/java/cz/jzitnik/client/utils/events/EventManager.java @@ -1,12 +1,12 @@ -package cz.jzitnik.utils.events; +package cz.jzitnik.client.utils.events; -import cz.jzitnik.annotations.Dependency; -import cz.jzitnik.annotations.EventHandler; -import cz.jzitnik.annotations.injectors.InjectConfig; -import cz.jzitnik.annotations.injectors.InjectState; -import cz.jzitnik.config.ThreadPoolConfig; -import cz.jzitnik.states.RunningState; -import cz.jzitnik.utils.DependencyManager; +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.EventHandler; +import cz.jzitnik.client.annotations.injectors.InjectConfig; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.config.ThreadPoolConfig; +import cz.jzitnik.client.states.RunningState; +import cz.jzitnik.client.utils.DependencyManager; import lombok.extern.slf4j.Slf4j; import org.reflections.Reflections; diff --git a/src/main/java/cz/jzitnik/utils/roomtasks/RoomTask.java b/game/src/main/java/cz/jzitnik/client/utils/roomtasks/RoomTask.java similarity index 89% rename from src/main/java/cz/jzitnik/utils/roomtasks/RoomTask.java rename to game/src/main/java/cz/jzitnik/client/utils/roomtasks/RoomTask.java index 837c202..5d7b05e 100644 --- a/src/main/java/cz/jzitnik/utils/roomtasks/RoomTask.java +++ b/game/src/main/java/cz/jzitnik/client/utils/roomtasks/RoomTask.java @@ -1,4 +1,4 @@ -package cz.jzitnik.utils.roomtasks; +package cz.jzitnik.client.utils.roomtasks; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Getter; diff --git a/src/main/java/cz/jzitnik/utils/roomtasks/RoomTaskScheduler.java b/game/src/main/java/cz/jzitnik/client/utils/roomtasks/RoomTaskScheduler.java similarity index 84% rename from src/main/java/cz/jzitnik/utils/roomtasks/RoomTaskScheduler.java rename to game/src/main/java/cz/jzitnik/client/utils/roomtasks/RoomTaskScheduler.java index 74ef556..9252634 100644 --- a/src/main/java/cz/jzitnik/utils/roomtasks/RoomTaskScheduler.java +++ b/game/src/main/java/cz/jzitnik/client/utils/roomtasks/RoomTaskScheduler.java @@ -1,13 +1,13 @@ -package cz.jzitnik.utils.roomtasks; +package cz.jzitnik.client.utils.roomtasks; -import cz.jzitnik.annotations.Dependency; -import cz.jzitnik.annotations.PostInit; -import cz.jzitnik.annotations.injectors.InjectConfig; -import cz.jzitnik.annotations.injectors.InjectDependency; -import cz.jzitnik.config.ThreadPoolConfig; -import cz.jzitnik.game.GameRoom; -import cz.jzitnik.game.mobs.Mob; -import cz.jzitnik.utils.DependencyManager; +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.PostInit; +import cz.jzitnik.client.annotations.injectors.InjectConfig; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.config.ThreadPoolConfig; +import cz.jzitnik.client.game.GameRoom; +import cz.jzitnik.client.game.mobs.Mob; +import cz.jzitnik.client.utils.DependencyManager; import lombok.extern.slf4j.Slf4j; import java.util.HashMap; diff --git a/src/main/resources/audio.ogg b/game/src/main/resources/audio.ogg similarity index 100% rename from src/main/resources/audio.ogg rename to game/src/main/resources/audio.ogg diff --git a/src/main/resources/audio/menu.ogg b/game/src/main/resources/audio/menu.ogg similarity index 100% rename from src/main/resources/audio/menu.ogg rename to game/src/main/resources/audio/menu.ogg diff --git a/src/main/resources/config/core_logic.yaml b/game/src/main/resources/config/core_logic.yaml similarity index 100% rename from src/main/resources/config/core_logic.yaml rename to game/src/main/resources/config/core_logic.yaml diff --git a/src/main/resources/config/debugging.yaml b/game/src/main/resources/config/debugging.yaml similarity index 100% rename from src/main/resources/config/debugging.yaml rename to game/src/main/resources/config/debugging.yaml diff --git a/src/main/resources/config/microphone.yaml b/game/src/main/resources/config/microphone.yaml similarity index 100% rename from src/main/resources/config/microphone.yaml rename to game/src/main/resources/config/microphone.yaml diff --git a/src/main/resources/config/player.yaml b/game/src/main/resources/config/player.yaml similarity index 100% rename from src/main/resources/config/player.yaml rename to game/src/main/resources/config/player.yaml diff --git a/src/main/resources/config/threads.yaml b/game/src/main/resources/config/threads.yaml similarity index 100% rename from src/main/resources/config/threads.yaml rename to game/src/main/resources/config/threads.yaml diff --git a/src/main/resources/fonts/default.ttf b/game/src/main/resources/fonts/default.ttf similarity index 100% rename from src/main/resources/fonts/default.ttf rename to game/src/main/resources/fonts/default.ttf diff --git a/src/main/resources/logback.xml b/game/src/main/resources/logback.xml similarity index 100% rename from src/main/resources/logback.xml rename to game/src/main/resources/logback.xml diff --git a/src/main/resources/menu.png b/game/src/main/resources/menu.png similarity index 100% rename from src/main/resources/menu.png rename to game/src/main/resources/menu.png diff --git a/src/main/resources/setup/player.yaml b/game/src/main/resources/setup/player.yaml similarity index 100% rename from src/main/resources/setup/player.yaml rename to game/src/main/resources/setup/player.yaml diff --git a/src/main/resources/setup/rooms.yaml b/game/src/main/resources/setup/rooms.yaml similarity index 99% rename from src/main/resources/setup/rooms.yaml rename to game/src/main/resources/setup/rooms.yaml index af1a388..8f3e353 100644 --- a/src/main/resources/setup/rooms.yaml +++ b/game/src/main/resources/setup/rooms.yaml @@ -58,7 +58,7 @@ end: x: 140 y: 67 - west: "mainroom" + west: "spawn" east: null north: "klicnik" south: null diff --git a/src/main/resources/textures/chest.png b/game/src/main/resources/textures/chest.png similarity index 100% rename from src/main/resources/textures/chest.png rename to game/src/main/resources/textures/chest.png diff --git a/src/main/resources/textures/food/apple.png b/game/src/main/resources/textures/food/apple.png similarity index 100% rename from src/main/resources/textures/food/apple.png rename to game/src/main/resources/textures/food/apple.png diff --git a/src/main/resources/textures/player/back.png b/game/src/main/resources/textures/player/back.png similarity index 100% rename from src/main/resources/textures/player/back.png rename to game/src/main/resources/textures/player/back.png diff --git a/src/main/resources/textures/player/front.png b/game/src/main/resources/textures/player/front.png similarity index 100% rename from src/main/resources/textures/player/front.png rename to game/src/main/resources/textures/player/front.png diff --git a/src/main/resources/textures/player/left.png b/game/src/main/resources/textures/player/left.png similarity index 100% rename from src/main/resources/textures/player/left.png rename to game/src/main/resources/textures/player/left.png diff --git a/src/main/resources/textures/player/right.png b/game/src/main/resources/textures/player/right.png similarity index 100% rename from src/main/resources/textures/player/right.png rename to game/src/main/resources/textures/player/right.png diff --git a/src/main/resources/textures/rooms/1.png b/game/src/main/resources/textures/rooms/1.png similarity index 100% rename from src/main/resources/textures/rooms/1.png rename to game/src/main/resources/textures/rooms/1.png diff --git a/src/main/resources/textures/rooms/2.png b/game/src/main/resources/textures/rooms/2.png similarity index 100% rename from src/main/resources/textures/rooms/2.png rename to game/src/main/resources/textures/rooms/2.png diff --git a/src/main/resources/textures/rooms/3.png b/game/src/main/resources/textures/rooms/3.png similarity index 100% rename from src/main/resources/textures/rooms/3.png rename to game/src/main/resources/textures/rooms/3.png diff --git a/src/main/resources/textures/rooms/4.png b/game/src/main/resources/textures/rooms/4.png similarity index 100% rename from src/main/resources/textures/rooms/4.png rename to game/src/main/resources/textures/rooms/4.png diff --git a/src/main/resources/textures/rooms/doors.png b/game/src/main/resources/textures/rooms/doors.png similarity index 100% rename from src/main/resources/textures/rooms/doors.png rename to game/src/main/resources/textures/rooms/doors.png diff --git a/src/main/resources/textures/rooms/frozen.png b/game/src/main/resources/textures/rooms/frozen.png similarity index 100% rename from src/main/resources/textures/rooms/frozen.png rename to game/src/main/resources/textures/rooms/frozen.png diff --git a/src/main/resources/textures/tools/wooden_sword.png b/game/src/main/resources/textures/tools/wooden_sword.png similarity index 100% rename from src/main/resources/textures/tools/wooden_sword.png rename to game/src/main/resources/textures/tools/wooden_sword.png diff --git a/src/main/resources/textures/ui/heart.png b/game/src/main/resources/textures/ui/heart.png similarity index 100% rename from src/main/resources/textures/ui/heart.png rename to game/src/main/resources/textures/ui/heart.png diff --git a/src/main/resources/textures/ui/stamina.png b/game/src/main/resources/textures/ui/stamina.png similarity index 100% rename from src/main/resources/textures/ui/stamina.png rename to game/src/main/resources/textures/ui/stamina.png diff --git a/src/main/resources/video.mp4 b/game/src/main/resources/video.mp4 similarity index 100% rename from src/main/resources/video.mp4 rename to game/src/main/resources/video.mp4 diff --git a/pom.xml b/pom.xml index cedfc49..3273b29 100644 --- a/pom.xml +++ b/pom.xml @@ -1,180 +1,24 @@ - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 + http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 cz.jzitnik - game + game-parent 1.0-SNAPSHOT + pom - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.11.0 - - - - org.projectlombok - lombok - 1.18.38 - - - 25 - 25 - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.1 - - - package - - shade - - - - - - - cz.jzitnik.Main - - - false - false - - - - - org.codehaus.mojo - exec-maven-plugin - 3.1.0 - - - - java - - - - - cz.jzitnik.Main - compile - - - - - + + common + server + game + - 22 - 22 + 25 + 25 UTF-8 - - - - be.0110.repo-releases - 0110.be repository - https://mvn.0110.be/releases - - - - - - org.projectlombok - lombok - 1.18.42 - provided - - - - org.reflections - reflections - 0.10.2 - - - - com.google.guava - guava - 33.5.0-jre - - - - tools.jackson.core - jackson-databind - 3.0.4 - - - - tools.jackson.dataformat - jackson-dataformat-yaml - 3.0.4 - - - - org.junit.jupiter - junit-jupiter - 6.0.2 - - - - org.junit.jupiter - junit-jupiter-api - 6.0.2 - test - - - - org.slf4j - slf4j-api - 2.0.17 - - - - ch.qos.logback - logback-classic - 1.5.25 - - - - com.github.trilarion - java-vorbis-support - 1.2.1 - - - - com.googlecode.lanterna - lanterna - 3.1.3 - - - - org.bytedeco - javacv-platform - 1.5.12 - - - - org.bytedeco - ffmpeg-platform - 7.1.1-1.5.12 - - - - be.tarsos.dsp - core - 2.5 - - - - be.tarsos.dsp - jvm - 2.5 - - diff --git a/server/.gitignore b/server/.gitignore new file mode 100644 index 0000000..480bdf5 --- /dev/null +++ b/server/.gitignore @@ -0,0 +1,39 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ +.kotlin + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/server/.idea/.gitignore b/server/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/server/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/server/.idea/encodings.xml b/server/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/server/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/server/.idea/misc.xml b/server/.idea/misc.xml new file mode 100644 index 0000000..4878ef2 --- /dev/null +++ b/server/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/server/.idea/vcs.xml b/server/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/server/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/server/pom.xml b/server/pom.xml new file mode 100644 index 0000000..b335cca --- /dev/null +++ b/server/pom.xml @@ -0,0 +1,22 @@ + + + 4.0.0 + + + cz.jzitnik + game-parent + 1.0-SNAPSHOT + + + server + + + + cz.jzitnik + common + 1.0-SNAPSHOT + + + diff --git a/server/src/main/java/cz/jzitnik/server/Main.java b/server/src/main/java/cz/jzitnik/server/Main.java new file mode 100644 index 0000000..64fd88d --- /dev/null +++ b/server/src/main/java/cz/jzitnik/server/Main.java @@ -0,0 +1,7 @@ +package cz.jzitnik.server; + +public class Main { + static void main() { + + } +} diff --git a/src/main/java/cz/jzitnik/events/DroppedItemRerender.java b/src/main/java/cz/jzitnik/events/DroppedItemRerender.java deleted file mode 100644 index df80a81..0000000 --- a/src/main/java/cz/jzitnik/events/DroppedItemRerender.java +++ /dev/null @@ -1,7 +0,0 @@ -package cz.jzitnik.events; - -import cz.jzitnik.game.objects.DroppedItem; -import cz.jzitnik.utils.events.Event; - -public record DroppedItemRerender(DroppedItem droppedItem) implements Event { -} diff --git a/src/main/java/cz/jzitnik/events/FullRedrawEvent.java b/src/main/java/cz/jzitnik/events/FullRedrawEvent.java deleted file mode 100644 index 745f928..0000000 --- a/src/main/java/cz/jzitnik/events/FullRedrawEvent.java +++ /dev/null @@ -1,6 +0,0 @@ -package cz.jzitnik.events; - -import cz.jzitnik.utils.events.Event; - -public class FullRedrawEvent implements Event { -} diff --git a/src/main/java/cz/jzitnik/events/InventoryRerender.java b/src/main/java/cz/jzitnik/events/InventoryRerender.java deleted file mode 100644 index f51cb6e..0000000 --- a/src/main/java/cz/jzitnik/events/InventoryRerender.java +++ /dev/null @@ -1,6 +0,0 @@ -package cz.jzitnik.events; - -import cz.jzitnik.utils.events.Event; - -public class InventoryRerender implements Event { -} diff --git a/src/main/java/cz/jzitnik/events/RenderStats.java b/src/main/java/cz/jzitnik/events/RenderStats.java deleted file mode 100644 index b44b62b..0000000 --- a/src/main/java/cz/jzitnik/events/RenderStats.java +++ /dev/null @@ -1,6 +0,0 @@ -package cz.jzitnik.events; - -import cz.jzitnik.utils.events.Event; - -public class RenderStats implements Event { -} diff --git a/src/main/java/cz/jzitnik/events/RoomChangeEvent.java b/src/main/java/cz/jzitnik/events/RoomChangeEvent.java deleted file mode 100644 index 4ca1766..0000000 --- a/src/main/java/cz/jzitnik/events/RoomChangeEvent.java +++ /dev/null @@ -1,7 +0,0 @@ -package cz.jzitnik.events; - -import cz.jzitnik.events.handlers.FullRoomDrawHandler; -import cz.jzitnik.utils.events.Event; - -public record RoomChangeEvent(FullRoomDrawHandler.DoorPosition door) implements Event { -} diff --git a/src/main/java/cz/jzitnik/events/TerminalTooSmallEvent.java b/src/main/java/cz/jzitnik/events/TerminalTooSmallEvent.java deleted file mode 100644 index 79af32f..0000000 --- a/src/main/java/cz/jzitnik/events/TerminalTooSmallEvent.java +++ /dev/null @@ -1,6 +0,0 @@ -package cz.jzitnik.events; - -import cz.jzitnik.utils.events.Event; - -public class TerminalTooSmallEvent implements Event { -} diff --git a/src/main/java/cz/jzitnik/states/PlayerConfig.java b/src/main/java/cz/jzitnik/states/PlayerConfig.java deleted file mode 100644 index b44ceb1..0000000 --- a/src/main/java/cz/jzitnik/states/PlayerConfig.java +++ /dev/null @@ -1,8 +0,0 @@ -package cz.jzitnik.states; - -import cz.jzitnik.annotations.State; - -@State -public class PlayerConfig { - private int masterVolume = 100; -} diff --git a/src/main/java/cz/jzitnik/utils/events/Event.java b/src/main/java/cz/jzitnik/utils/events/Event.java deleted file mode 100644 index f184fa6..0000000 --- a/src/main/java/cz/jzitnik/utils/events/Event.java +++ /dev/null @@ -1,4 +0,0 @@ -package cz.jzitnik.utils.events; - -public interface Event { -} -- 2.49.1 From ef14edffde36a5992b630be9edbd0c2bb43f87b4 Mon Sep 17 00:00:00 2001 From: jzitnik-dev Date: Sat, 31 Jan 2026 17:02:24 +0100 Subject: [PATCH 02/14] feat: Started basic implementation of socket comm --- .idea/FuzzierSettings.xml | 14 +++ .idea/compiler.xml | 1 + .idea/misc.xml | 2 +- common/pom.xml | 7 ++ .../jzitnik/common/socket/SocketMessage.java | 6 ++ .../jzitnik/common/socket/messages/Test.java | 6 ++ game/.idea/encodings.xml | 6 ++ game/.idea/misc.xml | 16 +--- game/pom.xml | 6 ++ game/src/main/java/cz/jzitnik/client/Cli.java | 8 +- .../src/main/java/cz/jzitnik/client/Game.java | 20 +++- .../annotations/SocketEventHandler.java | 14 +++ .../client/events/SendSocketMessageEvent.java | 7 ++ .../SendSocketMessageEventHandler.java | 24 +++++ .../socket/AbstractSocketEventHandler.java | 7 ++ .../java/cz/jzitnik/client/socket/Client.java | 50 ++++++++++ .../client/socket/SocketEventManager.java | 94 +++++++++++++++++++ .../client/socket/events/TestHandler.java | 15 +++ .../utils/events/AbstractEventHandler.java | 2 +- .../client/utils/events/EventManager.java | 4 +- server/pom.xml | 44 +++++++++ .../src/main/java/cz/jzitnik/server/Main.java | 15 ++- .../java/cz/jzitnik/server/WebSocket.java | 53 +++++++++++ 23 files changed, 394 insertions(+), 27 deletions(-) create mode 100644 .idea/FuzzierSettings.xml create mode 100644 common/src/main/java/cz/jzitnik/common/socket/SocketMessage.java create mode 100644 common/src/main/java/cz/jzitnik/common/socket/messages/Test.java create mode 100644 game/src/main/java/cz/jzitnik/client/annotations/SocketEventHandler.java create mode 100644 game/src/main/java/cz/jzitnik/client/events/SendSocketMessageEvent.java create mode 100644 game/src/main/java/cz/jzitnik/client/events/handlers/SendSocketMessageEventHandler.java create mode 100644 game/src/main/java/cz/jzitnik/client/socket/AbstractSocketEventHandler.java create mode 100644 game/src/main/java/cz/jzitnik/client/socket/Client.java create mode 100644 game/src/main/java/cz/jzitnik/client/socket/SocketEventManager.java create mode 100644 game/src/main/java/cz/jzitnik/client/socket/events/TestHandler.java create mode 100644 server/src/main/java/cz/jzitnik/server/WebSocket.java diff --git a/.idea/FuzzierSettings.xml b/.idea/FuzzierSettings.xml new file mode 100644 index 0000000..4426b5e --- /dev/null +++ b/.idea/FuzzierSettings.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 5c84731..8fa91a7 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -2,6 +2,7 @@ + diff --git a/.idea/misc.xml b/.idea/misc.xml index 86993b2..1044c37 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,5 +8,5 @@ - + \ No newline at end of file diff --git a/common/pom.xml b/common/pom.xml index 7303d3b..6c1d95c 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -24,5 +24,12 @@ jackson-dataformat-yaml 3.0.4 + + + org.projectlombok + lombok + 1.18.42 + provided + diff --git a/common/src/main/java/cz/jzitnik/common/socket/SocketMessage.java b/common/src/main/java/cz/jzitnik/common/socket/SocketMessage.java new file mode 100644 index 0000000..3134c92 --- /dev/null +++ b/common/src/main/java/cz/jzitnik/common/socket/SocketMessage.java @@ -0,0 +1,6 @@ +package cz.jzitnik.common.socket; + +import java.io.Serializable; + +public interface SocketMessage extends Serializable { +} diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/Test.java b/common/src/main/java/cz/jzitnik/common/socket/messages/Test.java new file mode 100644 index 0000000..00d3703 --- /dev/null +++ b/common/src/main/java/cz/jzitnik/common/socket/messages/Test.java @@ -0,0 +1,6 @@ +package cz.jzitnik.common.socket.messages; + +import cz.jzitnik.common.socket.SocketMessage; + +public class Test implements SocketMessage { +} diff --git a/game/.idea/encodings.xml b/game/.idea/encodings.xml index aa00ffa..fd66ed6 100644 --- a/game/.idea/encodings.xml +++ b/game/.idea/encodings.xml @@ -1,6 +1,12 @@ + + + + + + diff --git a/game/.idea/misc.xml b/game/.idea/misc.xml index 3202223..1044c37 100644 --- a/game/.idea/misc.xml +++ b/game/.idea/misc.xml @@ -1,17 +1,5 @@ - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/game/pom.xml b/game/pom.xml index 759b5da..6056ef3 100644 --- a/game/pom.xml +++ b/game/pom.xml @@ -179,5 +179,11 @@ jvm 2.5 + + + org.glassfish.tyrus.bundles + tyrus-standalone-client + 2.2.2 + diff --git a/game/src/main/java/cz/jzitnik/client/Cli.java b/game/src/main/java/cz/jzitnik/client/Cli.java index 897412f..073d3a8 100644 --- a/game/src/main/java/cz/jzitnik/client/Cli.java +++ b/game/src/main/java/cz/jzitnik/client/Cli.java @@ -10,6 +10,7 @@ import cz.jzitnik.client.annotations.injectors.InjectState; import cz.jzitnik.client.events.KeyboardPressEvent; import cz.jzitnik.client.events.MouseAction; import cz.jzitnik.client.events.TerminalResizeEvent; +import cz.jzitnik.client.socket.SocketEventManager; import cz.jzitnik.client.states.RunningState; import cz.jzitnik.client.states.TerminalState; import cz.jzitnik.client.utils.events.EventManager; @@ -23,6 +24,9 @@ public class Cli implements Runnable { @InjectDependency private EventManager eventManager; + @InjectDependency + private SocketEventManager socketEventManager; + @InjectState private TerminalState terminalState; @@ -31,7 +35,9 @@ public class Cli implements Runnable { @Override public void run() { - eventManager.start(); // Start event manager thread + // Start event manager thread + eventManager.start(); + socketEventManager.start(); try (TerminalScreen terminal = new DefaultTerminalFactory() .setMouseCaptureMode(MouseCaptureMode.CLICK_RELEASE_DRAG_MOVE) diff --git a/game/src/main/java/cz/jzitnik/client/Game.java b/game/src/main/java/cz/jzitnik/client/Game.java index d6601e5..b7c5496 100644 --- a/game/src/main/java/cz/jzitnik/client/Game.java +++ b/game/src/main/java/cz/jzitnik/client/Game.java @@ -2,10 +2,12 @@ package cz.jzitnik.client; import cz.jzitnik.client.annotations.injectors.InjectDependency; import cz.jzitnik.client.game.setup.GameSetup; +import cz.jzitnik.client.socket.Client; import cz.jzitnik.client.utils.DependencyManager; import cz.jzitnik.client.utils.GlobalIOHandlerRepository; import cz.jzitnik.client.utils.ScheduledTaskManager; import cz.jzitnik.client.utils.ThreadManager; +import jakarta.websocket.DeploymentException; import org.reflections.Reflections; import java.io.IOException; @@ -23,15 +25,23 @@ public class Game { private ScheduledTaskManager scheduledTaskManager; @InjectDependency private GlobalIOHandlerRepository globalIOHandlerRepository; + @InjectDependency + private Client client; public void start() throws IOException { dependencyManager.inject(this); - gameSetup.setup(); - threadManager.startAll(); - scheduledTaskManager.startAll(); - globalIOHandlerRepository.setup(); + try { + client.connect(); - cli.run(); + gameSetup.setup(); + threadManager.startAll(); + scheduledTaskManager.startAll(); + globalIOHandlerRepository.setup(); + + cli.run(); + } catch (DeploymentException e) { + throw new RuntimeException(e); + } } } diff --git a/game/src/main/java/cz/jzitnik/client/annotations/SocketEventHandler.java b/game/src/main/java/cz/jzitnik/client/annotations/SocketEventHandler.java new file mode 100644 index 0000000..bf6fdd9 --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/annotations/SocketEventHandler.java @@ -0,0 +1,14 @@ +package cz.jzitnik.client.annotations; + +import cz.jzitnik.common.socket.SocketMessage; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface SocketEventHandler { + Class value(); +} diff --git a/game/src/main/java/cz/jzitnik/client/events/SendSocketMessageEvent.java b/game/src/main/java/cz/jzitnik/client/events/SendSocketMessageEvent.java new file mode 100644 index 0000000..291299a --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/events/SendSocketMessageEvent.java @@ -0,0 +1,7 @@ +package cz.jzitnik.client.events; + +import cz.jzitnik.client.utils.events.Event; +import cz.jzitnik.common.socket.SocketMessage; + +public record SendSocketMessageEvent(SocketMessage message) implements Event { +} diff --git a/game/src/main/java/cz/jzitnik/client/events/handlers/SendSocketMessageEventHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/SendSocketMessageEventHandler.java new file mode 100644 index 0000000..d5be9c4 --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/SendSocketMessageEventHandler.java @@ -0,0 +1,24 @@ +package cz.jzitnik.client.events.handlers; + +import cz.jzitnik.client.annotations.EventHandler; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.events.SendSocketMessageEvent; +import cz.jzitnik.client.socket.Client; +import cz.jzitnik.client.utils.events.AbstractEventHandler; + +import java.io.IOException; + +@EventHandler(SendSocketMessageEvent.class) +public class SendSocketMessageEventHandler extends AbstractEventHandler { + @InjectDependency + private Client client; + + @Override + public void handle(SendSocketMessageEvent event) { + try { + client.send(event.message()); + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} diff --git a/game/src/main/java/cz/jzitnik/client/socket/AbstractSocketEventHandler.java b/game/src/main/java/cz/jzitnik/client/socket/AbstractSocketEventHandler.java new file mode 100644 index 0000000..223136f --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/socket/AbstractSocketEventHandler.java @@ -0,0 +1,7 @@ +package cz.jzitnik.client.socket; + +import cz.jzitnik.common.socket.SocketMessage; + +public abstract class AbstractSocketEventHandler { + public abstract void handle(T event); +} diff --git a/game/src/main/java/cz/jzitnik/client/socket/Client.java b/game/src/main/java/cz/jzitnik/client/socket/Client.java new file mode 100644 index 0000000..36a16a9 --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/socket/Client.java @@ -0,0 +1,50 @@ +package cz.jzitnik.client.socket; + +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.common.socket.SocketMessage; +import jakarta.websocket.*; +import lombok.extern.slf4j.Slf4j; + +import java.io.*; +import java.net.URI; +import java.nio.ByteBuffer; + +@Slf4j +@Dependency +@ClientEndpoint +public class Client { + private Session session; + + @InjectDependency + private SocketEventManager socketEventManager; + + @OnOpen + public void onOpen(Session session) { + this.session = session; + } + + @OnMessage + public void onMessage(ByteBuffer buffer) { + try (ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(buffer.array()))) { + SocketMessage message = (SocketMessage) ois.readObject(); + socketEventManager.emitEvent(message); + } catch (IOException | ClassNotFoundException e) { + e.printStackTrace(); + } + } + + public void send(SocketMessage message) throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(baos); + oos.writeObject(message); + oos.flush(); + + session.getBasicRemote().sendBinary(ByteBuffer.wrap(baos.toByteArray())); + } + + public void connect() throws DeploymentException, IOException { + WebSocketContainer container = ContainerProvider.getWebSocketContainer(); + container.connectToServer(this, URI.create("ws://localhost:8025/ws")); + } +} diff --git a/game/src/main/java/cz/jzitnik/client/socket/SocketEventManager.java b/game/src/main/java/cz/jzitnik/client/socket/SocketEventManager.java new file mode 100644 index 0000000..154802f --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/socket/SocketEventManager.java @@ -0,0 +1,94 @@ +package cz.jzitnik.client.socket; + +import cz.jzitnik.client.annotations.Dependency; +import cz.jzitnik.client.annotations.SocketEventHandler; +import cz.jzitnik.client.annotations.injectors.InjectConfig; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.config.ThreadPoolConfig; +import cz.jzitnik.client.states.RunningState; +import cz.jzitnik.client.utils.DependencyManager; +import cz.jzitnik.common.socket.SocketMessage; +import lombok.extern.slf4j.Slf4j; +import org.reflections.Reflections; + +import java.lang.reflect.InvocationTargetException; +import java.util.HashMap; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.LinkedBlockingQueue; + +@Slf4j +@Dependency +public class SocketEventManager extends Thread { + private final DependencyManager dependencyManager; + + private ExecutorService eventExecutor; + private final HashMap, AbstractSocketEventHandler> handlers = new HashMap<>(); + private final BlockingQueue eventQueue = new LinkedBlockingQueue<>(); + + @InjectConfig + private ThreadPoolConfig threadPoolConfig; + + @InjectState + private RunningState runningState; + + public void emitEvent(SocketMessage event) { + eventQueue.add(event); + } + + public SocketEventManager(Reflections reflections, DependencyManager dependencyManager) { + this.dependencyManager = dependencyManager; + setDaemon(true); + + var classes = reflections.getTypesAnnotatedWith(SocketEventHandler.class); + + for (var clazz : classes) { + SocketEventHandler eventHandler = clazz.getAnnotation(SocketEventHandler.class); + try { + var instance = (AbstractSocketEventHandler) clazz.getDeclaredConstructor().newInstance(); + handlers.put(eventHandler.value(), instance); + } catch (InstantiationException | IllegalAccessException | InvocationTargetException | + NoSuchMethodException e) { + log.error("Failed to instantiate socket event handler: {}", clazz.getName(), e); + } + } + } + + @Override + public void run() { + for (Object instance : handlers.values()) { + dependencyManager.inject(instance); + } + + eventExecutor = Executors.newFixedThreadPool(threadPoolConfig.eventThreadCount()); + while (runningState.isRunning()) { + try { + SocketMessage event = eventQueue.take(); + handleEvent(event); + } catch (InterruptedException e) { + // The game is shutting down. + eventExecutor.shutdownNow(); + Thread.currentThread().interrupt(); + } + } + eventExecutor.shutdown(); + } + + @SuppressWarnings("unchecked") + private AbstractSocketEventHandler getHandler(Class type) { + return (AbstractSocketEventHandler) handlers.get(type); + } + + @SuppressWarnings("unchecked") + private void handleEvent(SocketMessage event) { + eventExecutor.submit(() -> { + try { + AbstractSocketEventHandler handler = getHandler((Class) event.getClass()); + handler.handle(event); + } catch (Exception e) { + log.error("Error", e); + } + }); + } +} diff --git a/game/src/main/java/cz/jzitnik/client/socket/events/TestHandler.java b/game/src/main/java/cz/jzitnik/client/socket/events/TestHandler.java new file mode 100644 index 0000000..14e181d --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/socket/events/TestHandler.java @@ -0,0 +1,15 @@ +package cz.jzitnik.client.socket.events; + +import cz.jzitnik.client.annotations.SocketEventHandler; +import cz.jzitnik.client.socket.AbstractSocketEventHandler; +import cz.jzitnik.common.socket.messages.Test; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@SocketEventHandler(Test.class) +public class TestHandler extends AbstractSocketEventHandler { + @Override + public void handle(Test event) { + log.debug("Got test: {}", event); + } +} diff --git a/game/src/main/java/cz/jzitnik/client/utils/events/AbstractEventHandler.java b/game/src/main/java/cz/jzitnik/client/utils/events/AbstractEventHandler.java index 51dd639..e5924d3 100644 --- a/game/src/main/java/cz/jzitnik/client/utils/events/AbstractEventHandler.java +++ b/game/src/main/java/cz/jzitnik/client/utils/events/AbstractEventHandler.java @@ -1,5 +1,5 @@ package cz.jzitnik.client.utils.events; -public abstract class AbstractEventHandler { +public abstract class AbstractEventHandler { public abstract void handle(T event); } diff --git a/game/src/main/java/cz/jzitnik/client/utils/events/EventManager.java b/game/src/main/java/cz/jzitnik/client/utils/events/EventManager.java index d1a7b03..ddcf8d9 100644 --- a/game/src/main/java/cz/jzitnik/client/utils/events/EventManager.java +++ b/game/src/main/java/cz/jzitnik/client/utils/events/EventManager.java @@ -24,7 +24,7 @@ public class EventManager extends Thread { private ThreadPoolConfig threadPoolConfig; private ExecutorService eventExecutor; - private final HashMap, AbstractEventHandler> handlers = new HashMap<>(); + private final HashMap, AbstractEventHandler> handlers = new HashMap<>(); private final BlockingQueue eventQueue = new LinkedBlockingQueue<>(); private final DependencyManager dependencyManager; @@ -74,7 +74,7 @@ public class EventManager extends Thread { for (var clazz : classes) { EventHandler eventHandler = clazz.getAnnotation(EventHandler.class); try { - var instance = (AbstractEventHandler) clazz.getDeclaredConstructor().newInstance(); + var instance = (AbstractEventHandler) clazz.getDeclaredConstructor().newInstance(); handlers.put(eventHandler.value(), instance); } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { diff --git a/server/pom.xml b/server/pom.xml index b335cca..6b9d574 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -18,5 +18,49 @@ common 1.0-SNAPSHOT + + + org.projectlombok + lombok + 1.18.42 + provided + + + + jakarta.websocket + jakarta.websocket-api + 2.3.0-M2 + + + + org.glassfish.tyrus + tyrus-server + 2.2.2 + compile + + + + org.glassfish.tyrus + tyrus-container-grizzly-server + 2.2.2 + + + + org.glassfish.tyrus + tyrus-client + 2.2.2 + + + + org.slf4j + slf4j-api + 2.0.17 + + + + ch.qos.logback + logback-classic + 1.5.25 + diff --git a/server/src/main/java/cz/jzitnik/server/Main.java b/server/src/main/java/cz/jzitnik/server/Main.java index 64fd88d..a752d0a 100644 --- a/server/src/main/java/cz/jzitnik/server/Main.java +++ b/server/src/main/java/cz/jzitnik/server/Main.java @@ -1,7 +1,18 @@ package cz.jzitnik.server; -public class Main { - static void main() { +import jakarta.websocket.DeploymentException; +import org.glassfish.tyrus.server.Server; +import java.util.HashMap; +import java.util.Map; +import java.util.Scanner; + +public class Main { + static void main() throws DeploymentException { + Map properties = new HashMap<>(); + Server server = new Server("localhost", 8025, "/", properties, WebSocket.class); + + server.start(); + new Scanner(System.in).nextLine(); } } diff --git a/server/src/main/java/cz/jzitnik/server/WebSocket.java b/server/src/main/java/cz/jzitnik/server/WebSocket.java new file mode 100644 index 0000000..5fa6558 --- /dev/null +++ b/server/src/main/java/cz/jzitnik/server/WebSocket.java @@ -0,0 +1,53 @@ +package cz.jzitnik.server; + +import cz.jzitnik.common.socket.SocketMessage; +import cz.jzitnik.common.socket.messages.Test; +import jakarta.websocket.*; +import jakarta.websocket.server.ServerEndpoint; +import lombok.extern.slf4j.Slf4j; + +import java.io.*; + +@Slf4j +@ServerEndpoint("/ws") +public class WebSocket { + + @OnOpen + public void onOpen(Session session) { + log.debug("Client connected: " + session.getId()); + + try { + SocketMessage response = new Test(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(baos); + oos.writeObject(response); + oos.flush(); + session.getBasicRemote().sendBinary(java.nio.ByteBuffer.wrap(baos.toByteArray())); + } catch (IOException e) { + e.printStackTrace(); + } + } + + // Receive binary data from client + @OnMessage + public void onMessage(byte[] bytes, Session session) { + try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes); + ObjectInputStream ois = new ObjectInputStream(bais)) { + + SocketMessage socketMessage = (SocketMessage) ois.readObject(); + System.out.println("Received: " + socketMessage); + } catch (IOException | ClassNotFoundException e) { + e.printStackTrace(); + } + } + + @OnClose + public void onClose(Session session, CloseReason reason) { + System.out.println("Connection closed: " + reason); + } + + @OnError + public void onError(Session session, Throwable throwable) { + throwable.printStackTrace(); + } +} -- 2.49.1 From fc14e4081d939b51404989069c61a3b0c38bf3d3 Mon Sep 17 00:00:00 2001 From: jzitnik-dev Date: Sat, 31 Jan 2026 19:46:33 +0100 Subject: [PATCH 03/14] feat: Finallized communication --- .idea/FuzzierSettings.xml | 2 +- .../messages/game/creation/CreateGame.java | 6 ++ .../game/creation/CreateGameResponse.java | 6 ++ .../src/main/java/cz/jzitnik/client/Game.java | 2 +- .../cz/jzitnik/client/ui/GlobalShortcuts.java | 13 +++- server/pom.xml | 6 ++ .../src/main/java/cz/jzitnik/server/Main.java | 16 +++- .../server/annotations/EventHandler.java | 14 ++++ .../cz/jzitnik/server/context/AppContext.java | 13 ++++ .../jzitnik/server/context/GameManager.java | 4 + .../jzitnik/server/context/GlobalContext.java | 24 ++++++ .../server/events/AbstractEventHandler.java | 8 ++ .../jzitnik/server/events/EventManager.java | 77 +++++++++++++++++++ .../events/handlers/CreateGameHandler.java | 14 ++++ .../java/cz/jzitnik/server/game/Client.java | 5 ++ .../java/cz/jzitnik/server/game/Game.java | 4 + .../socket/GlobalContextConfigurator.java | 14 ++++ .../jzitnik/server/socket/SocketSession.java | 29 +++++++ .../server/{ => socket}/WebSocket.java | 31 +++----- 19 files changed, 260 insertions(+), 28 deletions(-) create mode 100644 common/src/main/java/cz/jzitnik/common/socket/messages/game/creation/CreateGame.java create mode 100644 common/src/main/java/cz/jzitnik/common/socket/messages/game/creation/CreateGameResponse.java create mode 100644 server/src/main/java/cz/jzitnik/server/annotations/EventHandler.java create mode 100644 server/src/main/java/cz/jzitnik/server/context/AppContext.java create mode 100644 server/src/main/java/cz/jzitnik/server/context/GameManager.java create mode 100644 server/src/main/java/cz/jzitnik/server/context/GlobalContext.java create mode 100644 server/src/main/java/cz/jzitnik/server/events/AbstractEventHandler.java create mode 100644 server/src/main/java/cz/jzitnik/server/events/EventManager.java create mode 100644 server/src/main/java/cz/jzitnik/server/events/handlers/CreateGameHandler.java create mode 100644 server/src/main/java/cz/jzitnik/server/game/Client.java create mode 100644 server/src/main/java/cz/jzitnik/server/game/Game.java create mode 100644 server/src/main/java/cz/jzitnik/server/socket/GlobalContextConfigurator.java create mode 100644 server/src/main/java/cz/jzitnik/server/socket/SocketSession.java rename server/src/main/java/cz/jzitnik/server/{ => socket}/WebSocket.java (54%) diff --git a/.idea/FuzzierSettings.xml b/.idea/FuzzierSettings.xml index 4426b5e..0344d88 100644 --- a/.idea/FuzzierSettings.xml +++ b/.idea/FuzzierSettings.xml @@ -9,6 +9,6 @@ - - - + \ No newline at end of file diff --git a/common/src/main/java/cz/jzitnik/common/Config.java b/common/src/main/java/cz/jzitnik/common/Config.java new file mode 100644 index 0000000..de224e3 --- /dev/null +++ b/common/src/main/java/cz/jzitnik/common/Config.java @@ -0,0 +1,5 @@ +package cz.jzitnik.common; + +public class Config { + public static final int WORLD_PASSWORD_LENGTH = 5; +} diff --git a/common/src/main/java/cz/jzitnik/common/models/coordinates/RoomCords.java b/common/src/main/java/cz/jzitnik/common/models/coordinates/RoomCords.java index 724f2ce..4534fb4 100644 --- a/common/src/main/java/cz/jzitnik/common/models/coordinates/RoomCords.java +++ b/common/src/main/java/cz/jzitnik/common/models/coordinates/RoomCords.java @@ -29,6 +29,10 @@ public class RoomCords implements Cloneable, Serializable { this.y = y; } + public void updateCords(RoomCords roomCords) { + updateCords(roomCords.getX(), roomCords.getY()); + } + public void updateCordsWithColliders(List colliders, int x, int y, RoomPart playerCollider) { var normalizedPlayerCollider = new RoomPart( new RoomCords(playerCollider.getStart().getX() + x, playerCollider.getStart().getY() + y), diff --git a/common/src/main/java/cz/jzitnik/common/models/player/PlayerCreation.java b/common/src/main/java/cz/jzitnik/common/models/player/PlayerCreation.java index 04a6024..a8587ac 100644 --- a/common/src/main/java/cz/jzitnik/common/models/player/PlayerCreation.java +++ b/common/src/main/java/cz/jzitnik/common/models/player/PlayerCreation.java @@ -5,11 +5,14 @@ import com.fasterxml.jackson.annotation.JsonProperty; import cz.jzitnik.common.models.coordinates.RoomCords; import cz.jzitnik.common.models.coordinates.RoomPart; import lombok.Getter; +import lombok.Setter; import java.io.Serializable; @Getter public final class PlayerCreation implements Serializable { + @Setter + private int id; private final RoomCords playerCords; private final RoomPart collider; diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerMove.java b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerMove.java new file mode 100644 index 0000000..8df9a64 --- /dev/null +++ b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerMove.java @@ -0,0 +1,7 @@ +package cz.jzitnik.common.socket.messages.player; + +import cz.jzitnik.common.models.coordinates.RoomCords; +import cz.jzitnik.common.socket.SocketMessage; + +public record PlayerMove(RoomCords newCords) implements SocketMessage { +} diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerMovedInUrRoom.java b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerMovedInUrRoom.java new file mode 100644 index 0000000..3559743 --- /dev/null +++ b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerMovedInUrRoom.java @@ -0,0 +1,13 @@ +package cz.jzitnik.common.socket.messages.player; + +import cz.jzitnik.common.models.coordinates.RoomCords; +import cz.jzitnik.common.socket.SocketMessage; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class PlayerMovedInUrRoom implements SocketMessage { + private int playerId; + private RoomCords cords; +} diff --git a/game/src/main/java/cz/jzitnik/client/events/handlers/PlayerMoveEventHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/PlayerMoveEventHandler.java index 9ab9718..ca0e2c5 100644 --- a/game/src/main/java/cz/jzitnik/client/events/handlers/PlayerMoveEventHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/PlayerMoveEventHandler.java @@ -8,10 +8,7 @@ import cz.jzitnik.client.annotations.injectors.InjectDependency; import cz.jzitnik.client.annotations.injectors.InjectState; import cz.jzitnik.client.config.Debugging; import cz.jzitnik.client.config.PlayerConfig; -import cz.jzitnik.client.events.MouseMoveEvent; -import cz.jzitnik.client.events.PlayerMoveEvent; -import cz.jzitnik.client.events.RerenderScreen; -import cz.jzitnik.client.events.RoomChangeEvent; +import cz.jzitnik.client.events.*; import cz.jzitnik.client.game.GameRoom; import cz.jzitnik.client.game.GameState; import cz.jzitnik.client.game.Player; @@ -26,6 +23,7 @@ import cz.jzitnik.client.utils.RerenderUtils; import cz.jzitnik.client.utils.events.AbstractEventHandler; import cz.jzitnik.client.utils.events.Event; import cz.jzitnik.client.utils.events.EventManager; +import cz.jzitnik.common.socket.messages.player.PlayerMove; import lombok.extern.slf4j.Slf4j; import java.awt.image.BufferedImage; @@ -146,6 +144,7 @@ public class PlayerMoveEventHandler extends AbstractEventHandler otherPlayers = new ArrayList<>(); + @Getter @Setter private Interactable interacting; diff --git a/game/src/main/java/cz/jzitnik/client/game/OtherPlayer.java b/game/src/main/java/cz/jzitnik/client/game/OtherPlayer.java new file mode 100644 index 0000000..e131693 --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/game/OtherPlayer.java @@ -0,0 +1,20 @@ +package cz.jzitnik.client.game; + +import cz.jzitnik.common.models.coordinates.RoomCords; +import cz.jzitnik.common.models.player.PlayerCreation; +import lombok.Getter; +import lombok.Setter; + +@Getter +public class OtherPlayer { + private final int id; + private boolean hitAnimationOn = false; + private final RoomCords playerCords; + @Setter + private Player.PlayerRotation playerRotation = Player.PlayerRotation.FRONT; + + public OtherPlayer(PlayerCreation playerCreation) { + this.id = playerCreation.getId(); + this.playerCords = playerCreation.getPlayerCords(); + } +} diff --git a/game/src/main/java/cz/jzitnik/client/game/Player.java b/game/src/main/java/cz/jzitnik/client/game/Player.java index 0a437fa..b2c15b8 100644 --- a/game/src/main/java/cz/jzitnik/client/game/Player.java +++ b/game/src/main/java/cz/jzitnik/client/game/Player.java @@ -1,7 +1,5 @@ package cz.jzitnik.client.game; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; import cz.jzitnik.client.events.RerenderPart; import cz.jzitnik.client.game.items.GameItem; import cz.jzitnik.client.game.items.types.interfaces.WeaponInterface; @@ -26,6 +24,7 @@ import java.util.concurrent.TimeUnit; @Getter @Slf4j public class Player { + private final int id; public static final int MAX_STAMINA = 20; public static final int MAX_HEALTH = 30; private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); @@ -43,18 +42,10 @@ public class Player { private boolean hitAnimationOn = false; private ScheduledFuture currentTimeoutHitAnimation = null; - @JsonCreator - public Player( - @JsonProperty("playerCords") RoomCords playerCords, - @JsonProperty("collider") RoomPart collider - ) { - this.playerCords = playerCords; - this.collider = collider; - } - public Player(PlayerCreation playerCreation) { this.playerCords = playerCreation.getPlayerCords(); this.collider = playerCreation.getCollider(); + this.id = playerCreation.getId(); } public void increaseStamina() { diff --git a/game/src/main/java/cz/jzitnik/client/game/setup/scenes/connect/ServerChoose.java b/game/src/main/java/cz/jzitnik/client/game/setup/scenes/connect/ServerChoose.java index 2f483a8..888a378 100644 --- a/game/src/main/java/cz/jzitnik/client/game/setup/scenes/connect/ServerChoose.java +++ b/game/src/main/java/cz/jzitnik/client/game/setup/scenes/connect/ServerChoose.java @@ -2,6 +2,7 @@ package cz.jzitnik.client.game.setup.scenes.connect; import com.googlecode.lanterna.TerminalSize; import com.googlecode.lanterna.TextColor; +import com.googlecode.lanterna.graphics.TextGraphics; import com.googlecode.lanterna.input.KeyType; import com.googlecode.lanterna.screen.TerminalScreen; import cz.jzitnik.client.annotations.injectors.InjectDependency; @@ -9,11 +10,13 @@ import cz.jzitnik.client.annotations.injectors.InjectState; import cz.jzitnik.client.events.KeyboardPressEvent; import cz.jzitnik.client.events.MouseAction; import cz.jzitnik.client.events.SendSocketMessageEvent; +import cz.jzitnik.client.game.GameState; import cz.jzitnik.client.screens.Screen; import cz.jzitnik.client.screens.scenes.Scene; import cz.jzitnik.client.socket.Client; import cz.jzitnik.client.sound.SoundPlayer; import cz.jzitnik.client.states.TerminalState; +import cz.jzitnik.client.ui.Inventory; import cz.jzitnik.client.ui.pixels.AlphaPixel; import cz.jzitnik.client.ui.pixels.Empty; import cz.jzitnik.client.ui.utils.Input; @@ -22,10 +25,13 @@ import cz.jzitnik.client.utils.TextRenderer; import cz.jzitnik.client.utils.events.EventManager; import cz.jzitnik.common.socket.messages.game.creation.CreateGame; import jakarta.websocket.DeploymentException; +import cz.jzitnik.client.ui.utils.Button; +import lombok.extern.slf4j.Slf4j; import java.awt.*; import java.io.IOException; +@Slf4j public class ServerChoose extends Scene { public ServerChoose(DependencyManager dependencyManager) { GameMenuAudioScreen gameMenuScreen = new GameMenuAudioScreen(); @@ -78,6 +84,12 @@ public class ServerChoose extends Scene { @InjectDependency private TextRenderer textRenderer; + @InjectState + private GameState gameState; + + @InjectDependency + private DependencyManager dependencyManager; + private void renderInput(boolean refresh) { var tg = terminalState.getTextGraphics(); TerminalScreen screen = terminalState.getTerminalScreen(); @@ -136,32 +148,12 @@ public class ServerChoose extends Scene { AlphaPixel[][] selectServer = textRenderer.renderText("Enter server IP", terminalSize.getColumns(), 20, Color.WHITE, 15f, true); - int padY = 10; - - for (int y = 0; y < selectServer.length; y += 2) { - for (int x = 0; x < selectServer[y].length; x++) { - AlphaPixel topPixel = selectServer[y][x]; - - AlphaPixel bottomPixel; - if (y + 1 < selectServer.length) { - bottomPixel = selectServer[y + 1][x]; - } else { - bottomPixel = new Empty(); - } - - int termX = x; - int termY = padY / 2 + y / 2; - - tg.setBackgroundColor(topPixel instanceof Empty ? TextColor.ANSI.BLACK : topPixel.getColor()); - tg.setForegroundColor(bottomPixel instanceof Empty ? TextColor.ANSI.BLACK : bottomPixel.getColor()); - tg.setCharacter(termX, termY, 'â–„'); - } - } + render(selectServer, 0, 10, tg); renderInput(false); try { - screen.refresh(com.googlecode.lanterna.screen.Screen.RefreshType.DELTA); + screen.refresh(com.googlecode.lanterna.screen.Screen.RefreshType.COMPLETE); } catch (IOException e) { throw new RuntimeException(e); } @@ -178,7 +170,10 @@ public class ServerChoose extends Scene { connecting = true; client.connect(ipBuffer.toString()); - eventManager.emitEvent(new SendSocketMessageEvent(new CreateGame())); + Screen screen = new ActionSelector(); + dependencyManager.inject(screen); + gameState.setScreen(screen); + screen.fullRender(); } catch (DeploymentException | IOException e) { connecting = false; } @@ -195,7 +190,7 @@ public class ServerChoose extends Scene { return; } - if (event.getKeyStroke().getKeyType() == KeyType.Character) { + if (event.getKeyStroke().getKeyType() == KeyType.Character && !event.getKeyStroke().isCtrlDown()) { ipBuffer.append(event.getKeyStroke().getCharacter()); renderInput(true); } @@ -205,4 +200,282 @@ public class ServerChoose extends Scene { public void handleMouseAction(MouseAction event) { } } + + private static final class ActionSelector extends Screen { + @InjectDependency + private TextRenderer textRenderer; + + @InjectState + private TerminalState terminalState; + + @InjectDependency + private EventManager eventManager; + + @InjectState + private GameState gameState; + + private int selectedIndex = -1; + + @Override + public void fullRender() { + TerminalScreen screen = terminalState.getTerminalScreen(); + var tg = terminalState.getTextGraphics(); + screen.clear(); + TerminalSize terminalSize = screen.getTerminalSize(); + + for (int y = 0; y < terminalSize.getRows(); y += 1) { + for (int x = 0; x < terminalSize.getColumns(); x++) { + tg.setBackgroundColor(TextColor.ANSI.BLACK); + tg.setForegroundColor(TextColor.ANSI.BLACK); + tg.setCharacter(x, y, 'â–„'); + } + } + + AlphaPixel[][] selectAction = textRenderer.renderText("Select action", terminalSize.getColumns(), 20, Color.WHITE, 15f, true); + + render(selectAction, 0, 10, tg); + renderButtons(); + + try { + screen.refresh(com.googlecode.lanterna.screen.Screen.RefreshType.COMPLETE); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private static final int BUTTON_HEIGHT = 20; + private static final int BUTTON_WIDTH = 200; + private static final int BUTTON_GAP = 10; + private static final int BUTTON_COUNT = 2; + private static final int BUTTONS_HEIGHT = BUTTON_HEIGHT * BUTTON_COUNT + (BUTTON_COUNT - 1) * BUTTON_GAP; + + private void renderButtons() { + var tg = terminalState.getTextGraphics(); + TerminalSize terminalSize = terminalState.getTerminalScreen().getTerminalSize(); + + final int BUTTON_PAD_X = terminalSize.getColumns() / 2 - BUTTON_WIDTH / 2; + final int BUTTON_PAD_Y = terminalSize.getRows() - BUTTONS_HEIGHT / 2; + + Button button = new Button( + Inventory.BORDER_COLOR, + Inventory.BACKGROUND_COLOR, + Inventory.BACKGROUND_COLOR_HOVERED, + Color.WHITE, + BUTTON_HEIGHT, + BUTTON_WIDTH, + 1, + 15f, + textRenderer + ); + + render(button.render("Create a world", selectedIndex == 0), BUTTON_PAD_X, BUTTON_PAD_Y, tg); + render(button.render("Connect to an existing world", selectedIndex == 1), BUTTON_PAD_X, BUTTON_PAD_Y + (BUTTON_HEIGHT + BUTTON_GAP), tg); + } + + @Override + public void handleMouseAction(MouseAction event) { + TerminalSize terminalSize = terminalState.getTerminalScreen().getTerminalSize(); + + final int BUTTON_START_X = terminalSize.getColumns() / 2 - BUTTON_WIDTH / 2; + final int BUTTON_START_Y = terminalSize.getRows() - BUTTONS_HEIGHT / 2; + final int BUTTON_END_X = BUTTON_START_X + BUTTON_WIDTH; + final int BUTTON_END_Y = BUTTON_START_Y + BUTTONS_HEIGHT; + + final int TERMINAL_X = event.getPosition().getColumn(); + final int TERMINAL_Y = event.getPosition().getRow() * 2; + + final int SINGLE_BUTTON_HEIGHT = BUTTON_HEIGHT + BUTTON_GAP; + + int index = (TERMINAL_Y - BUTTON_START_Y) / SINGLE_BUTTON_HEIGHT; + int rest = (TERMINAL_Y - BUTTON_START_Y) % SINGLE_BUTTON_HEIGHT; + + if (!(TERMINAL_X >= BUTTON_START_X && TERMINAL_Y >= BUTTON_START_Y && TERMINAL_X < BUTTON_END_X && TERMINAL_Y < BUTTON_END_Y) || rest > BUTTON_HEIGHT) { + if (selectedIndex != -1) { + selectedIndex = -1; + renderButtons(); + refresh(); + } + return; + } + + switch (event.getActionType()) { + case MOVE -> { + selectedIndex = index; + renderButtons(); + refresh(); + } + case CLICK_RELEASE -> { + switch (index) { + case 0 -> eventManager.emitEvent(new SendSocketMessageEvent(new CreateGame())); + case 1 -> { + Screen screen = new ConnectWorld(); + gameState.setScreen(screen); + screen.fullRender(); + } + } + } + } + } + + private void refresh() { + try { + terminalState.getTerminalScreen().refresh(com.googlecode.lanterna.screen.Screen.RefreshType.DELTA); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public void handleKeyboardAction(KeyboardPressEvent event) { + + } + } + + + private static final class ConnectWorld extends Screen { + private final StringBuilder passBuffer = new StringBuilder(); + private boolean connecting = false; + + @InjectDependency + private EventManager eventManager; + + @InjectDependency + private Client client; + + @InjectState + private TerminalState terminalState; + + @InjectDependency + private TextRenderer textRenderer; + + @InjectState + private GameState gameState; + + @InjectDependency + private DependencyManager dependencyManager; + + private void renderInput(boolean refresh) { + var tg = terminalState.getTextGraphics(); + TerminalScreen screen = terminalState.getTerminalScreen(); + Input input = new Input(passBuffer.toString(), 18, 100); + var inputBuffer = input.render(textRenderer); + TerminalSize termSize = screen.getTerminalSize(); + int renderPixelWidth = inputBuffer[0].length; + int renderPixelHeight = inputBuffer.length; + int renderCharWidth = renderPixelWidth; + int renderCharHeight = (renderPixelHeight + 1) / 2; + int startX = (termSize.getColumns() - renderCharWidth) / 2; + int startY = (termSize.getRows() - renderCharHeight) / 2; + + for (int y = 0; y < inputBuffer.length; y += 2) { + for (int x = 0; x < inputBuffer[y].length; x++) { + AlphaPixel bottomPixel; + AlphaPixel topPixel = inputBuffer[y][x]; + if (y + 1 < inputBuffer.length) { + bottomPixel = inputBuffer[y + 1][x]; + } else { + bottomPixel = new Empty(); + } + + int termX = startX + x; + int termY = startY + (y / 2); + + tg.setBackgroundColor(topPixel instanceof Empty ? TextColor.ANSI.BLACK : topPixel.getColor()); + tg.setForegroundColor(bottomPixel instanceof Empty ? TextColor.ANSI.BLACK : bottomPixel.getColor()); + tg.setCharacter(termX, termY, 'â–„'); + } + } + + if (refresh) { + try { + screen.refresh(com.googlecode.lanterna.screen.Screen.RefreshType.DELTA); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + + @Override + public void fullRender() { + TerminalScreen screen = terminalState.getTerminalScreen(); + var tg = terminalState.getTextGraphics(); + screen.clear(); + TerminalSize terminalSize = screen.getTerminalSize(); + + for (int y = 0; y < terminalSize.getRows(); y += 1) { + for (int x = 0; x < terminalSize.getColumns(); x++) { + tg.setBackgroundColor(TextColor.ANSI.BLACK); + tg.setForegroundColor(TextColor.ANSI.BLACK); + tg.setCharacter(x, y, 'â–„'); + } + } + + AlphaPixel[][] selectServer = textRenderer.renderText("Enter world password", terminalSize.getColumns(), 20, Color.WHITE, 15f, true); + + render(selectServer, 0, 10, tg); + + renderInput(false); + + try { + screen.refresh(com.googlecode.lanterna.screen.Screen.RefreshType.COMPLETE); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public void handleKeyboardAction(KeyboardPressEvent event) { + if (connecting) { + return; + } + + if (event.getKeyStroke().getKeyType() == KeyType.Enter) { + connecting = true; + String pass = passBuffer.toString(); + + return; + } + + if (event.getKeyStroke().getKeyType() == KeyType.Backspace) { + if (passBuffer.isEmpty()) { + return; + } + + passBuffer.deleteCharAt(passBuffer.length() - 1); + renderInput(true); + return; + } + + if (event.getKeyStroke().getKeyType() == KeyType.Character && !event.getKeyStroke().isCtrlDown()) { + passBuffer.append(event.getKeyStroke().getCharacter()); + renderInput(true); + } + } + + @Override + public void handleMouseAction(MouseAction event) { + } + } + + private static void render(AlphaPixel[][] buffer, int padX, int padY, TextGraphics tg) { + for (int y = 0; y < buffer.length; y += 2) { + for (int x = 0; x < buffer[y].length; x++) { + AlphaPixel topPixel = buffer[y][x]; + + AlphaPixel bottomPixel; + if (y + 1 < buffer.length) { + bottomPixel = buffer[y + 1][x]; + } else { + bottomPixel = new Empty(); + } + + int termX = padX + x; + int termY = padY / 2 + y / 2; + + tg.setBackgroundColor(topPixel instanceof Empty ? TextColor.ANSI.BLACK : topPixel.getColor()); + tg.setForegroundColor(bottomPixel instanceof Empty ? TextColor.ANSI.BLACK : bottomPixel.getColor()); + tg.setCharacter(termX, termY, 'â–„'); + } + } + } } diff --git a/game/src/main/java/cz/jzitnik/client/ui/Inventory.java b/game/src/main/java/cz/jzitnik/client/ui/Inventory.java index ed2306c..8390187 100644 --- a/game/src/main/java/cz/jzitnik/client/ui/Inventory.java +++ b/game/src/main/java/cz/jzitnik/client/ui/Inventory.java @@ -18,6 +18,7 @@ import cz.jzitnik.client.game.ResourceManager; import cz.jzitnik.client.game.items.GameItem; import cz.jzitnik.client.game.items.types.InteractableItem; import cz.jzitnik.client.game.objects.DroppedItem; +import cz.jzitnik.client.ui.pixels.AlphaPixel; import cz.jzitnik.common.models.coordinates.RoomCords; import cz.jzitnik.client.states.ScreenBuffer; import cz.jzitnik.client.states.TerminalState; @@ -50,17 +51,17 @@ public class Inventory { private static final int INNER_BORDER_WIDTH = 1; private static final int ITEM_SIZE = 16; // Characters private static final int ITEM_PADDING = 2; // padding on each side - public static final Pixel BORDER_COLOR = + public static final AlphaPixel BORDER_COLOR = new ColoredPixel(new TextColor.RGB(41, 29, 19)); - public static final Pixel BACKGROUND_COLOR = + public static final AlphaPixel BACKGROUND_COLOR = new ColoredPixel(new TextColor.RGB(61, 45, 29)); - private static final Pixel BACKGROUND_COLOR_HOVERED = + public static final AlphaPixel BACKGROUND_COLOR_HOVERED = new ColoredPixel(new TextColor.RGB(77, 56, 36)); - private static final Pixel BACKGROUND_COLOR_SELECTED = + private static final AlphaPixel BACKGROUND_COLOR_SELECTED = new ColoredPixel(new TextColor.RGB(95, 62, 32)); - private static final Pixel BACKGROUND_COLOR_EQUIPPED = + private static final AlphaPixel BACKGROUND_COLOR_EQUIPPED = new ColoredPixel(new TextColor.RGB(50, 145, 150)); - private static final Pixel BACKGROUND_COLOR_EQUIPPED_SELECTED = + private static final AlphaPixel BACKGROUND_COLOR_EQUIPPED_SELECTED = new ColoredPixel(new TextColor.RGB(58, 170, 176)); private static final int ITEM_SLOT_SIZE = ITEM_SIZE + ITEM_PADDING * 2; public static final int INVENTORY_WIDTH = diff --git a/game/src/main/java/cz/jzitnik/client/ui/pixels/AlphaPixel.java b/game/src/main/java/cz/jzitnik/client/ui/pixels/AlphaPixel.java index b6819fb..a7e13f8 100644 --- a/game/src/main/java/cz/jzitnik/client/ui/pixels/AlphaPixel.java +++ b/game/src/main/java/cz/jzitnik/client/ui/pixels/AlphaPixel.java @@ -10,4 +10,8 @@ public sealed abstract class AlphaPixel extends Pixel permits Empty, ColoredPixe super(color); this.alpha = alpha; } + + public boolean isTransparent() { + return alpha == 0f; + } } diff --git a/game/src/main/java/cz/jzitnik/client/ui/utils/Button.java b/game/src/main/java/cz/jzitnik/client/ui/utils/Button.java new file mode 100644 index 0000000..c2876fb --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/ui/utils/Button.java @@ -0,0 +1,50 @@ +package cz.jzitnik.client.ui.utils; + +import cz.jzitnik.client.ui.pixels.AlphaPixel; +import cz.jzitnik.client.utils.TextRenderer; + +import java.awt.*; + +public record Button( + AlphaPixel borderColor, + AlphaPixel backgroundColor, + AlphaPixel backgroundSelectedColor, + Color textColor, + int height, + int width, + int borderWidth, + float fontSize, + TextRenderer textRenderer +) { + public AlphaPixel[][] render(String text, boolean selected) { + AlphaPixel[][] buf = new AlphaPixel[height][width]; + AlphaPixel[][] textBuf = textRenderer.renderTextSingleLine(text, width - borderWidth * 2, height - borderWidth * 2, textColor, fontSize, true, true); + + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) { + if (x < borderWidth || y < borderWidth || x >= width - borderWidth || y >= height - borderWidth) { + buf[y][x] = borderColor; + continue; + } + + if (x == borderWidth || y == borderWidth || x - 1 == width - borderWidth || y == height - borderWidth) { + buf[y][x] = selected ? backgroundSelectedColor : backgroundColor; + continue; + } + + int textActualX = x - borderWidth - 1; + int textActualY = y - borderWidth - 1; + AlphaPixel textPixel = textBuf[textActualY][textActualX]; + + if (!textPixel.isTransparent()) { + buf[y][x] = textPixel; + continue; + } + + buf[y][x] = selected ? backgroundSelectedColor : backgroundColor; + } + } + + return buf; + } +} diff --git a/server/src/main/java/cz/jzitnik/server/context/GlobalContext.java b/server/src/main/java/cz/jzitnik/server/context/GlobalContext.java index 52519d2..d4cd1fb 100644 --- a/server/src/main/java/cz/jzitnik/server/context/GlobalContext.java +++ b/server/src/main/java/cz/jzitnik/server/context/GlobalContext.java @@ -2,23 +2,52 @@ package cz.jzitnik.server.context; import cz.jzitnik.server.game.Client; import cz.jzitnik.server.events.EventManager; -import cz.jzitnik.server.socket.SocketSession; +import cz.jzitnik.server.game.Game; import jakarta.websocket.Session; import lombok.Getter; import lombok.Setter; +import java.io.IOException; +import java.io.InputStream; import java.util.HashMap; +import java.util.HashSet; +import java.util.Properties; +import java.util.Set; public class GlobalContext { @Getter private final HashMap sessions = new HashMap<>(); + @Getter + private final Set games = new HashSet<>(); + @Getter @Setter private EventManager eventManager; - public void registerClient(Session session) { - Client client = new Client(new SocketSession(session)); - sessions.put(session, client); + @Getter + private final Properties properties; + + public void registerClient(Client client) { + sessions.put(client.getSession().getSession(), client); + } + + public GlobalContext() { + Properties props = new Properties(); + + try (InputStream input = GlobalContext.class + .getClassLoader() + .getResourceAsStream("config.properties")) { + + if (input == null) { + throw new RuntimeException("config.properties not found"); + } + + props.load(input); + + this.properties = props; + } catch (IOException e) { + throw new RuntimeException(e); + } } } diff --git a/server/src/main/java/cz/jzitnik/server/events/handlers/CreateGameHandler.java b/server/src/main/java/cz/jzitnik/server/events/handlers/CreateGameHandler.java index c23b3b7..410344f 100644 --- a/server/src/main/java/cz/jzitnik/server/events/handlers/CreateGameHandler.java +++ b/server/src/main/java/cz/jzitnik/server/events/handlers/CreateGameHandler.java @@ -1,5 +1,6 @@ package cz.jzitnik.server.events.handlers; +import cz.jzitnik.common.Config; import cz.jzitnik.common.models.player.PlayerCreation; import cz.jzitnik.common.socket.messages.game.creation.CreateGame; import cz.jzitnik.common.socket.messages.game.creation.CreateGameResponse; @@ -7,11 +8,17 @@ import cz.jzitnik.server.annotations.EventHandler; import cz.jzitnik.server.context.GlobalContext; import cz.jzitnik.server.events.AbstractEventHandler; import cz.jzitnik.server.game.Client; +import cz.jzitnik.server.game.Game; +import cz.jzitnik.server.game.Player; +import cz.jzitnik.server.utils.PasswordGenerator; import lombok.RequiredArgsConstructor; import tools.jackson.databind.ObjectMapper; import tools.jackson.databind.ObjectReader; import tools.jackson.dataformat.yaml.YAMLFactory; +import java.util.ArrayList; +import java.util.List; + @RequiredArgsConstructor @EventHandler(CreateGame.class) public class CreateGameHandler extends AbstractEventHandler { @@ -20,13 +27,24 @@ public class CreateGameHandler extends AbstractEventHandler { @Override public void handle(CreateGame event, Client client) { ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory()); - String pass = "nevim"; // TODO: Generate + String pass = PasswordGenerator.generatePassword(Config.WORLD_PASSWORD_LENGTH); // TODO: Generate + int id = 0; // Owners id is always 0 ObjectReader playerReader = objectMapper.readerFor(PlayerCreation.class); PlayerCreation player = playerReader.readValue(getClass().getClassLoader().getResourceAsStream("setup/player.yaml")); + player.setId(id); + + client.setPlayer(new Player(id, player.getPlayerCords())); CreateGameResponse gameResponse = new CreateGameResponse(pass, player); + Game game = new Game( + pass, + new ArrayList<>(List.of(client)) + ); + client.setGame(game); + client.getPlayer().setCurrentRoom(globalContext.getProperties().getProperty("rooms.default")); + globalContext.getGames().add(game); - client.session().sendMessage(gameResponse); + client.getSession().sendMessage(gameResponse); } } diff --git a/server/src/main/java/cz/jzitnik/server/events/handlers/PlayerMoveHandler.java b/server/src/main/java/cz/jzitnik/server/events/handlers/PlayerMoveHandler.java new file mode 100644 index 0000000..67a74d1 --- /dev/null +++ b/server/src/main/java/cz/jzitnik/server/events/handlers/PlayerMoveHandler.java @@ -0,0 +1,26 @@ +package cz.jzitnik.server.events.handlers; + +import cz.jzitnik.common.socket.messages.player.PlayerMove; +import cz.jzitnik.common.socket.messages.player.PlayerMovedInUrRoom; +import cz.jzitnik.server.annotations.EventHandler; +import cz.jzitnik.server.context.GlobalContext; +import cz.jzitnik.server.events.AbstractEventHandler; +import cz.jzitnik.server.game.Client; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor +@EventHandler(PlayerMove.class) +public class PlayerMoveHandler extends AbstractEventHandler { + private final GlobalContext globalContext; + + @Override + public void handle(PlayerMove event, Client client) { + client.getPlayer().getCords().updateCords(event.newCords()); + + for (Client player : client.getGame().getPlayers()) { + if (player.getPlayer().getCurrentRoom().equals(client.getPlayer().getCurrentRoom()) && player.getPlayer().getId() != client.getPlayer().getId()) { + player.getSession().sendMessage(new PlayerMovedInUrRoom(client.getPlayer().getId(), event.newCords())); + } + } + } +} diff --git a/server/src/main/java/cz/jzitnik/server/game/Client.java b/server/src/main/java/cz/jzitnik/server/game/Client.java index 0ddae7f..32394d4 100644 --- a/server/src/main/java/cz/jzitnik/server/game/Client.java +++ b/server/src/main/java/cz/jzitnik/server/game/Client.java @@ -1,5 +1,25 @@ package cz.jzitnik.server.game; import cz.jzitnik.server.socket.SocketSession; +import lombok.Getter; +import lombok.Setter; -public record Client(SocketSession session) {} \ No newline at end of file +@Getter +public final class Client { + private final SocketSession session; + @Setter + private Player player; + @Setter + private Game game; + + public Client(SocketSession session, Player player, Game game) { + this.session = session; + this.player = player; + this.game = game; + } + + public Client(SocketSession session, Player player) { + this(session, player, null); + } + +} \ No newline at end of file diff --git a/server/src/main/java/cz/jzitnik/server/game/Game.java b/server/src/main/java/cz/jzitnik/server/game/Game.java index 42011b3..27a421f 100644 --- a/server/src/main/java/cz/jzitnik/server/game/Game.java +++ b/server/src/main/java/cz/jzitnik/server/game/Game.java @@ -1,4 +1,13 @@ package cz.jzitnik.server.game; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.List; + +@Getter +@AllArgsConstructor public class Game { + private String password; + private List players; } diff --git a/server/src/main/java/cz/jzitnik/server/game/Player.java b/server/src/main/java/cz/jzitnik/server/game/Player.java new file mode 100644 index 0000000..8fd519d --- /dev/null +++ b/server/src/main/java/cz/jzitnik/server/game/Player.java @@ -0,0 +1,15 @@ +package cz.jzitnik.server.game; + +import cz.jzitnik.common.models.coordinates.RoomCords; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.Setter; + +@Getter +@RequiredArgsConstructor +public class Player { + private final int id; + private final RoomCords cords; + @Setter + private String currentRoom; +} diff --git a/server/src/main/java/cz/jzitnik/server/socket/WebSocket.java b/server/src/main/java/cz/jzitnik/server/socket/WebSocket.java index 623bc86..e43368d 100644 --- a/server/src/main/java/cz/jzitnik/server/socket/WebSocket.java +++ b/server/src/main/java/cz/jzitnik/server/socket/WebSocket.java @@ -18,7 +18,8 @@ public class WebSocket { @OnOpen public void onOpen(Session session, EndpointConfig config) { this.globalContext = (GlobalContext) config.getUserProperties().get("globalContext"); - globalContext.registerClient(session); + + globalContext.registerClient(new Client(new SocketSession(session), null)); log.debug("Client connected: {}", session.getId()); } diff --git a/server/src/main/java/cz/jzitnik/server/utils/PasswordGenerator.java b/server/src/main/java/cz/jzitnik/server/utils/PasswordGenerator.java new file mode 100644 index 0000000..2f4423f --- /dev/null +++ b/server/src/main/java/cz/jzitnik/server/utils/PasswordGenerator.java @@ -0,0 +1,23 @@ +package cz.jzitnik.server.utils; + +import java.security.SecureRandom; + +public class PasswordGenerator { + private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + private static final SecureRandom RANDOM = new SecureRandom(); + + public static String generatePassword(int length) { + if (length <= 0) { + throw new IllegalArgumentException("Password length must be greater than 0"); + } + + StringBuilder password = new StringBuilder(length); + + for (int i = 0; i < length; i++) { + int index = RANDOM.nextInt(CHARACTERS.length()); + password.append(CHARACTERS.charAt(index)); + } + + return password.toString(); + } +} diff --git a/server/src/main/resources/config.properties b/server/src/main/resources/config.properties new file mode 100644 index 0000000..503483b --- /dev/null +++ b/server/src/main/resources/config.properties @@ -0,0 +1 @@ +rooms.default=spawn \ No newline at end of file -- 2.49.1 From 24f54b8b7a2567711a1147f1b6bc7def7c25d158 Mon Sep 17 00:00:00 2001 From: jzitnik-dev Date: Mon, 2 Feb 2026 19:18:25 +0100 Subject: [PATCH 08/14] feat: Connecting to a game --- .../game/connection/ConnectToAGame.java | 6 +++ .../connection/ConnectToAGameResponse.java | 23 ++++++++++ .../setup/scenes/connect/ServerChoose.java | 2 + .../socket/events/ConnectGameHandler.java | 33 +++++++++++++ .../socket/events/CreateGameHandler.java | 3 ++ .../jzitnik/server/context/GlobalContext.java | 9 ++-- .../server/events/AbstractEventHandler.java | 4 ++ .../handlers/ConnectToAGameHandler.java | 46 +++++++++++++++++++ .../events/handlers/CreateGameHandler.java | 5 +- .../events/handlers/PlayerMoveHandler.java | 6 +-- .../server/utils/PasswordGenerator.java | 2 +- 11 files changed, 129 insertions(+), 10 deletions(-) create mode 100644 common/src/main/java/cz/jzitnik/common/socket/messages/game/connection/ConnectToAGame.java create mode 100644 common/src/main/java/cz/jzitnik/common/socket/messages/game/connection/ConnectToAGameResponse.java create mode 100644 game/src/main/java/cz/jzitnik/client/socket/events/ConnectGameHandler.java create mode 100644 server/src/main/java/cz/jzitnik/server/events/handlers/ConnectToAGameHandler.java diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/game/connection/ConnectToAGame.java b/common/src/main/java/cz/jzitnik/common/socket/messages/game/connection/ConnectToAGame.java new file mode 100644 index 0000000..72fc1a2 --- /dev/null +++ b/common/src/main/java/cz/jzitnik/common/socket/messages/game/connection/ConnectToAGame.java @@ -0,0 +1,6 @@ +package cz.jzitnik.common.socket.messages.game.connection; + +import cz.jzitnik.common.socket.SocketMessage; + +public record ConnectToAGame(String gamePass) implements SocketMessage { +} diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/game/connection/ConnectToAGameResponse.java b/common/src/main/java/cz/jzitnik/common/socket/messages/game/connection/ConnectToAGameResponse.java new file mode 100644 index 0000000..d652d2a --- /dev/null +++ b/common/src/main/java/cz/jzitnik/common/socket/messages/game/connection/ConnectToAGameResponse.java @@ -0,0 +1,23 @@ +package cz.jzitnik.common.socket.messages.game.connection; + +import cz.jzitnik.common.models.player.PlayerCreation; +import cz.jzitnik.common.socket.SocketMessage; + +public record ConnectToAGameResponse(ResponseType responseType, PlayerCreation playerCreation) implements SocketMessage { + private enum ResponseType { + GAME_DOES_NOT_EXIST, + SUCCESS + } + + public ConnectToAGameResponse() { + this(ResponseType.GAME_DOES_NOT_EXIST, null); + } + + public ConnectToAGameResponse(PlayerCreation playerCreation) { + this(ResponseType.SUCCESS, playerCreation); + } + + public boolean success() { + return responseType == ResponseType.SUCCESS; + } +} diff --git a/game/src/main/java/cz/jzitnik/client/game/setup/scenes/connect/ServerChoose.java b/game/src/main/java/cz/jzitnik/client/game/setup/scenes/connect/ServerChoose.java index 888a378..c1a3d53 100644 --- a/game/src/main/java/cz/jzitnik/client/game/setup/scenes/connect/ServerChoose.java +++ b/game/src/main/java/cz/jzitnik/client/game/setup/scenes/connect/ServerChoose.java @@ -23,6 +23,7 @@ import cz.jzitnik.client.ui.utils.Input; import cz.jzitnik.client.utils.DependencyManager; import cz.jzitnik.client.utils.TextRenderer; import cz.jzitnik.client.utils.events.EventManager; +import cz.jzitnik.common.socket.messages.game.connection.ConnectToAGame; import cz.jzitnik.common.socket.messages.game.creation.CreateGame; import jakarta.websocket.DeploymentException; import cz.jzitnik.client.ui.utils.Button; @@ -432,6 +433,7 @@ public class ServerChoose extends Scene { if (event.getKeyStroke().getKeyType() == KeyType.Enter) { connecting = true; String pass = passBuffer.toString(); + eventManager.emitEvent(new SendSocketMessageEvent(new ConnectToAGame(pass))); return; } diff --git a/game/src/main/java/cz/jzitnik/client/socket/events/ConnectGameHandler.java b/game/src/main/java/cz/jzitnik/client/socket/events/ConnectGameHandler.java new file mode 100644 index 0000000..597d761 --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/socket/events/ConnectGameHandler.java @@ -0,0 +1,33 @@ +package cz.jzitnik.client.socket.events; + +import cz.jzitnik.client.annotations.SocketEventHandler; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.FullRoomDraw; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.Player; +import cz.jzitnik.client.socket.AbstractSocketEventHandler; +import cz.jzitnik.client.utils.events.EventManager; +import cz.jzitnik.common.socket.messages.game.connection.ConnectToAGameResponse; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@SocketEventHandler(ConnectToAGameResponse.class) +public class ConnectGameHandler extends AbstractSocketEventHandler { + @InjectState + private GameState gameState; + @InjectDependency + private EventManager eventManager; + + @Override + public void handle(ConnectToAGameResponse event) { + if (!event.success()) { + log.debug("Error"); + return; + } + + gameState.setPlayer(new Player(event.playerCreation())); + gameState.setScreen(null); + eventManager.emitEvent(new FullRoomDraw()); + } +} diff --git a/game/src/main/java/cz/jzitnik/client/socket/events/CreateGameHandler.java b/game/src/main/java/cz/jzitnik/client/socket/events/CreateGameHandler.java index ce8c846..4ba6b32 100644 --- a/game/src/main/java/cz/jzitnik/client/socket/events/CreateGameHandler.java +++ b/game/src/main/java/cz/jzitnik/client/socket/events/CreateGameHandler.java @@ -9,7 +9,9 @@ import cz.jzitnik.client.game.Player; import cz.jzitnik.client.socket.AbstractSocketEventHandler; import cz.jzitnik.client.utils.events.EventManager; import cz.jzitnik.common.socket.messages.game.creation.CreateGameResponse; +import lombok.extern.slf4j.Slf4j; +@Slf4j @SocketEventHandler(CreateGameResponse.class) public class CreateGameHandler extends AbstractSocketEventHandler { @InjectState @@ -19,6 +21,7 @@ public class CreateGameHandler extends AbstractSocketEventHandler getGame(String pass) { + return games.stream().filter(game -> game.getPassword().equals(pass)).findFirst(); + } + public GlobalContext() { Properties props = new Properties(); diff --git a/server/src/main/java/cz/jzitnik/server/events/AbstractEventHandler.java b/server/src/main/java/cz/jzitnik/server/events/AbstractEventHandler.java index 603b424..28e7f28 100644 --- a/server/src/main/java/cz/jzitnik/server/events/AbstractEventHandler.java +++ b/server/src/main/java/cz/jzitnik/server/events/AbstractEventHandler.java @@ -1,8 +1,12 @@ package cz.jzitnik.server.events; import cz.jzitnik.common.socket.SocketMessage; +import cz.jzitnik.server.context.GlobalContext; import cz.jzitnik.server.game.Client; +import lombok.RequiredArgsConstructor; +@RequiredArgsConstructor public abstract class AbstractEventHandler { + protected final GlobalContext globalContext; public abstract void handle(T event, Client client); } diff --git a/server/src/main/java/cz/jzitnik/server/events/handlers/ConnectToAGameHandler.java b/server/src/main/java/cz/jzitnik/server/events/handlers/ConnectToAGameHandler.java new file mode 100644 index 0000000..b0fc35e --- /dev/null +++ b/server/src/main/java/cz/jzitnik/server/events/handlers/ConnectToAGameHandler.java @@ -0,0 +1,46 @@ +package cz.jzitnik.server.events.handlers; + +import cz.jzitnik.common.models.player.PlayerCreation; +import cz.jzitnik.common.socket.messages.game.connection.ConnectToAGame; +import cz.jzitnik.common.socket.messages.game.connection.ConnectToAGameResponse; +import cz.jzitnik.server.annotations.EventHandler; +import cz.jzitnik.server.context.GlobalContext; +import cz.jzitnik.server.events.AbstractEventHandler; +import cz.jzitnik.server.game.Client; +import cz.jzitnik.server.game.Player; +import lombok.extern.slf4j.Slf4j; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectReader; +import tools.jackson.dataformat.yaml.YAMLFactory; + +@Slf4j +@EventHandler(ConnectToAGame.class) +public class ConnectToAGameHandler extends AbstractEventHandler { + public ConnectToAGameHandler(GlobalContext globalContext) { + super(globalContext); + } + + @Override + public void handle(ConnectToAGame event, Client client) { + log.debug("Pepa"); + var gameOptional = globalContext.getGame(event.gamePass().toUpperCase()); + + if (gameOptional.isEmpty()) { + client.getSession().sendMessage(new ConnectToAGameResponse()); + return; + } + + var game = gameOptional.get(); + + ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory()); + ObjectReader playerReader = objectMapper.readerFor(PlayerCreation.class); + PlayerCreation player = playerReader.readValue(getClass().getClassLoader().getResourceAsStream("setup/player.yaml")); + client.setPlayer(new Player(game.getPlayers().size(), player.getPlayerCords())); + client.setGame(game); + client.getPlayer().setCurrentRoom(globalContext.getProperties().getProperty("rooms.default")); + + game.getPlayers().add(client); + + client.getSession().sendMessage(new ConnectToAGameResponse(player)); + } +} diff --git a/server/src/main/java/cz/jzitnik/server/events/handlers/CreateGameHandler.java b/server/src/main/java/cz/jzitnik/server/events/handlers/CreateGameHandler.java index 410344f..597a937 100644 --- a/server/src/main/java/cz/jzitnik/server/events/handlers/CreateGameHandler.java +++ b/server/src/main/java/cz/jzitnik/server/events/handlers/CreateGameHandler.java @@ -19,10 +19,11 @@ import tools.jackson.dataformat.yaml.YAMLFactory; import java.util.ArrayList; import java.util.List; -@RequiredArgsConstructor @EventHandler(CreateGame.class) public class CreateGameHandler extends AbstractEventHandler { - private final GlobalContext globalContext; + public CreateGameHandler(GlobalContext globalContext) { + super(globalContext); + } @Override public void handle(CreateGame event, Client client) { diff --git a/server/src/main/java/cz/jzitnik/server/events/handlers/PlayerMoveHandler.java b/server/src/main/java/cz/jzitnik/server/events/handlers/PlayerMoveHandler.java index 67a74d1..816901c 100644 --- a/server/src/main/java/cz/jzitnik/server/events/handlers/PlayerMoveHandler.java +++ b/server/src/main/java/cz/jzitnik/server/events/handlers/PlayerMoveHandler.java @@ -6,12 +6,12 @@ import cz.jzitnik.server.annotations.EventHandler; import cz.jzitnik.server.context.GlobalContext; import cz.jzitnik.server.events.AbstractEventHandler; import cz.jzitnik.server.game.Client; -import lombok.RequiredArgsConstructor; -@RequiredArgsConstructor @EventHandler(PlayerMove.class) public class PlayerMoveHandler extends AbstractEventHandler { - private final GlobalContext globalContext; + public PlayerMoveHandler(GlobalContext globalContext) { + super(globalContext); + } @Override public void handle(PlayerMove event, Client client) { diff --git a/server/src/main/java/cz/jzitnik/server/utils/PasswordGenerator.java b/server/src/main/java/cz/jzitnik/server/utils/PasswordGenerator.java index 2f4423f..17a2f55 100644 --- a/server/src/main/java/cz/jzitnik/server/utils/PasswordGenerator.java +++ b/server/src/main/java/cz/jzitnik/server/utils/PasswordGenerator.java @@ -3,7 +3,7 @@ package cz.jzitnik.server.utils; import java.security.SecureRandom; public class PasswordGenerator { - private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; private static final SecureRandom RANDOM = new SecureRandom(); public static String generatePassword(int length) { -- 2.49.1 From e3f5c12b434f1d77326d9e1f276656c1a7937e93 Mon Sep 17 00:00:00 2001 From: jzitnik-dev Date: Mon, 2 Feb 2026 21:06:46 +0100 Subject: [PATCH 09/14] feat: Player movement multiplayer --- .../connection/ConnectToAGameResponse.java | 10 +- .../messages/player/PlayerArrivalChange.java | 6 ++ .../socket/messages/player/PlayerJoined.java | 7 ++ .../socket/messages/player/PlayerMove.java | 2 +- .../messages/player/PlayerMovedInUrRoom.java | 1 + .../messages/player/PlayerRotation.java | 5 + .../events/handlers/FullRoomDrawHandler.java | 2 +- .../handlers/MouseMoveEventHandler.java | 4 +- .../handlers/PlayerMoveEventHandler.java | 26 +++-- .../events/handlers/RerenderPartHandler.java | 4 +- .../cz/jzitnik/client/game/GamePlayer.java | 10 ++ .../cz/jzitnik/client/game/GameState.java | 9 +- .../cz/jzitnik/client/game/OtherPlayer.java | 25 ++++- .../java/cz/jzitnik/client/game/Player.java | 6 +- .../mobs/tasks/MobFollowingPlayerTask.java | 2 +- .../cz/jzitnik/client/game/objects/Chest.java | 10 +- .../socket/events/ConnectGameHandler.java | 9 +- .../events/PlayerArrivalChangeHandler.java | 24 +++++ .../socket/events/PlayerJoinedHandler.java | 22 +++++ .../events/PlayerMovedInUrRoomHandler.java | 94 +++++++++++++++++++ .../jzitnik/client/utils/RerenderUtils.java | 43 +++++---- game/src/main/resources/setup/rooms.yaml | 56 +++++------ .../handlers/ConnectToAGameHandler.java | 21 ++++- .../events/handlers/CreateGameHandler.java | 2 +- .../events/handlers/PlayerMoveHandler.java | 2 +- .../java/cz/jzitnik/server/game/Player.java | 12 ++- 26 files changed, 322 insertions(+), 92 deletions(-) create mode 100644 common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerArrivalChange.java create mode 100644 common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerJoined.java create mode 100644 common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerRotation.java create mode 100644 game/src/main/java/cz/jzitnik/client/game/GamePlayer.java create mode 100644 game/src/main/java/cz/jzitnik/client/socket/events/PlayerArrivalChangeHandler.java create mode 100644 game/src/main/java/cz/jzitnik/client/socket/events/PlayerJoinedHandler.java create mode 100644 game/src/main/java/cz/jzitnik/client/socket/events/PlayerMovedInUrRoomHandler.java diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/game/connection/ConnectToAGameResponse.java b/common/src/main/java/cz/jzitnik/common/socket/messages/game/connection/ConnectToAGameResponse.java index d652d2a..da7d74a 100644 --- a/common/src/main/java/cz/jzitnik/common/socket/messages/game/connection/ConnectToAGameResponse.java +++ b/common/src/main/java/cz/jzitnik/common/socket/messages/game/connection/ConnectToAGameResponse.java @@ -3,18 +3,20 @@ package cz.jzitnik.common.socket.messages.game.connection; import cz.jzitnik.common.models.player.PlayerCreation; import cz.jzitnik.common.socket.SocketMessage; -public record ConnectToAGameResponse(ResponseType responseType, PlayerCreation playerCreation) implements SocketMessage { +import java.util.List; + +public record ConnectToAGameResponse(ResponseType responseType, PlayerCreation playerCreation, List existingPlayers) implements SocketMessage { private enum ResponseType { GAME_DOES_NOT_EXIST, SUCCESS } public ConnectToAGameResponse() { - this(ResponseType.GAME_DOES_NOT_EXIST, null); + this(ResponseType.GAME_DOES_NOT_EXIST, null, null); } - public ConnectToAGameResponse(PlayerCreation playerCreation) { - this(ResponseType.SUCCESS, playerCreation); + public ConnectToAGameResponse(PlayerCreation playerCreation, List existingPlayers) { + this(ResponseType.SUCCESS, playerCreation, existingPlayers); } public boolean success() { diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerArrivalChange.java b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerArrivalChange.java new file mode 100644 index 0000000..4891171 --- /dev/null +++ b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerArrivalChange.java @@ -0,0 +1,6 @@ +package cz.jzitnik.common.socket.messages.player; + +import cz.jzitnik.common.socket.SocketMessage; + +public record PlayerArrivalChange(int id, boolean arrived) implements SocketMessage { +} diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerJoined.java b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerJoined.java new file mode 100644 index 0000000..c60aa5b --- /dev/null +++ b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerJoined.java @@ -0,0 +1,7 @@ +package cz.jzitnik.common.socket.messages.player; + +import cz.jzitnik.common.models.player.PlayerCreation; +import cz.jzitnik.common.socket.SocketMessage; + +public record PlayerJoined(PlayerCreation playerCreation) implements SocketMessage { +} diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerMove.java b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerMove.java index 8df9a64..fdd52d9 100644 --- a/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerMove.java +++ b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerMove.java @@ -3,5 +3,5 @@ package cz.jzitnik.common.socket.messages.player; import cz.jzitnik.common.models.coordinates.RoomCords; import cz.jzitnik.common.socket.SocketMessage; -public record PlayerMove(RoomCords newCords) implements SocketMessage { +public record PlayerMove(RoomCords newCords, PlayerRotation playerRotation) implements SocketMessage { } diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerMovedInUrRoom.java b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerMovedInUrRoom.java index 3559743..0870792 100644 --- a/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerMovedInUrRoom.java +++ b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerMovedInUrRoom.java @@ -10,4 +10,5 @@ import lombok.Getter; public class PlayerMovedInUrRoom implements SocketMessage { private int playerId; private RoomCords cords; + private PlayerRotation playerRotation; } diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerRotation.java b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerRotation.java new file mode 100644 index 0000000..968721b --- /dev/null +++ b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerRotation.java @@ -0,0 +1,5 @@ +package cz.jzitnik.common.socket.messages.player; + +public enum PlayerRotation { + FRONT, BACK, LEFT, RIGHT +} diff --git a/game/src/main/java/cz/jzitnik/client/events/handlers/FullRoomDrawHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/FullRoomDrawHandler.java index e4c22cc..ca14c0e 100644 --- a/game/src/main/java/cz/jzitnik/client/events/handlers/FullRoomDrawHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/FullRoomDrawHandler.java @@ -75,7 +75,7 @@ public class FullRoomDrawHandler extends AbstractEventHandler { int startX = start.getX(); int startY = start.getY(); - RerenderUtils.rerenderPart(0, width - 1, 0, height - 1, startX, startY, currentRoom, room, player, playerTexture, screenBuffer, resourceManager, debugging); + RerenderUtils.rerenderPart(0, width - 1, 0, height - 1, startX, startY, currentRoom, room, player, screenBuffer, resourceManager, debugging, gameState.getOtherPlayers()); if (event.isFullRerender()) { globalIOHandlerRepository.renderAll(); } diff --git a/game/src/main/java/cz/jzitnik/client/events/handlers/MouseMoveEventHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/MouseMoveEventHandler.java index 06c5c3c..dd4b13f 100644 --- a/game/src/main/java/cz/jzitnik/client/events/handlers/MouseMoveEventHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/MouseMoveEventHandler.java @@ -177,10 +177,10 @@ public class MouseMoveEventHandler extends AbstractEventHandler currentRoom, room, player, - playerTexture, screenBuffer, resourceManager, - debugging + debugging, + gameState.getOtherPlayers() ); parts.add(new RerenderScreen.ScreenPart( diff --git a/game/src/main/java/cz/jzitnik/client/events/handlers/PlayerMoveEventHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/PlayerMoveEventHandler.java index ca0e2c5..7127b86 100644 --- a/game/src/main/java/cz/jzitnik/client/events/handlers/PlayerMoveEventHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/PlayerMoveEventHandler.java @@ -9,10 +9,7 @@ import cz.jzitnik.client.annotations.injectors.InjectState; import cz.jzitnik.client.config.Debugging; import cz.jzitnik.client.config.PlayerConfig; import cz.jzitnik.client.events.*; -import cz.jzitnik.client.game.GameRoom; -import cz.jzitnik.client.game.GameState; -import cz.jzitnik.client.game.Player; -import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.game.*; import cz.jzitnik.common.models.coordinates.RoomCords; import cz.jzitnik.client.states.RenderState; import cz.jzitnik.client.states.ScreenBuffer; @@ -24,6 +21,7 @@ import cz.jzitnik.client.utils.events.AbstractEventHandler; import cz.jzitnik.client.utils.events.Event; import cz.jzitnik.client.utils.events.EventManager; import cz.jzitnik.common.socket.messages.player.PlayerMove; +import cz.jzitnik.common.socket.messages.player.PlayerRotation; import lombok.extern.slf4j.Slf4j; import java.awt.image.BufferedImage; @@ -77,46 +75,46 @@ public class PlayerMoveEventHandler extends AbstractEventHandler { if (originalPlayerY <= 10) { if (originalPlayerX >= 80 && originalPlayerX <= 105) { - player.setPlayerRotation(Player.PlayerRotation.BACK); + player.setPlayerRotation(PlayerRotation.BACK); eventManager.emitEvent(new RoomChangeEvent(FullRoomDrawHandler.DoorPosition.TOP)); } return; } playerCords.updateCordsWithColliders(currentRoom.getColliders(), player.getPlayerCords().getX(), playerCords.getY() - moveStep, player.getCollider()); - player.setPlayerRotation(Player.PlayerRotation.BACK); + player.setPlayerRotation(PlayerRotation.BACK); } case 'a' -> { if (originalPlayerX <= 30) { if (originalPlayerY >= 35 && originalPlayerY <= 65) { - player.setPlayerRotation(Player.PlayerRotation.LEFT); + player.setPlayerRotation(PlayerRotation.LEFT); eventManager.emitEvent(new RoomChangeEvent(FullRoomDrawHandler.DoorPosition.LEFT)); } return; } playerCords.updateCordsWithColliders(currentRoom.getColliders(), player.getPlayerCords().getX() - moveStep, playerCords.getY(), player.getCollider()); - player.setPlayerRotation(Player.PlayerRotation.LEFT); + player.setPlayerRotation(PlayerRotation.LEFT); } case 's' -> { if (originalPlayerY >= 110) { if (originalPlayerX >= 75 && originalPlayerX <= 105) { - player.setPlayerRotation(Player.PlayerRotation.FRONT); + player.setPlayerRotation(PlayerRotation.FRONT); eventManager.emitEvent(new RoomChangeEvent(FullRoomDrawHandler.DoorPosition.BOTTOM)); } return; } playerCords.updateCordsWithColliders(currentRoom.getColliders(), player.getPlayerCords().getX(), playerCords.getY() + moveStep, player.getCollider()); - player.setPlayerRotation(Player.PlayerRotation.FRONT); + player.setPlayerRotation(PlayerRotation.FRONT); } case 'd' -> { if (originalPlayerX >= 155) { if (originalPlayerY >= 40 && originalPlayerY <= 60) { - player.setPlayerRotation(Player.PlayerRotation.RIGHT); + player.setPlayerRotation(PlayerRotation.RIGHT); eventManager.emitEvent(new RoomChangeEvent(FullRoomDrawHandler.DoorPosition.RIGHT)); } return; } playerCords.updateCordsWithColliders(currentRoom.getColliders(), player.getPlayerCords().getX() + moveStep, playerCords.getY(), player.getCollider()); - player.setPlayerRotation(Player.PlayerRotation.RIGHT); + player.setPlayerRotation(PlayerRotation.RIGHT); } } playerMovementState.setLastMovement(System.currentTimeMillis()); @@ -141,10 +139,10 @@ public class PlayerMoveEventHandler extends AbstractEventHandler { currentRoom, room, gameState.getPlayer(), - gameState.getPlayer().getTexture(resourceManager), screenBuffer, resourceManager, - debugging + debugging, + gameState.getOtherPlayers() ); eventManager.emitEvent( diff --git a/game/src/main/java/cz/jzitnik/client/game/GamePlayer.java b/game/src/main/java/cz/jzitnik/client/game/GamePlayer.java new file mode 100644 index 0000000..4e27c0a --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/game/GamePlayer.java @@ -0,0 +1,10 @@ +package cz.jzitnik.client.game; + +import cz.jzitnik.common.models.coordinates.RoomCords; + +import java.awt.image.BufferedImage; + +public interface GamePlayer { + RoomCords getPlayerCords(); + BufferedImage getTexture(ResourceManager resourceManager); +} diff --git a/game/src/main/java/cz/jzitnik/client/game/GameState.java b/game/src/main/java/cz/jzitnik/client/game/GameState.java index 13ecee1..1cfcf03 100644 --- a/game/src/main/java/cz/jzitnik/client/game/GameState.java +++ b/game/src/main/java/cz/jzitnik/client/game/GameState.java @@ -24,9 +24,16 @@ public class GameState { @Setter private Player player; - @Getter private final List otherPlayers = new ArrayList<>(); + public List getOtherPlayers() { + return otherPlayers.stream().filter(OtherPlayer::isVisible).toList(); + } + + public List getAllOtherPlayers() { + return otherPlayers; + } + @Getter @Setter private Interactable interacting; diff --git a/game/src/main/java/cz/jzitnik/client/game/OtherPlayer.java b/game/src/main/java/cz/jzitnik/client/game/OtherPlayer.java index e131693..d90b855 100644 --- a/game/src/main/java/cz/jzitnik/client/game/OtherPlayer.java +++ b/game/src/main/java/cz/jzitnik/client/game/OtherPlayer.java @@ -1,20 +1,41 @@ package cz.jzitnik.client.game; +import cz.jzitnik.client.game.mobs.HittableMob; import cz.jzitnik.common.models.coordinates.RoomCords; import cz.jzitnik.common.models.player.PlayerCreation; +import cz.jzitnik.common.socket.messages.player.PlayerRotation; import lombok.Getter; import lombok.Setter; +import java.awt.image.BufferedImage; + @Getter -public class OtherPlayer { +public class OtherPlayer implements GamePlayer { private final int id; private boolean hitAnimationOn = false; private final RoomCords playerCords; @Setter - private Player.PlayerRotation playerRotation = Player.PlayerRotation.FRONT; + private PlayerRotation playerRotation = PlayerRotation.FRONT; + @Setter + private boolean visible; public OtherPlayer(PlayerCreation playerCreation) { this.id = playerCreation.getId(); this.playerCords = playerCreation.getPlayerCords(); } + + public BufferedImage getTexture(ResourceManager resourceManager) { + BufferedImage resource = resourceManager.getResource(switch (playerRotation) { + case FRONT -> ResourceManager.Resource.PLAYER_FRONT; + case BACK -> ResourceManager.Resource.PLAYER_BACK; + case LEFT -> ResourceManager.Resource.PLAYER_LEFT; + case RIGHT -> ResourceManager.Resource.PLAYER_RIGHT; + }); + + if (hitAnimationOn) { + return HittableMob.applyRedFactor(resource); + } + + return resource; + } } diff --git a/game/src/main/java/cz/jzitnik/client/game/Player.java b/game/src/main/java/cz/jzitnik/client/game/Player.java index b2c15b8..5f01c25 100644 --- a/game/src/main/java/cz/jzitnik/client/game/Player.java +++ b/game/src/main/java/cz/jzitnik/client/game/Player.java @@ -11,6 +11,7 @@ import cz.jzitnik.client.utils.DependencyManager; import cz.jzitnik.client.utils.events.Event; import cz.jzitnik.client.utils.events.EventManager; import cz.jzitnik.common.models.player.PlayerCreation; +import cz.jzitnik.common.socket.messages.player.PlayerRotation; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; @@ -23,7 +24,7 @@ import java.util.concurrent.TimeUnit; @Getter @Slf4j -public class Player { +public class Player implements GamePlayer { private final int id; public static final int MAX_STAMINA = 20; public static final int MAX_HEALTH = 30; @@ -155,7 +156,4 @@ public class Player { }, delayMs, TimeUnit.MILLISECONDS); } - public enum PlayerRotation { - FRONT, BACK, LEFT, RIGHT - } } diff --git a/game/src/main/java/cz/jzitnik/client/game/mobs/tasks/MobFollowingPlayerTask.java b/game/src/main/java/cz/jzitnik/client/game/mobs/tasks/MobFollowingPlayerTask.java index 1bced57..0a0b43d 100644 --- a/game/src/main/java/cz/jzitnik/client/game/mobs/tasks/MobFollowingPlayerTask.java +++ b/game/src/main/java/cz/jzitnik/client/game/mobs/tasks/MobFollowingPlayerTask.java @@ -96,7 +96,7 @@ public class MobFollowingPlayerTask extends MobRoomTask { Player player = gameState.getPlayer(); BufferedImage playerTexture = player.getTexture(resourceManager); - RerenderUtils.rerenderPart(forStartX, forEndX, forStartY, forEndY, startX, startY, gameState.getCurrentRoom(), room, player, playerTexture, screenBuffer, resourceManager, debugging); + RerenderUtils.rerenderPart(forStartX, forEndX, forStartY, forEndY, startX, startY, gameState.getCurrentRoom(), room, player, screenBuffer, resourceManager, debugging, gameState.getOtherPlayers()); eventManager.emitEvent(new Event[]{ new MouseMoveEvent(null), diff --git a/game/src/main/java/cz/jzitnik/client/game/objects/Chest.java b/game/src/main/java/cz/jzitnik/client/game/objects/Chest.java index f3d31de..3a08570 100644 --- a/game/src/main/java/cz/jzitnik/client/game/objects/Chest.java +++ b/game/src/main/java/cz/jzitnik/client/game/objects/Chest.java @@ -101,7 +101,6 @@ public final class Chest extends GameObject implements UIClickHandler { Player player = gameState.getPlayer(); BufferedImage roomTexture = resourceManager.getResource(currentRoom.getTexture()); - BufferedImage playerTexture = player.getTexture(resourceManager); BufferedImage chestTexture = getTexture(); var buffer = screenBuffer.getRenderedBuffer(); @@ -141,7 +140,7 @@ public final class Chest extends GameObject implements UIClickHandler { renderMaxX = Math.max(renderMaxX, prevDisplayStartX + prevWidth); clearPreviousUI( - currentRoom, roomTexture, player, playerTexture, + currentRoom, roomTexture, player, resourceManager, buffer, overrideBuffer, start, guiStartY, prevGuiStartX, @@ -171,7 +170,7 @@ public final class Chest extends GameObject implements UIClickHandler { GameRoom room, BufferedImage roomTexture, Player player, - BufferedImage playerTexture, + ResourceManager resourceManager, Pixel[][] buffer, Pixel[][] overrideBuffer, RoomCords start, @@ -188,10 +187,11 @@ public final class Chest extends GameObject implements UIClickHandler { null, new HashSet<>(), player, - playerTexture, + resourceManager, x, y, - debugging + debugging, + gameState.getOtherPlayers() ).pixel(); buffer[y + start.getY()][x + start.getX()] = pixelToColored(pixel); diff --git a/game/src/main/java/cz/jzitnik/client/socket/events/ConnectGameHandler.java b/game/src/main/java/cz/jzitnik/client/socket/events/ConnectGameHandler.java index 597d761..37a1343 100644 --- a/game/src/main/java/cz/jzitnik/client/socket/events/ConnectGameHandler.java +++ b/game/src/main/java/cz/jzitnik/client/socket/events/ConnectGameHandler.java @@ -3,10 +3,12 @@ package cz.jzitnik.client.socket.events; import cz.jzitnik.client.annotations.SocketEventHandler; import cz.jzitnik.client.annotations.injectors.InjectDependency; import cz.jzitnik.client.annotations.injectors.InjectState; -import cz.jzitnik.client.events.FullRoomDraw; +import cz.jzitnik.client.events.TerminalResizeEvent; import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.OtherPlayer; import cz.jzitnik.client.game.Player; import cz.jzitnik.client.socket.AbstractSocketEventHandler; +import cz.jzitnik.client.states.TerminalState; import cz.jzitnik.client.utils.events.EventManager; import cz.jzitnik.common.socket.messages.game.connection.ConnectToAGameResponse; import lombok.extern.slf4j.Slf4j; @@ -18,6 +20,8 @@ public class ConnectGameHandler extends AbstractSocketEventHandler { + @InjectState + private GameState gameState; + + @Override + public void handle(PlayerArrivalChange event) { + var allPlayers = gameState.getAllOtherPlayers(); + for (OtherPlayer player : allPlayers) { + if (player.getId() == event.id()) { + player.setVisible(event.arrived()); + } + } + } +} diff --git a/game/src/main/java/cz/jzitnik/client/socket/events/PlayerJoinedHandler.java b/game/src/main/java/cz/jzitnik/client/socket/events/PlayerJoinedHandler.java new file mode 100644 index 0000000..f01d126 --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/socket/events/PlayerJoinedHandler.java @@ -0,0 +1,22 @@ +package cz.jzitnik.client.socket.events; + +import cz.jzitnik.client.annotations.SocketEventHandler; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.OtherPlayer; +import cz.jzitnik.client.socket.AbstractSocketEventHandler; +import cz.jzitnik.common.socket.messages.player.PlayerJoined; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@SocketEventHandler(PlayerJoined.class) +public class PlayerJoinedHandler extends AbstractSocketEventHandler { + @InjectState + private GameState gameState; + + @Override + public void handle(PlayerJoined event) { + log.debug("Player joined: {}", event.playerCreation().getId()); + gameState.getAllOtherPlayers().add(new OtherPlayer(event.playerCreation())); + } +} diff --git a/game/src/main/java/cz/jzitnik/client/socket/events/PlayerMovedInUrRoomHandler.java b/game/src/main/java/cz/jzitnik/client/socket/events/PlayerMovedInUrRoomHandler.java new file mode 100644 index 0000000..84a15a6 --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/socket/events/PlayerMovedInUrRoomHandler.java @@ -0,0 +1,94 @@ +package cz.jzitnik.client.socket.events; + +import com.googlecode.lanterna.TerminalPosition; +import cz.jzitnik.client.annotations.SocketEventHandler; +import cz.jzitnik.client.annotations.injectors.InjectConfig; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.config.Debugging; +import cz.jzitnik.client.events.MouseMoveEvent; +import cz.jzitnik.client.events.RerenderScreen; +import cz.jzitnik.client.game.GameRoom; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.OtherPlayer; +import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.socket.AbstractSocketEventHandler; +import cz.jzitnik.client.states.ScreenBuffer; +import cz.jzitnik.client.states.TerminalState; +import cz.jzitnik.client.ui.Stats; +import cz.jzitnik.client.utils.RerenderUtils; +import cz.jzitnik.client.utils.events.Event; +import cz.jzitnik.client.utils.events.EventManager; +import cz.jzitnik.common.socket.messages.player.PlayerMovedInUrRoom; +import lombok.extern.slf4j.Slf4j; + +import java.awt.image.BufferedImage; + +@Slf4j +@SocketEventHandler(PlayerMovedInUrRoom.class) +public class PlayerMovedInUrRoomHandler extends AbstractSocketEventHandler { + @InjectState + private GameState gameState; + + @InjectDependency + private EventManager eventManager; + + @InjectDependency + private ResourceManager resourceManager; + + @InjectState + private ScreenBuffer screenBuffer; + + @InjectConfig + private Debugging debugging; + + @InjectState + private TerminalState terminalState; + + @Override + public void handle(PlayerMovedInUrRoom event) { + log.debug("Player moved: {}", event.getPlayerId()); + OtherPlayer otherPlayer = gameState.getAllOtherPlayers().stream().filter(otherPlayer1 -> otherPlayer1.getId() == event.getPlayerId()).findFirst().get(); + otherPlayer.setPlayerRotation(event.getPlayerRotation()); + + var oldCords = otherPlayer.getPlayerCords(); + var newCords = event.getCords(); + + GameRoom currentRoom = gameState.getCurrentRoom(); + BufferedImage playerTexture = otherPlayer.getTexture(resourceManager); + BufferedImage room = resourceManager.getResource(currentRoom.getTexture()); + int originalPlayerX = oldCords.getX(); + int originalPlayerY = oldCords.getY(); + int newPlayerX = newCords.getX(); + int newPlayerY = newCords.getY(); + + int forStartX = Math.min(originalPlayerX, newPlayerX); + int forStartY = Math.min(originalPlayerY, newPlayerY); + int forEndX = Math.max(originalPlayerX, newPlayerX) + playerTexture.getWidth(); + int forEndY = Math.max(originalPlayerY, newPlayerY) + playerTexture.getHeight(); + + var start = RerenderUtils.getStart(room, terminalState.getTerminalScreen().getTerminalSize()); + int startX = start.getX(); + int startY = start.getY(); + + otherPlayer.getPlayerCords().updateCords(newCords); + + RerenderUtils.rerenderPart(forStartX, forEndX, forStartY, forEndY, startX, startY, currentRoom, room, gameState.getPlayer(), screenBuffer, resourceManager, debugging, gameState.getOtherPlayers()); + + eventManager.emitEvent(new Event[]{ + new MouseMoveEvent(null), + new RerenderScreen( + new RerenderScreen.ScreenPart[]{ + new RerenderScreen.ScreenPart( + new TerminalPosition(forStartX + startX, forStartY + startY), + new TerminalPosition(forEndX + 1 + startX, forEndY + startY) + ), + new RerenderScreen.ScreenPart( + new TerminalPosition(Stats.OFFSET_X, Stats.OFFSET_X), + new TerminalPosition(Stats.OFFSET_X + Stats.WIDTH, Stats.OFFSET_Y + Stats.HEIGHT) + ) + } + ) + }); + } +} diff --git a/game/src/main/java/cz/jzitnik/client/utils/RerenderUtils.java b/game/src/main/java/cz/jzitnik/client/utils/RerenderUtils.java index c00aeff..752d533 100644 --- a/game/src/main/java/cz/jzitnik/client/utils/RerenderUtils.java +++ b/game/src/main/java/cz/jzitnik/client/utils/RerenderUtils.java @@ -4,9 +4,7 @@ import com.googlecode.lanterna.TerminalSize; import com.googlecode.lanterna.TextColor; import cz.jzitnik.client.config.Debugging; import cz.jzitnik.client.events.handlers.FullRoomDrawHandler; -import cz.jzitnik.client.game.GameRoom; -import cz.jzitnik.client.game.Player; -import cz.jzitnik.client.game.ResourceManager; +import cz.jzitnik.client.game.*; import cz.jzitnik.client.game.mobs.Mob; import cz.jzitnik.client.game.objects.DroppedItem; import cz.jzitnik.client.game.objects.GameObject; @@ -19,8 +17,11 @@ import lombok.extern.slf4j.Slf4j; import java.awt.image.BufferedImage; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Slf4j public class RerenderUtils { @@ -36,14 +37,14 @@ public class RerenderUtils { return new RoomCords(x, y); } - public static void rerenderPart(int startX, int endX, int startY, int endY, int screenStartX, int screenStartY, GameRoom currentRoom, BufferedImage room, Player player, BufferedImage playerTexture, ScreenBuffer screenBuffer, ResourceManager resourceManager, Debugging debugging) { + public static void rerenderPart(int startX, int endX, int startY, int endY, int screenStartX, int screenStartY, GameRoom currentRoom, BufferedImage room, Player player, ScreenBuffer screenBuffer, ResourceManager resourceManager, Debugging debugging, List otherPlayers) { var buffer = screenBuffer.getRenderedBuffer(); var overrideBuffer = currentRoom.getOverrideBuffer(); BufferedImage doors = resourceManager.getResource(ResourceManager.Resource.DOORS); Set doorPositions = RerenderUtils.getDoorPositions(currentRoom); for (int x = startX; x <= endX; x++) { for (int y = startY; y <= endY; y++) { - PixelResult pixelResult = getPixel(currentRoom, room, doors, doorPositions, player, playerTexture, x, y, debugging); + PixelResult pixelResult = getPixel(currentRoom, room, doors, doorPositions, player, resourceManager, x, y, debugging, otherPlayers); int pixel = pixelResult.pixel(); int red = (pixel >> 16) & 0xff; @@ -63,26 +64,34 @@ public class RerenderUtils { public record PixelResult(int pixel, boolean isPlayer) { } - public static PixelResult getPixel(GameRoom currentRoom, BufferedImage room, BufferedImage doors, Set doorPositions, Player player, BufferedImage playerTexture, int x, int y, Debugging debugging) { + public static PixelResult getPixel(GameRoom currentRoom, BufferedImage room, BufferedImage doors, Set doorPositions, Player player, ResourceManager resourceManager, int x, int y, Debugging debugging, List visiblePlayer) { float factor = 1.5f; // brightness multiplier if (debugging.renderColliders() && currentRoom.getColliders().stream().anyMatch(collider -> collider.isWithin(new RoomCords(x, y)))) { return new PixelResult(0xFFFF0000, false); } - if (x >= player.getPlayerCords().getX() && x < player.getPlayerCords().getX() + playerTexture.getWidth() - 1 && y >= player.getPlayerCords().getY() && y <= player.getPlayerCords().getY() + playerTexture.getHeight() - 1) { - int relativeX = x - player.getPlayerCords().getX(); - int relativeY = y - player.getPlayerCords().getY(); - var playerCollider = player.getCollider(); + List players = Stream.concat( + Stream.of(player), + visiblePlayer.stream() + ).toList(); - if (debugging.renderPlayerCollider() && playerCollider.isWithin(new RoomCords(relativeX, relativeY))) { - return new PixelResult(0xFFFF0000, false); - } + var playerCollider = player.getCollider(); + for (GamePlayer player1 : players) { + var playerTexture = player1.getTexture(resourceManager); + if (x >= player1.getPlayerCords().getX() && x < player1.getPlayerCords().getX() + playerTexture.getWidth() - 1 && y >= player1.getPlayerCords().getY() && y <= player1.getPlayerCords().getY() + playerTexture.getHeight() - 1) { + int relativeX = x - player1.getPlayerCords().getX(); + int relativeY = y - player1.getPlayerCords().getY(); - int pixel = playerTexture.getRGB(relativeX, relativeY); - int alpha = (pixel >> 24) & 0xff; + if (debugging.renderPlayerCollider() && playerCollider.isWithin(new RoomCords(relativeX, relativeY))) { + return new PixelResult(0xFFFF0000, false); + } - if (alpha != 0) { - return new PixelResult(pixel, true); + int pixel = playerTexture.getRGB(relativeX, relativeY); + int alpha = (pixel >> 24) & 0xff; + + if (alpha != 0) { + return new PixelResult(pixel, true); + } } } diff --git a/game/src/main/resources/setup/rooms.yaml b/game/src/main/resources/setup/rooms.yaml index 8f3e353..723c351 100644 --- a/game/src/main/resources/setup/rooms.yaml +++ b/game/src/main/resources/setup/rooms.yaml @@ -1,33 +1,33 @@ - id: "spawn" texture: "ROOM1" - mobs: - - type: "hittable_drops" - texture: "PLAYER_FRONT" - cords: - x: 100 - y: 100 - collider: - start: - x: 0 - y: 52 - end: - x: 44 - y: 78 - health: 10 - itemsDrops: - - name: "Apple" - type: - name: "food" - addHealth: 1 - texture: "APPLE" - tasks: - - type: "blind_following_player" - speed: 1 - updateRateMs: 100 - - type: "attacking_player" - damage: 5 - reach: 15 - updateRateMs: 500 + #mobs: + # - type: "hittable_drops" + # texture: "PLAYER_FRONT" + # cords: + # x: 100 + # y: 100 + # collider: + # start: + # x: 0 + # y: 52 + # end: + # x: 44 + # y: 78 + # health: 10 + # itemsDrops: + # - name: "Apple" + # type: + # name: "food" + # addHealth: 1 + # texture: "APPLE" + # tasks: + # - type: "blind_following_player" + # speed: 1 + # updateRateMs: 100 + # - type: "attacking_player" + # damage: 5 + # reach: 15 + # updateRateMs: 500 west: "empty" east: "truhlaright" north: null diff --git a/server/src/main/java/cz/jzitnik/server/events/handlers/ConnectToAGameHandler.java b/server/src/main/java/cz/jzitnik/server/events/handlers/ConnectToAGameHandler.java index b0fc35e..ec47661 100644 --- a/server/src/main/java/cz/jzitnik/server/events/handlers/ConnectToAGameHandler.java +++ b/server/src/main/java/cz/jzitnik/server/events/handlers/ConnectToAGameHandler.java @@ -3,6 +3,8 @@ package cz.jzitnik.server.events.handlers; import cz.jzitnik.common.models.player.PlayerCreation; import cz.jzitnik.common.socket.messages.game.connection.ConnectToAGame; import cz.jzitnik.common.socket.messages.game.connection.ConnectToAGameResponse; +import cz.jzitnik.common.socket.messages.player.PlayerArrivalChange; +import cz.jzitnik.common.socket.messages.player.PlayerJoined; import cz.jzitnik.server.annotations.EventHandler; import cz.jzitnik.server.context.GlobalContext; import cz.jzitnik.server.events.AbstractEventHandler; @@ -35,12 +37,23 @@ public class ConnectToAGameHandler extends AbstractEventHandler ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory()); ObjectReader playerReader = objectMapper.readerFor(PlayerCreation.class); PlayerCreation player = playerReader.readValue(getClass().getClassLoader().getResourceAsStream("setup/player.yaml")); - client.setPlayer(new Player(game.getPlayers().size(), player.getPlayerCords())); + player.setId(game.getPlayers().size()); + client.setPlayer(new Player(player)); client.setGame(game); - client.getPlayer().setCurrentRoom(globalContext.getProperties().getProperty("rooms.default")); + String defaultRoomId = globalContext.getProperties().getProperty("rooms.default"); + client.getPlayer().setCurrentRoom(defaultRoomId); + + client.getSession().sendMessage(new ConnectToAGameResponse(player, game.getPlayers().stream().map(client1 -> client1.getPlayer().toPlayerCreation()).toList())); + + for (Client cl : game.getPlayers()) { + cl.getSession().sendMessage(new PlayerJoined(player)); + + if (cl.getPlayer().getCurrentRoom().equals(defaultRoomId)) { + cl.getSession().sendMessage(new PlayerArrivalChange(client.getPlayer().getId(), true)); + client.getSession().sendMessage(new PlayerArrivalChange(cl.getPlayer().getId(), true)); + } + } game.getPlayers().add(client); - - client.getSession().sendMessage(new ConnectToAGameResponse(player)); } } diff --git a/server/src/main/java/cz/jzitnik/server/events/handlers/CreateGameHandler.java b/server/src/main/java/cz/jzitnik/server/events/handlers/CreateGameHandler.java index 597a937..798a2c8 100644 --- a/server/src/main/java/cz/jzitnik/server/events/handlers/CreateGameHandler.java +++ b/server/src/main/java/cz/jzitnik/server/events/handlers/CreateGameHandler.java @@ -35,7 +35,7 @@ public class CreateGameHandler extends AbstractEventHandler { PlayerCreation player = playerReader.readValue(getClass().getClassLoader().getResourceAsStream("setup/player.yaml")); player.setId(id); - client.setPlayer(new Player(id, player.getPlayerCords())); + client.setPlayer(new Player(player)); CreateGameResponse gameResponse = new CreateGameResponse(pass, player); Game game = new Game( diff --git a/server/src/main/java/cz/jzitnik/server/events/handlers/PlayerMoveHandler.java b/server/src/main/java/cz/jzitnik/server/events/handlers/PlayerMoveHandler.java index 816901c..4c8868b 100644 --- a/server/src/main/java/cz/jzitnik/server/events/handlers/PlayerMoveHandler.java +++ b/server/src/main/java/cz/jzitnik/server/events/handlers/PlayerMoveHandler.java @@ -19,7 +19,7 @@ public class PlayerMoveHandler extends AbstractEventHandler { for (Client player : client.getGame().getPlayers()) { if (player.getPlayer().getCurrentRoom().equals(client.getPlayer().getCurrentRoom()) && player.getPlayer().getId() != client.getPlayer().getId()) { - player.getSession().sendMessage(new PlayerMovedInUrRoom(client.getPlayer().getId(), event.newCords())); + player.getSession().sendMessage(new PlayerMovedInUrRoom(client.getPlayer().getId(), event.newCords(), event.playerRotation())); } } } diff --git a/server/src/main/java/cz/jzitnik/server/game/Player.java b/server/src/main/java/cz/jzitnik/server/game/Player.java index 8fd519d..88b932e 100644 --- a/server/src/main/java/cz/jzitnik/server/game/Player.java +++ b/server/src/main/java/cz/jzitnik/server/game/Player.java @@ -1,15 +1,23 @@ package cz.jzitnik.server.game; import cz.jzitnik.common.models.coordinates.RoomCords; +import cz.jzitnik.common.models.player.PlayerCreation; import lombok.Getter; -import lombok.RequiredArgsConstructor; import lombok.Setter; @Getter -@RequiredArgsConstructor public class Player { private final int id; private final RoomCords cords; @Setter private String currentRoom; + + public Player(PlayerCreation creation) { + id = creation.getId(); + cords = creation.getPlayerCords(); + } + + public PlayerCreation toPlayerCreation() { + return new PlayerCreation(cords, null); + } } -- 2.49.1 From 9ca3a8d34c2f37ec1e00b705c1c48bb8c64ce95f Mon Sep 17 00:00:00 2001 From: jzitnik-dev Date: Mon, 2 Feb 2026 21:59:55 +0100 Subject: [PATCH 10/14] feat: Multiplayer player moving between rooms --- .../messages/player/PlayerArrivalChange.java | 4 +- .../socket/messages/room/MovePlayerRoom.java | 8 ++ .../messages/room/MovePlayerRoomResponse.java | 8 ++ .../handlers/RoomChangeEventHandler.java | 11 +-- .../events/MovePlayerRoomResponseHandler.java | 29 ++++++++ .../events/PlayerArrivalChangeHandler.java | 74 +++++++++++++++++-- .../handlers/ConnectToAGameHandler.java | 4 +- .../handlers/MovePlayerRoomHandler.java | 39 ++++++++++ 8 files changed, 163 insertions(+), 14 deletions(-) create mode 100644 common/src/main/java/cz/jzitnik/common/socket/messages/room/MovePlayerRoom.java create mode 100644 common/src/main/java/cz/jzitnik/common/socket/messages/room/MovePlayerRoomResponse.java create mode 100644 game/src/main/java/cz/jzitnik/client/socket/events/MovePlayerRoomResponseHandler.java create mode 100644 server/src/main/java/cz/jzitnik/server/events/handlers/MovePlayerRoomHandler.java diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerArrivalChange.java b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerArrivalChange.java index 4891171..e16aa43 100644 --- a/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerArrivalChange.java +++ b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerArrivalChange.java @@ -1,6 +1,8 @@ package cz.jzitnik.common.socket.messages.player; +import cz.jzitnik.common.models.coordinates.RoomCords; import cz.jzitnik.common.socket.SocketMessage; -public record PlayerArrivalChange(int id, boolean arrived) implements SocketMessage { +public record PlayerArrivalChange(int id, RoomCords playerCords, boolean arrived, + boolean rerender) implements SocketMessage { } diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/room/MovePlayerRoom.java b/common/src/main/java/cz/jzitnik/common/socket/messages/room/MovePlayerRoom.java new file mode 100644 index 0000000..631fd6c --- /dev/null +++ b/common/src/main/java/cz/jzitnik/common/socket/messages/room/MovePlayerRoom.java @@ -0,0 +1,8 @@ +package cz.jzitnik.common.socket.messages.room; + +import cz.jzitnik.common.models.coordinates.RoomCords; +import cz.jzitnik.common.socket.SocketMessage; + +public record MovePlayerRoom(String newRoomId, RoomCords oldCords, RoomCords newCords) implements SocketMessage { + +} diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/room/MovePlayerRoomResponse.java b/common/src/main/java/cz/jzitnik/common/socket/messages/room/MovePlayerRoomResponse.java new file mode 100644 index 0000000..789cb1f --- /dev/null +++ b/common/src/main/java/cz/jzitnik/common/socket/messages/room/MovePlayerRoomResponse.java @@ -0,0 +1,8 @@ +package cz.jzitnik.common.socket.messages.room; + +import cz.jzitnik.common.socket.SocketMessage; + +import java.util.Set; + +public record MovePlayerRoomResponse(Set players) implements SocketMessage { +} diff --git a/game/src/main/java/cz/jzitnik/client/events/handlers/RoomChangeEventHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/RoomChangeEventHandler.java index 0f12a8d..34a762b 100644 --- a/game/src/main/java/cz/jzitnik/client/events/handlers/RoomChangeEventHandler.java +++ b/game/src/main/java/cz/jzitnik/client/events/handlers/RoomChangeEventHandler.java @@ -3,14 +3,15 @@ package cz.jzitnik.client.events.handlers; import cz.jzitnik.client.annotations.EventHandler; import cz.jzitnik.client.annotations.injectors.InjectDependency; import cz.jzitnik.client.annotations.injectors.InjectState; -import cz.jzitnik.client.events.FullRoomDraw; import cz.jzitnik.client.events.RoomChangeEvent; +import cz.jzitnik.client.events.SendSocketMessageEvent; import cz.jzitnik.client.game.GameRoom; import cz.jzitnik.client.game.GameState; import cz.jzitnik.common.models.coordinates.RoomCords; import cz.jzitnik.client.utils.events.AbstractEventHandler; import cz.jzitnik.client.utils.events.EventManager; import cz.jzitnik.client.utils.roomtasks.RoomTaskScheduler; +import cz.jzitnik.common.socket.messages.room.MovePlayerRoom; import lombok.extern.slf4j.Slf4j; import java.util.concurrent.Executors; @@ -31,6 +32,7 @@ public class RoomChangeEventHandler extends AbstractEventHandler currentRoom.getLeft(); @@ -50,10 +52,9 @@ public class RoomChangeEventHandler extends AbstractEventHandler playerCords.updateCords(playerCords.getX(), 10); } + eventManager.emitEvent(new SendSocketMessageEvent(new MovePlayerRoom(newRoom.getId(), oldCords, playerCords))); + gameState.setCurrentRoom(newRoom); - scheduler.schedule(() -> { - roomTaskScheduler.setupNewSchedulers(newRoom); - }, 200, TimeUnit.MILLISECONDS); - eventManager.emitEvent(new FullRoomDraw()); + scheduler.schedule(() -> roomTaskScheduler.setupNewSchedulers(newRoom), 200, TimeUnit.MILLISECONDS); } } diff --git a/game/src/main/java/cz/jzitnik/client/socket/events/MovePlayerRoomResponseHandler.java b/game/src/main/java/cz/jzitnik/client/socket/events/MovePlayerRoomResponseHandler.java new file mode 100644 index 0000000..dff01dc --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/socket/events/MovePlayerRoomResponseHandler.java @@ -0,0 +1,29 @@ +package cz.jzitnik.client.socket.events; + +import cz.jzitnik.client.annotations.SocketEventHandler; +import cz.jzitnik.client.annotations.injectors.InjectDependency; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.events.FullRoomDraw; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.OtherPlayer; +import cz.jzitnik.client.socket.AbstractSocketEventHandler; +import cz.jzitnik.client.utils.events.EventManager; +import cz.jzitnik.common.socket.messages.room.MovePlayerRoomResponse; + +@SocketEventHandler(MovePlayerRoomResponse.class) +public class MovePlayerRoomResponseHandler extends AbstractSocketEventHandler { + @InjectDependency + private EventManager eventManager; + + @InjectState + private GameState gameState; + + @Override + public void handle(MovePlayerRoomResponse event) { + for (OtherPlayer player : gameState.getAllOtherPlayers()) { + player.setVisible(event.players().contains(player.getId())); + } + + eventManager.emitEvent(new FullRoomDraw()); + } +} diff --git a/game/src/main/java/cz/jzitnik/client/socket/events/PlayerArrivalChangeHandler.java b/game/src/main/java/cz/jzitnik/client/socket/events/PlayerArrivalChangeHandler.java index 0f2ada6..9c2fe33 100644 --- a/game/src/main/java/cz/jzitnik/client/socket/events/PlayerArrivalChangeHandler.java +++ b/game/src/main/java/cz/jzitnik/client/socket/events/PlayerArrivalChangeHandler.java @@ -1,24 +1,86 @@ package cz.jzitnik.client.socket.events; +import com.googlecode.lanterna.TerminalPosition; import cz.jzitnik.client.annotations.SocketEventHandler; +import cz.jzitnik.client.annotations.injectors.InjectConfig; +import cz.jzitnik.client.annotations.injectors.InjectDependency; import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.config.Debugging; +import cz.jzitnik.client.events.MouseMoveEvent; +import cz.jzitnik.client.events.RerenderScreen; +import cz.jzitnik.client.game.GameRoom; import cz.jzitnik.client.game.GameState; import cz.jzitnik.client.game.OtherPlayer; +import cz.jzitnik.client.game.ResourceManager; import cz.jzitnik.client.socket.AbstractSocketEventHandler; +import cz.jzitnik.client.states.ScreenBuffer; +import cz.jzitnik.client.states.TerminalState; +import cz.jzitnik.client.ui.Stats; +import cz.jzitnik.client.utils.RerenderUtils; +import cz.jzitnik.client.utils.events.Event; +import cz.jzitnik.client.utils.events.EventManager; import cz.jzitnik.common.socket.messages.player.PlayerArrivalChange; +import lombok.extern.slf4j.Slf4j; +import java.awt.image.BufferedImage; + +@Slf4j @SocketEventHandler(PlayerArrivalChange.class) public class PlayerArrivalChangeHandler extends AbstractSocketEventHandler { @InjectState private GameState gameState; + @InjectDependency + private ResourceManager resourceManager; + + @InjectDependency + private EventManager eventManager; + + @InjectState + private TerminalState terminalState; + + @InjectState + private ScreenBuffer screenBuffer; + + @InjectConfig + private Debugging debugging; + @Override public void handle(PlayerArrivalChange event) { - var allPlayers = gameState.getAllOtherPlayers(); - for (OtherPlayer player : allPlayers) { - if (player.getId() == event.id()) { - player.setVisible(event.arrived()); - } - } + log.debug("Player appear change: {}", event.id()); + OtherPlayer otherPlayer = gameState.getAllOtherPlayers().stream().filter(otherPlayer1 -> otherPlayer1.getId() == event.id()).findFirst().get(); + otherPlayer.setVisible(event.arrived()); + otherPlayer.getPlayerCords().updateCords(event.playerCords()); + + GameRoom currentRoom = gameState.getCurrentRoom(); + BufferedImage playerTexture = otherPlayer.getTexture(resourceManager); + BufferedImage room = resourceManager.getResource(currentRoom.getTexture()); + + int forStartX = event.playerCords().getX(); + int forStartY = event.playerCords().getY(); + int forEndX = forStartX + playerTexture.getWidth(); + int forEndY = forStartY + playerTexture.getHeight(); + + var start = RerenderUtils.getStart(room, terminalState.getTerminalScreen().getTerminalSize()); + int startX = start.getX(); + int startY = start.getY(); + + RerenderUtils.rerenderPart(forStartX, forEndX, forStartY, forEndY, startX, startY, currentRoom, room, gameState.getPlayer(), screenBuffer, resourceManager, debugging, gameState.getOtherPlayers()); + + eventManager.emitEvent(new Event[]{ + new MouseMoveEvent(null), + new RerenderScreen( + new RerenderScreen.ScreenPart[]{ + new RerenderScreen.ScreenPart( + new TerminalPosition(forStartX + startX, forStartY + startY), + new TerminalPosition(forEndX + 1 + startX, forEndY + startY) + ), + new RerenderScreen.ScreenPart( + new TerminalPosition(Stats.OFFSET_X, Stats.OFFSET_X), + new TerminalPosition(Stats.OFFSET_X + Stats.WIDTH, Stats.OFFSET_Y + Stats.HEIGHT) + ) + } + ) + }); } } diff --git a/server/src/main/java/cz/jzitnik/server/events/handlers/ConnectToAGameHandler.java b/server/src/main/java/cz/jzitnik/server/events/handlers/ConnectToAGameHandler.java index ec47661..d72d311 100644 --- a/server/src/main/java/cz/jzitnik/server/events/handlers/ConnectToAGameHandler.java +++ b/server/src/main/java/cz/jzitnik/server/events/handlers/ConnectToAGameHandler.java @@ -49,8 +49,8 @@ public class ConnectToAGameHandler extends AbstractEventHandler cl.getSession().sendMessage(new PlayerJoined(player)); if (cl.getPlayer().getCurrentRoom().equals(defaultRoomId)) { - cl.getSession().sendMessage(new PlayerArrivalChange(client.getPlayer().getId(), true)); - client.getSession().sendMessage(new PlayerArrivalChange(cl.getPlayer().getId(), true)); + cl.getSession().sendMessage(new PlayerArrivalChange(client.getPlayer().getId(), player.getPlayerCords(), true, true)); + client.getSession().sendMessage(new PlayerArrivalChange(cl.getPlayer().getId(), cl.getPlayer().getCords(), true, false)); } } diff --git a/server/src/main/java/cz/jzitnik/server/events/handlers/MovePlayerRoomHandler.java b/server/src/main/java/cz/jzitnik/server/events/handlers/MovePlayerRoomHandler.java new file mode 100644 index 0000000..604854e --- /dev/null +++ b/server/src/main/java/cz/jzitnik/server/events/handlers/MovePlayerRoomHandler.java @@ -0,0 +1,39 @@ +package cz.jzitnik.server.events.handlers; + +import cz.jzitnik.common.socket.messages.player.PlayerArrivalChange; +import cz.jzitnik.common.socket.messages.room.MovePlayerRoom; +import cz.jzitnik.common.socket.messages.room.MovePlayerRoomResponse; +import cz.jzitnik.server.annotations.EventHandler; +import cz.jzitnik.server.context.GlobalContext; +import cz.jzitnik.server.events.AbstractEventHandler; +import cz.jzitnik.server.game.Client; +import lombok.extern.slf4j.Slf4j; + +import java.util.stream.Collectors; + +@Slf4j +@EventHandler(MovePlayerRoom.class) +public class MovePlayerRoomHandler extends AbstractEventHandler { + public MovePlayerRoomHandler(GlobalContext globalContext) { + super(globalContext); + } + + @Override + public void handle(MovePlayerRoom event, Client client) { + String oldRoomId = client.getPlayer().getCurrentRoom(); + + client.getSession().sendMessage(new MovePlayerRoomResponse(client.getGame().getPlayers().stream().filter(player -> player.getPlayer().getCurrentRoom().equals(event.newRoomId())).map(client1 -> client1.getPlayer().getId()).collect(Collectors.toSet()))); + client.getPlayer().setCurrentRoom(event.newRoomId()); + + for (Client player : client.getGame().getPlayers()) { + if (player.getPlayer().getId() != client.getPlayer().getId()) { + if (player.getPlayer().getCurrentRoom().equals(oldRoomId)) { + log.debug("{}", event.oldCords()); + player.getSession().sendMessage(new PlayerArrivalChange(client.getPlayer().getId(), event.oldCords(), false, true)); + } else if (player.getPlayer().getCurrentRoom().equals(event.newRoomId())) { + player.getSession().sendMessage(new PlayerArrivalChange(client.getPlayer().getId(), event.newCords(), true, true)); + } + } + } + } +} -- 2.49.1 From 1f54e933adb642e8da8c5fdcdf8703e803862f10 Mon Sep 17 00:00:00 2001 From: jzitnik-dev Date: Mon, 2 Feb 2026 22:04:54 +0100 Subject: [PATCH 11/14] chore: Remove todo --- .../cz/jzitnik/server/events/handlers/CreateGameHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/src/main/java/cz/jzitnik/server/events/handlers/CreateGameHandler.java b/server/src/main/java/cz/jzitnik/server/events/handlers/CreateGameHandler.java index 798a2c8..43b4d60 100644 --- a/server/src/main/java/cz/jzitnik/server/events/handlers/CreateGameHandler.java +++ b/server/src/main/java/cz/jzitnik/server/events/handlers/CreateGameHandler.java @@ -28,7 +28,7 @@ public class CreateGameHandler extends AbstractEventHandler { @Override public void handle(CreateGame event, Client client) { ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory()); - String pass = PasswordGenerator.generatePassword(Config.WORLD_PASSWORD_LENGTH); // TODO: Generate + String pass = PasswordGenerator.generatePassword(Config.WORLD_PASSWORD_LENGTH); int id = 0; // Owners id is always 0 ObjectReader playerReader = objectMapper.readerFor(PlayerCreation.class); -- 2.49.1 From f6de75afd97db3ee2e22d6db3686a1e357fc36a4 Mon Sep 17 00:00:00 2001 From: jzitnik-dev Date: Tue, 3 Feb 2026 09:54:23 +0100 Subject: [PATCH 12/14] feat: Store player rotation --- .../messages/room/MovePlayerRoomResponse.java | 16 +++++++++++++++- .../events/MovePlayerRoomResponseHandler.java | 11 ++++++++++- .../events/handlers/MovePlayerRoomHandler.java | 13 ++++++++++++- .../events/handlers/PlayerMoveHandler.java | 1 + .../main/java/cz/jzitnik/server/game/Player.java | 4 ++++ 5 files changed, 42 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/room/MovePlayerRoomResponse.java b/common/src/main/java/cz/jzitnik/common/socket/messages/room/MovePlayerRoomResponse.java index 789cb1f..1d283d2 100644 --- a/common/src/main/java/cz/jzitnik/common/socket/messages/room/MovePlayerRoomResponse.java +++ b/common/src/main/java/cz/jzitnik/common/socket/messages/room/MovePlayerRoomResponse.java @@ -1,8 +1,22 @@ package cz.jzitnik.common.socket.messages.room; +import cz.jzitnik.common.models.coordinates.RoomCords; import cz.jzitnik.common.socket.SocketMessage; +import cz.jzitnik.common.socket.messages.player.PlayerRotation; +import java.io.Serializable; +import java.util.Optional; import java.util.Set; +import java.util.stream.Collectors; -public record MovePlayerRoomResponse(Set players) implements SocketMessage { +public record MovePlayerRoomResponse(Set players) implements SocketMessage { + public record Registry(int id, RoomCords cords, PlayerRotation playerRotation) implements Serializable {} + + public Optional getById(int id) { + return players.stream().filter(registry -> registry.id == id).findFirst(); + } + + public Set getIds() { + return players.stream().map(Registry::id).collect(Collectors.toSet()); + } } diff --git a/game/src/main/java/cz/jzitnik/client/socket/events/MovePlayerRoomResponseHandler.java b/game/src/main/java/cz/jzitnik/client/socket/events/MovePlayerRoomResponseHandler.java index dff01dc..2b9f166 100644 --- a/game/src/main/java/cz/jzitnik/client/socket/events/MovePlayerRoomResponseHandler.java +++ b/game/src/main/java/cz/jzitnik/client/socket/events/MovePlayerRoomResponseHandler.java @@ -10,6 +10,8 @@ import cz.jzitnik.client.socket.AbstractSocketEventHandler; import cz.jzitnik.client.utils.events.EventManager; import cz.jzitnik.common.socket.messages.room.MovePlayerRoomResponse; +import java.util.Set; + @SocketEventHandler(MovePlayerRoomResponse.class) public class MovePlayerRoomResponseHandler extends AbstractSocketEventHandler { @InjectDependency @@ -20,8 +22,15 @@ public class MovePlayerRoomResponseHandler extends AbstractSocketEventHandler ids = event.getIds(); + for (OtherPlayer player : gameState.getAllOtherPlayers()) { - player.setVisible(event.players().contains(player.getId())); + player.setVisible(ids.contains(player.getId())); + var playerRegistryOptional = event.getById(player.getId()); + if (player.isVisible() && playerRegistryOptional.isPresent()) { + player.getPlayerCords().updateCords(playerRegistryOptional.get().cords()); + player.setPlayerRotation(playerRegistryOptional.get().playerRotation()); + } } eventManager.emitEvent(new FullRoomDraw()); diff --git a/server/src/main/java/cz/jzitnik/server/events/handlers/MovePlayerRoomHandler.java b/server/src/main/java/cz/jzitnik/server/events/handlers/MovePlayerRoomHandler.java index 604854e..3dc6117 100644 --- a/server/src/main/java/cz/jzitnik/server/events/handlers/MovePlayerRoomHandler.java +++ b/server/src/main/java/cz/jzitnik/server/events/handlers/MovePlayerRoomHandler.java @@ -22,7 +22,18 @@ public class MovePlayerRoomHandler extends AbstractEventHandler public void handle(MovePlayerRoom event, Client client) { String oldRoomId = client.getPlayer().getCurrentRoom(); - client.getSession().sendMessage(new MovePlayerRoomResponse(client.getGame().getPlayers().stream().filter(player -> player.getPlayer().getCurrentRoom().equals(event.newRoomId())).map(client1 -> client1.getPlayer().getId()).collect(Collectors.toSet()))); + client.getSession().sendMessage(new MovePlayerRoomResponse( + client.getGame().getPlayers().stream().filter(player -> + player.getPlayer().getCurrentRoom().equals(event.newRoomId()) + ).map(client1 -> + new MovePlayerRoomResponse.Registry( + client1.getPlayer().getId(), + client1.getPlayer().getCords(), + client1.getPlayer().getPlayerRotation() + ) + ).collect(Collectors.toSet()) + )); + client.getPlayer().setCurrentRoom(event.newRoomId()); for (Client player : client.getGame().getPlayers()) { diff --git a/server/src/main/java/cz/jzitnik/server/events/handlers/PlayerMoveHandler.java b/server/src/main/java/cz/jzitnik/server/events/handlers/PlayerMoveHandler.java index 4c8868b..91ad4fc 100644 --- a/server/src/main/java/cz/jzitnik/server/events/handlers/PlayerMoveHandler.java +++ b/server/src/main/java/cz/jzitnik/server/events/handlers/PlayerMoveHandler.java @@ -16,6 +16,7 @@ public class PlayerMoveHandler extends AbstractEventHandler { @Override public void handle(PlayerMove event, Client client) { client.getPlayer().getCords().updateCords(event.newCords()); + client.getPlayer().setPlayerRotation(event.playerRotation()); for (Client player : client.getGame().getPlayers()) { if (player.getPlayer().getCurrentRoom().equals(client.getPlayer().getCurrentRoom()) && player.getPlayer().getId() != client.getPlayer().getId()) { diff --git a/server/src/main/java/cz/jzitnik/server/game/Player.java b/server/src/main/java/cz/jzitnik/server/game/Player.java index 88b932e..33dff31 100644 --- a/server/src/main/java/cz/jzitnik/server/game/Player.java +++ b/server/src/main/java/cz/jzitnik/server/game/Player.java @@ -2,6 +2,7 @@ package cz.jzitnik.server.game; import cz.jzitnik.common.models.coordinates.RoomCords; import cz.jzitnik.common.models.player.PlayerCreation; +import cz.jzitnik.common.socket.messages.player.PlayerRotation; import lombok.Getter; import lombok.Setter; @@ -10,11 +11,14 @@ public class Player { private final int id; private final RoomCords cords; @Setter + private PlayerRotation playerRotation; + @Setter private String currentRoom; public Player(PlayerCreation creation) { id = creation.getId(); cords = creation.getPlayerCords(); + playerRotation = PlayerRotation.FRONT; } public PlayerCreation toPlayerCreation() { -- 2.49.1 From faadc92dbc5cc05ea4906941cc52185f1dae4f18 Mon Sep 17 00:00:00 2001 From: jzitnik-dev Date: Tue, 3 Feb 2026 20:52:36 +0100 Subject: [PATCH 13/14] feat: Player disconnect handler --- .../messages/player/PlayerArrivalChange.java | 4 ++-- .../messages/player/PlayerDisconnected.java | 6 ++++++ .../socket/events/CreateGameHandler.java | 7 +++++-- .../events/PlayerArrivalChangeHandler.java | 1 + .../events/PlayerDisconnectedHandler.java | 18 ++++++++++++++++ .../handlers/ConnectToAGameHandler.java | 8 +++---- .../handlers/MovePlayerRoomHandler.java | 4 ++-- .../cz/jzitnik/server/socket/WebSocket.java | 21 ++++++++++++++++++- 8 files changed, 57 insertions(+), 12 deletions(-) create mode 100644 common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerDisconnected.java create mode 100644 game/src/main/java/cz/jzitnik/client/socket/events/PlayerDisconnectedHandler.java diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerArrivalChange.java b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerArrivalChange.java index e16aa43..d661795 100644 --- a/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerArrivalChange.java +++ b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerArrivalChange.java @@ -3,6 +3,6 @@ package cz.jzitnik.common.socket.messages.player; import cz.jzitnik.common.models.coordinates.RoomCords; import cz.jzitnik.common.socket.SocketMessage; -public record PlayerArrivalChange(int id, RoomCords playerCords, boolean arrived, - boolean rerender) implements SocketMessage { +public record PlayerArrivalChange(int id, RoomCords playerCords, PlayerRotation playerRotation, + boolean arrived, boolean rerender) implements SocketMessage { } diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerDisconnected.java b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerDisconnected.java new file mode 100644 index 0000000..85fad63 --- /dev/null +++ b/common/src/main/java/cz/jzitnik/common/socket/messages/player/PlayerDisconnected.java @@ -0,0 +1,6 @@ +package cz.jzitnik.common.socket.messages.player; + +import cz.jzitnik.common.socket.SocketMessage; + +public record PlayerDisconnected(int playerId) implements SocketMessage { +} diff --git a/game/src/main/java/cz/jzitnik/client/socket/events/CreateGameHandler.java b/game/src/main/java/cz/jzitnik/client/socket/events/CreateGameHandler.java index 4ba6b32..e36cd2b 100644 --- a/game/src/main/java/cz/jzitnik/client/socket/events/CreateGameHandler.java +++ b/game/src/main/java/cz/jzitnik/client/socket/events/CreateGameHandler.java @@ -3,10 +3,11 @@ package cz.jzitnik.client.socket.events; import cz.jzitnik.client.annotations.SocketEventHandler; import cz.jzitnik.client.annotations.injectors.InjectDependency; import cz.jzitnik.client.annotations.injectors.InjectState; -import cz.jzitnik.client.events.FullRoomDraw; +import cz.jzitnik.client.events.TerminalResizeEvent; import cz.jzitnik.client.game.GameState; import cz.jzitnik.client.game.Player; import cz.jzitnik.client.socket.AbstractSocketEventHandler; +import cz.jzitnik.client.states.TerminalState; import cz.jzitnik.client.utils.events.EventManager; import cz.jzitnik.common.socket.messages.game.creation.CreateGameResponse; import lombok.extern.slf4j.Slf4j; @@ -16,6 +17,8 @@ import lombok.extern.slf4j.Slf4j; public class CreateGameHandler extends AbstractSocketEventHandler { @InjectState private GameState gameState; + @InjectState + private TerminalState terminalState; @InjectDependency private EventManager eventManager; @@ -24,6 +27,6 @@ public class CreateGameHandler extends AbstractSocketEventHandler otherPlayer1.getId() == event.id()).findFirst().get(); otherPlayer.setVisible(event.arrived()); otherPlayer.getPlayerCords().updateCords(event.playerCords()); + otherPlayer.setPlayerRotation(event.playerRotation()); GameRoom currentRoom = gameState.getCurrentRoom(); BufferedImage playerTexture = otherPlayer.getTexture(resourceManager); diff --git a/game/src/main/java/cz/jzitnik/client/socket/events/PlayerDisconnectedHandler.java b/game/src/main/java/cz/jzitnik/client/socket/events/PlayerDisconnectedHandler.java new file mode 100644 index 0000000..bed6d39 --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/socket/events/PlayerDisconnectedHandler.java @@ -0,0 +1,18 @@ +package cz.jzitnik.client.socket.events; + +import cz.jzitnik.client.annotations.SocketEventHandler; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.socket.AbstractSocketEventHandler; +import cz.jzitnik.common.socket.messages.player.PlayerDisconnected; + +@SocketEventHandler(PlayerDisconnected.class) +public class PlayerDisconnectedHandler extends AbstractSocketEventHandler { + @InjectState + private GameState gameState; + + @Override + public void handle(PlayerDisconnected event) { + gameState.getAllOtherPlayers().removeIf(player -> player.getId() == event.playerId()); + } +} diff --git a/server/src/main/java/cz/jzitnik/server/events/handlers/ConnectToAGameHandler.java b/server/src/main/java/cz/jzitnik/server/events/handlers/ConnectToAGameHandler.java index d72d311..4884773 100644 --- a/server/src/main/java/cz/jzitnik/server/events/handlers/ConnectToAGameHandler.java +++ b/server/src/main/java/cz/jzitnik/server/events/handlers/ConnectToAGameHandler.java @@ -5,17 +5,16 @@ import cz.jzitnik.common.socket.messages.game.connection.ConnectToAGame; import cz.jzitnik.common.socket.messages.game.connection.ConnectToAGameResponse; import cz.jzitnik.common.socket.messages.player.PlayerArrivalChange; import cz.jzitnik.common.socket.messages.player.PlayerJoined; +import cz.jzitnik.common.socket.messages.player.PlayerRotation; import cz.jzitnik.server.annotations.EventHandler; import cz.jzitnik.server.context.GlobalContext; import cz.jzitnik.server.events.AbstractEventHandler; import cz.jzitnik.server.game.Client; import cz.jzitnik.server.game.Player; -import lombok.extern.slf4j.Slf4j; import tools.jackson.databind.ObjectMapper; import tools.jackson.databind.ObjectReader; import tools.jackson.dataformat.yaml.YAMLFactory; -@Slf4j @EventHandler(ConnectToAGame.class) public class ConnectToAGameHandler extends AbstractEventHandler { public ConnectToAGameHandler(GlobalContext globalContext) { @@ -24,7 +23,6 @@ public class ConnectToAGameHandler extends AbstractEventHandler @Override public void handle(ConnectToAGame event, Client client) { - log.debug("Pepa"); var gameOptional = globalContext.getGame(event.gamePass().toUpperCase()); if (gameOptional.isEmpty()) { @@ -49,8 +47,8 @@ public class ConnectToAGameHandler extends AbstractEventHandler cl.getSession().sendMessage(new PlayerJoined(player)); if (cl.getPlayer().getCurrentRoom().equals(defaultRoomId)) { - cl.getSession().sendMessage(new PlayerArrivalChange(client.getPlayer().getId(), player.getPlayerCords(), true, true)); - client.getSession().sendMessage(new PlayerArrivalChange(cl.getPlayer().getId(), cl.getPlayer().getCords(), true, false)); + cl.getSession().sendMessage(new PlayerArrivalChange(client.getPlayer().getId(), player.getPlayerCords(), PlayerRotation.FRONT, true, true)); + client.getSession().sendMessage(new PlayerArrivalChange(cl.getPlayer().getId(), cl.getPlayer().getCords(), PlayerRotation.FRONT, true, false)); } } diff --git a/server/src/main/java/cz/jzitnik/server/events/handlers/MovePlayerRoomHandler.java b/server/src/main/java/cz/jzitnik/server/events/handlers/MovePlayerRoomHandler.java index 3dc6117..7de43db 100644 --- a/server/src/main/java/cz/jzitnik/server/events/handlers/MovePlayerRoomHandler.java +++ b/server/src/main/java/cz/jzitnik/server/events/handlers/MovePlayerRoomHandler.java @@ -40,9 +40,9 @@ public class MovePlayerRoomHandler extends AbstractEventHandler if (player.getPlayer().getId() != client.getPlayer().getId()) { if (player.getPlayer().getCurrentRoom().equals(oldRoomId)) { log.debug("{}", event.oldCords()); - player.getSession().sendMessage(new PlayerArrivalChange(client.getPlayer().getId(), event.oldCords(), false, true)); + player.getSession().sendMessage(new PlayerArrivalChange(client.getPlayer().getId(), event.oldCords(), client.getPlayer().getPlayerRotation(), false, true)); } else if (player.getPlayer().getCurrentRoom().equals(event.newRoomId())) { - player.getSession().sendMessage(new PlayerArrivalChange(client.getPlayer().getId(), event.newCords(), true, true)); + player.getSession().sendMessage(new PlayerArrivalChange(client.getPlayer().getId(), event.newCords(), client.getPlayer().getPlayerRotation(), true, true)); } } } diff --git a/server/src/main/java/cz/jzitnik/server/socket/WebSocket.java b/server/src/main/java/cz/jzitnik/server/socket/WebSocket.java index e43368d..a0aa476 100644 --- a/server/src/main/java/cz/jzitnik/server/socket/WebSocket.java +++ b/server/src/main/java/cz/jzitnik/server/socket/WebSocket.java @@ -1,6 +1,8 @@ package cz.jzitnik.server.socket; import cz.jzitnik.common.socket.SocketMessage; +import cz.jzitnik.common.socket.messages.player.PlayerArrivalChange; +import cz.jzitnik.common.socket.messages.player.PlayerDisconnected; import cz.jzitnik.server.game.Client; import cz.jzitnik.server.context.GlobalContext; import jakarta.websocket.*; @@ -37,7 +39,24 @@ public class WebSocket { @OnClose public void onClose(Session session, CloseReason reason) { - System.out.println("Connection closed: " + reason); + Client client = globalContext.getSessions().get(session); + client.getGame().getPlayers().remove(client); + + for (Client otherClient : client.getGame().getPlayers()) { + if (otherClient.getPlayer().getCurrentRoom().equals(client.getPlayer().getCurrentRoom())) { + otherClient.getSession().sendMessage(new PlayerArrivalChange( + client.getPlayer().getId(), + client.getPlayer().getCords(), + client.getPlayer().getPlayerRotation(), + false, + true + )); + } + + otherClient.getSession().sendMessage(new PlayerDisconnected(client.getPlayer().getId())); + } + + log.debug("Connection closed: {}", reason); } @OnError -- 2.49.1 From cdd002ea20926bb444e1d47f9b5a4a0f9ccc3216 Mon Sep 17 00:00:00 2001 From: jzitnik-dev Date: Tue, 3 Feb 2026 21:40:13 +0100 Subject: [PATCH 14/14] feat: Synchronize game items kinda --- .../messages/items/ItemTookFromChest.java | 9 ++++ .../cz/jzitnik/client/game/GameState.java | 4 ++ .../jzitnik/client/game/items/GameItem.java | 3 ++ .../cz/jzitnik/client/game/objects/Chest.java | 26 ++++++++--- .../jzitnik/client/game/setup/GameSetup.java | 1 + .../events/ItemTookFromChestHandler.java | 43 +++++++++++++++++++ game/src/main/resources/setup/rooms.yaml | 24 +++++++---- .../handlers/ItemTookFromChestHandler.java | 23 ++++++++++ .../java/cz/jzitnik/server/game/Game.java | 3 ++ 9 files changed, 121 insertions(+), 15 deletions(-) create mode 100644 common/src/main/java/cz/jzitnik/common/socket/messages/items/ItemTookFromChest.java create mode 100644 game/src/main/java/cz/jzitnik/client/socket/events/ItemTookFromChestHandler.java create mode 100644 server/src/main/java/cz/jzitnik/server/events/handlers/ItemTookFromChestHandler.java diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/items/ItemTookFromChest.java b/common/src/main/java/cz/jzitnik/common/socket/messages/items/ItemTookFromChest.java new file mode 100644 index 0000000..f1b3897 --- /dev/null +++ b/common/src/main/java/cz/jzitnik/common/socket/messages/items/ItemTookFromChest.java @@ -0,0 +1,9 @@ +package cz.jzitnik.common.socket.messages.items; + +import cz.jzitnik.common.socket.SocketMessage; + +public record ItemTookFromChest( + String roomId, // For faster lookup i guess + int id +) implements SocketMessage { +} diff --git a/game/src/main/java/cz/jzitnik/client/game/GameState.java b/game/src/main/java/cz/jzitnik/client/game/GameState.java index 1cfcf03..67027ad 100644 --- a/game/src/main/java/cz/jzitnik/client/game/GameState.java +++ b/game/src/main/java/cz/jzitnik/client/game/GameState.java @@ -20,6 +20,10 @@ public class GameState { @Setter private GameRoom currentRoom; + @Getter + @Setter + private List allRooms; + @Getter @Setter private Player player; diff --git a/game/src/main/java/cz/jzitnik/client/game/items/GameItem.java b/game/src/main/java/cz/jzitnik/client/game/items/GameItem.java index 38f748f..6538c9f 100644 --- a/game/src/main/java/cz/jzitnik/client/game/items/GameItem.java +++ b/game/src/main/java/cz/jzitnik/client/game/items/GameItem.java @@ -14,14 +14,17 @@ public class GameItem implements Renderable { @JsonIgnore private final BufferedImage texture; private final String name; + private final int id; @JsonCreator public GameItem( + @JsonProperty("id") int id, @JsonProperty("name") String name, @JsonProperty("type") ItemType type, @JsonProperty("texture") ResourceManager.Resource resource, @JacksonInject ResourceManager resourceManager ) { + this.id = id; this.name = name; this.type = type; this.texture = resourceManager.getResource(resource); diff --git a/game/src/main/java/cz/jzitnik/client/game/objects/Chest.java b/game/src/main/java/cz/jzitnik/client/game/objects/Chest.java index 3a08570..d6e3870 100644 --- a/game/src/main/java/cz/jzitnik/client/game/objects/Chest.java +++ b/game/src/main/java/cz/jzitnik/client/game/objects/Chest.java @@ -10,10 +10,7 @@ import cz.jzitnik.client.annotations.injectors.InjectConfig; import cz.jzitnik.client.annotations.injectors.InjectDependency; import cz.jzitnik.client.annotations.injectors.InjectState; import cz.jzitnik.client.config.Debugging; -import cz.jzitnik.client.events.InventoryRerender; -import cz.jzitnik.client.events.MouseAction; -import cz.jzitnik.client.events.RerenderPart; -import cz.jzitnik.client.events.RerenderScreen; +import cz.jzitnik.client.events.*; import cz.jzitnik.client.game.GameRoom; import cz.jzitnik.client.game.GameState; import cz.jzitnik.client.game.Player; @@ -30,9 +27,12 @@ import cz.jzitnik.client.ui.pixels.Pixel; import cz.jzitnik.client.utils.RerenderUtils; import cz.jzitnik.client.utils.UIRoomClickHandlerRepository; import cz.jzitnik.client.utils.events.EventManager; +import cz.jzitnik.common.socket.messages.items.ItemTookFromChest; +import lombok.Getter; import lombok.extern.slf4j.Slf4j; import java.awt.image.BufferedImage; +import java.net.Socket; import java.util.HashSet; import java.util.List; @@ -40,8 +40,11 @@ import java.util.List; public final class Chest extends GameObject implements UIClickHandler { private static final int RENDER_PADDING = 1; + @Getter private final List items; + private boolean rendered; + private int listenerHashCode; private int actualDisplayStartX; @@ -164,6 +167,7 @@ public final class Chest extends GameObject implements UIClickHandler { guiStart.getRow() - start.getY(), guiEnd.getRow() - start.getY() )); + rendered = true; } private void clearPreviousUI( @@ -257,15 +261,23 @@ public final class Chest extends GameObject implements UIClickHandler { if (!added) { return true; } - eventManager.emitEvent(new InventoryRerender()); + eventManager.emitEvent(new SendSocketMessageEvent(new ItemTookFromChest(gameState.getCurrentRoom().getId(), item.getId()))); + + return true; + } + + public void handleItemRemoval(GameItem item) { items.remove(item); + if (!rendered) { + return; + } + + eventManager.emitEvent(new InventoryRerender()); if (items.isEmpty()) { uiRoomClickHandlerRepository.removeHandlerForCurrentRoom(listenerHashCode); } render(true); - - return true; } } diff --git a/game/src/main/java/cz/jzitnik/client/game/setup/GameSetup.java b/game/src/main/java/cz/jzitnik/client/game/setup/GameSetup.java index 9695955..6cc964a 100644 --- a/game/src/main/java/cz/jzitnik/client/game/setup/GameSetup.java +++ b/game/src/main/java/cz/jzitnik/client/game/setup/GameSetup.java @@ -47,5 +47,6 @@ public class GameSetup { ); gameState.setCurrentRoom(rooms.getFirst()); + gameState.setAllRooms(rooms); } } diff --git a/game/src/main/java/cz/jzitnik/client/socket/events/ItemTookFromChestHandler.java b/game/src/main/java/cz/jzitnik/client/socket/events/ItemTookFromChestHandler.java new file mode 100644 index 0000000..9925d22 --- /dev/null +++ b/game/src/main/java/cz/jzitnik/client/socket/events/ItemTookFromChestHandler.java @@ -0,0 +1,43 @@ +package cz.jzitnik.client.socket.events; + +import cz.jzitnik.client.annotations.SocketEventHandler; +import cz.jzitnik.client.annotations.injectors.InjectState; +import cz.jzitnik.client.game.GameRoom; +import cz.jzitnik.client.game.GameState; +import cz.jzitnik.client.game.items.GameItem; +import cz.jzitnik.client.game.objects.Chest; +import cz.jzitnik.client.game.objects.GameObject; +import cz.jzitnik.client.socket.AbstractSocketEventHandler; +import cz.jzitnik.common.socket.messages.items.ItemTookFromChest; + +@SocketEventHandler(ItemTookFromChest.class) +public class ItemTookFromChestHandler extends AbstractSocketEventHandler { + @InjectState + private GameState gameState; + + @Override + public void handle(ItemTookFromChest event) { + for (GameRoom room : gameState.getAllRooms()) { + if (!room.getId().equals(event.roomId())) { + continue; + } + + for (GameObject object : room.getObjects()) { + if (object instanceof Chest chest) { + var items = chest.getItems(); + + for (GameItem item : items) { + if (item.getId() != event.id()) { + continue; + } + + items.remove(item); + chest.handleItemRemoval(item); + + return; + } + } + } + } + } +} diff --git a/game/src/main/resources/setup/rooms.yaml b/game/src/main/resources/setup/rooms.yaml index 723c351..b9ea51f 100644 --- a/game/src/main/resources/setup/rooms.yaml +++ b/game/src/main/resources/setup/rooms.yaml @@ -41,12 +41,14 @@ x: 100 y: 45 items: - - name: "Wooden sword" + - id: 1 + name: "Wooden sword" type: name: "weapon_sword" dealDamage: 1 texture: "WOODEN_SWORD" - - name: "Apple" + - id: 2 + name: "Apple" type: name: "food" addHealth: 1 @@ -78,12 +80,14 @@ x: 100 y: 45 items: - - name: "Wooden sword" + - id: 3 + name: "Wooden sword" type: name: "weapon_sword" dealDamage: 1 texture: "WOODEN_SWORD" - - name: "Apple" + - id: 4 + name: "Apple" type: name: "food" addHealth: 1 @@ -124,7 +128,8 @@ y: 78 health: 10 itemsDrops: - - name: "Apple" + - id: 5 + name: "Apple" type: name: "food" addHealth: 1 @@ -159,7 +164,8 @@ y: 78 health: 10 itemsDrops: - - name: "Apple" + - id: 6 + name: "Apple" type: name: "food" addHealth: 1 @@ -189,12 +195,14 @@ x: 100 y: 45 items: - - name: "Wooden sword" + - id: 7 + name: "Wooden sword" type: name: "weapon_sword" dealDamage: 1 texture: "WOODEN_SWORD" - - name: "Apple" + - id: 8 + name: "Apple" type: name: "food" addHealth: 1 diff --git a/server/src/main/java/cz/jzitnik/server/events/handlers/ItemTookFromChestHandler.java b/server/src/main/java/cz/jzitnik/server/events/handlers/ItemTookFromChestHandler.java new file mode 100644 index 0000000..e4c0d31 --- /dev/null +++ b/server/src/main/java/cz/jzitnik/server/events/handlers/ItemTookFromChestHandler.java @@ -0,0 +1,23 @@ +package cz.jzitnik.server.events.handlers; + +import cz.jzitnik.common.socket.messages.items.ItemTookFromChest; +import cz.jzitnik.server.annotations.EventHandler; +import cz.jzitnik.server.context.GlobalContext; +import cz.jzitnik.server.events.AbstractEventHandler; +import cz.jzitnik.server.game.Client; + +@EventHandler(ItemTookFromChest.class) +public class ItemTookFromChestHandler extends AbstractEventHandler { + public ItemTookFromChestHandler(GlobalContext globalContext) { + super(globalContext); + } + + @Override + public void handle(ItemTookFromChest event, Client client) { + client.getGame().getItemModifiers().add(event); + + for (Client client1 : client.getGame().getPlayers()) { + client1.getSession().sendMessage(event); + } + } +} diff --git a/server/src/main/java/cz/jzitnik/server/game/Game.java b/server/src/main/java/cz/jzitnik/server/game/Game.java index 27a421f..936b51e 100644 --- a/server/src/main/java/cz/jzitnik/server/game/Game.java +++ b/server/src/main/java/cz/jzitnik/server/game/Game.java @@ -1,8 +1,10 @@ package cz.jzitnik.server.game; +import cz.jzitnik.common.socket.messages.items.ItemTookFromChest; import lombok.AllArgsConstructor; import lombok.Getter; +import java.util.ArrayList; import java.util.List; @Getter @@ -10,4 +12,5 @@ import java.util.List; public class Game { private String password; private List players; + private final List itemModifiers = new ArrayList<>(); } -- 2.49.1