diff --git a/src/main/java/com/alterdekim/game/component/game/GameRoom.java b/src/main/java/com/alterdekim/game/component/game/GameRoom.java index 7784e47..8590dd1 100644 --- a/src/main/java/com/alterdekim/game/component/game/GameRoom.java +++ b/src/main/java/com/alterdekim/game/component/game/GameRoom.java @@ -43,6 +43,8 @@ public class GameRoom extends Thread { @Setter private boolean isGameLoopFrozen = false; + private boolean isAllPlayersAlreadyJoined = false; + private final ConcurrentMap manager; public GameRoom(List players, UserServiceImpl userService) { @@ -75,7 +77,6 @@ public class GameRoom extends Thread { log.info("GameRoomManager: {}", this.manager.keySet()); log.info("GameRoomManagerVals: {}", this.manager.values()); this.initBoard(); - this.start(); } private void initBoard() { @@ -141,6 +142,7 @@ public class GameRoom extends Thread { public void receiveMessage(BasicMessage message, WebSocketSession session) { if(players.stream().noneMatch(p -> p.getUserId().longValue() == message.getUid().longValue())) return; socks.put(message.getUid(), session); + if(players.size() == socks.keySet().size() && !isAllPlayersAlreadyJoined) onAllPlayersJoined(); log.info("receiveMessage " + message.getType()); parseMessage(message); } @@ -195,6 +197,11 @@ public class GameRoom extends Thread { } } + private void onAllPlayersJoined() { + this.start(); + this.isAllPlayersAlreadyJoined = true; + } + @Override public void run() { while(true) {