feat: Player movement multiplayer
This commit is contained in:
@@ -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<ConnectToAGame>
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ public class CreateGameHandler extends AbstractEventHandler<CreateGame> {
|
||||
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(
|
||||
|
||||
@@ -19,7 +19,7 @@ public class PlayerMoveHandler extends AbstractEventHandler<PlayerMove> {
|
||||
|
||||
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()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user