diff --git a/.idea/FuzzierSettings.xml b/.idea/FuzzierSettings.xml
index 0344d88..ff7c62c 100644
--- a/.idea/FuzzierSettings.xml
+++ b/.idea/FuzzierSettings.xml
@@ -9,6 +9,6 @@
-
+
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 8fa91a7..b08d639 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -7,7 +7,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -16,6 +34,7 @@
+
diff --git a/common/pom.xml b/common/pom.xml
index 6c1d95c..66edc42 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -12,6 +12,27 @@
common
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.11.0
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.42
+
+
+ 25
+ 25
+
+
+
+
+
tools.jackson.core
@@ -31,5 +52,12 @@
1.18.42
provided
+
+
+ org.slf4j
+ slf4j-api
+ 2.0.17
+
+
diff --git a/game/src/main/java/cz/jzitnik/client/game/utils/RoomCords.java b/common/src/main/java/cz/jzitnik/common/models/coordinates/RoomCords.java
similarity index 83%
rename from game/src/main/java/cz/jzitnik/client/game/utils/RoomCords.java
rename to common/src/main/java/cz/jzitnik/common/models/coordinates/RoomCords.java
index a40bbd2..724f2ce 100644
--- a/game/src/main/java/cz/jzitnik/client/game/utils/RoomCords.java
+++ b/common/src/main/java/cz/jzitnik/common/models/coordinates/RoomCords.java
@@ -1,18 +1,18 @@
-package cz.jzitnik.client.game.utils;
+package cz.jzitnik.common.models.coordinates;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
-import cz.jzitnik.client.game.GameRoomPart;
import lombok.Getter;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
+import java.io.Serializable;
import java.util.List;
@Slf4j
@ToString
@Getter
-public class RoomCords implements Cloneable {
+public class RoomCords implements Cloneable, Serializable {
private int x;
private int y;
@@ -29,8 +29,8 @@ public class RoomCords implements Cloneable {
this.y = y;
}
- public void updateCordsWithColliders(List colliders, int x, int y, GameRoomPart playerCollider) {
- var normalizedPlayerCollider = new GameRoomPart(
+ 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),
new RoomCords(playerCollider.getEnd().getX() + x, playerCollider.getEnd().getY() + y)
);
diff --git a/game/src/main/java/cz/jzitnik/client/game/GameRoomPart.java b/common/src/main/java/cz/jzitnik/common/models/coordinates/RoomPart.java
similarity index 82%
rename from game/src/main/java/cz/jzitnik/client/game/GameRoomPart.java
rename to common/src/main/java/cz/jzitnik/common/models/coordinates/RoomPart.java
index dcfaa09..3de05c6 100644
--- a/game/src/main/java/cz/jzitnik/client/game/GameRoomPart.java
+++ b/common/src/main/java/cz/jzitnik/common/models/coordinates/RoomPart.java
@@ -1,19 +1,20 @@
-package cz.jzitnik.client.game;
+package cz.jzitnik.common.models.coordinates;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
-import cz.jzitnik.client.game.utils.RoomCords;
import lombok.Data;
import lombok.ToString;
+import java.io.Serializable;
+
@Data
@ToString
-public class GameRoomPart {
+public class RoomPart implements Serializable {
private RoomCords start;
private RoomCords end;
@JsonCreator
- public GameRoomPart(
+ public RoomPart(
@JsonProperty("start") RoomCords start,
@JsonProperty("end") RoomCords end
) {
@@ -31,7 +32,7 @@ public class GameRoomPart {
/**
* Checks if this GameRoomPart overlaps with another.
*/
- public boolean isOverlapping(GameRoomPart other) {
+ public boolean isOverlapping(RoomPart other) {
return start.getX() <= other.getEnd().getX() &&
end.getX() >= other.getStart().getX() &&
start.getY() <= other.getEnd().getY() &&
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
new file mode 100644
index 0000000..04a6024
--- /dev/null
+++ b/common/src/main/java/cz/jzitnik/common/models/player/PlayerCreation.java
@@ -0,0 +1,24 @@
+package cz.jzitnik.common.models.player;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import cz.jzitnik.common.models.coordinates.RoomCords;
+import cz.jzitnik.common.models.coordinates.RoomPart;
+import lombok.Getter;
+
+import java.io.Serializable;
+
+@Getter
+public final class PlayerCreation implements Serializable {
+ private final RoomCords playerCords;
+ private final RoomPart collider;
+
+ @JsonCreator
+ public PlayerCreation(
+ @JsonProperty("playerCords") RoomCords playerCords,
+ @JsonProperty("collider") RoomPart collider
+ ) {
+ this.playerCords = playerCords;
+ this.collider = collider;
+ }
+}
diff --git a/common/src/main/java/cz/jzitnik/common/socket/messages/game/creation/CreateGameResponse.java b/common/src/main/java/cz/jzitnik/common/socket/messages/game/creation/CreateGameResponse.java
index 30ded32..732c852 100644
--- a/common/src/main/java/cz/jzitnik/common/socket/messages/game/creation/CreateGameResponse.java
+++ b/common/src/main/java/cz/jzitnik/common/socket/messages/game/creation/CreateGameResponse.java
@@ -1,6 +1,13 @@
package cz.jzitnik.common.socket.messages.game.creation;
+import cz.jzitnik.common.models.player.PlayerCreation;
import cz.jzitnik.common.socket.SocketMessage;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+@Getter
+@AllArgsConstructor
public class CreateGameResponse implements SocketMessage {
+ private final String gamePassword;
+ private final PlayerCreation ownerPlayer;
}
diff --git a/game/pom.xml b/game/pom.xml
index 6056ef3..3a308de 100644
--- a/game/pom.xml
+++ b/game/pom.xml
@@ -68,6 +68,7 @@
cz.jzitnik.client.Main
compile
+ false
diff --git a/game/src/main/java/cz/jzitnik/client/Cli.java b/game/src/main/java/cz/jzitnik/client/Cli.java
index 073d3a8..5f32d35 100644
--- a/game/src/main/java/cz/jzitnik/client/Cli.java
+++ b/game/src/main/java/cz/jzitnik/client/Cli.java
@@ -10,7 +10,6 @@ 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;
@@ -24,9 +23,6 @@ public class Cli implements Runnable {
@InjectDependency
private EventManager eventManager;
- @InjectDependency
- private SocketEventManager socketEventManager;
-
@InjectState
private TerminalState terminalState;
@@ -36,9 +32,6 @@ public class Cli implements Runnable {
@Override
public void run() {
// Start event manager thread
- eventManager.start();
- socketEventManager.start();
-
try (TerminalScreen terminal = new DefaultTerminalFactory()
.setMouseCaptureMode(MouseCaptureMode.CLICK_RELEASE_DRAG_MOVE)
.createScreen()) {
diff --git a/game/src/main/java/cz/jzitnik/client/Game.java b/game/src/main/java/cz/jzitnik/client/Game.java
index ca2c77b..71f774e 100644
--- a/game/src/main/java/cz/jzitnik/client/Game.java
+++ b/game/src/main/java/cz/jzitnik/client/Game.java
@@ -3,10 +3,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.socket.SocketEventManager;
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 cz.jzitnik.client.utils.events.EventManager;
import jakarta.websocket.DeploymentException;
import org.reflections.Reflections;
@@ -15,33 +17,33 @@ import java.io.IOException;
public class Game {
private final DependencyManager dependencyManager = new DependencyManager(new Reflections("cz.jzitnik.client"));
- @InjectDependency
- private Cli cli;
@InjectDependency
private GameSetup gameSetup;
@InjectDependency
+ private EventManager eventManager;
+ @InjectDependency
+ private SocketEventManager socketEventManager;
+ @InjectDependency
+ private Cli cli;
+ @InjectDependency
private ThreadManager threadManager;
@InjectDependency
private ScheduledTaskManager scheduledTaskManager;
@InjectDependency
private GlobalIOHandlerRepository globalIOHandlerRepository;
- @InjectDependency
- private Client client;
public void start() throws IOException {
dependencyManager.inject(this);
- try {
- client.connect();
+ eventManager.start();
+ socketEventManager.start();
- gameSetup.setup();
- threadManager.startAll();
- scheduledTaskManager.startAll();
- globalIOHandlerRepository.setup();
+ threadManager.startAll();
+ scheduledTaskManager.startAll();
+ globalIOHandlerRepository.setup();
- cli.run();
- } catch (DeploymentException e) {
- throw new RuntimeException(e);
- }
+ gameSetup.setup();
+
+ cli.run();
}
}
diff --git a/game/src/main/java/cz/jzitnik/client/events/handlers/DialogEventHandler.java b/game/src/main/java/cz/jzitnik/client/events/handlers/DialogEventHandler.java
index acd5bfe..9ed1700 100644
--- a/game/src/main/java/cz/jzitnik/client/events/handlers/DialogEventHandler.java
+++ b/game/src/main/java/cz/jzitnik/client/events/handlers/DialogEventHandler.java
@@ -105,7 +105,7 @@ public class DialogEventHandler extends AbstractEventHandler