feat: Multiplayer player moving between rooms
This commit is contained in:
@@ -49,8 +49,8 @@ public class ConnectToAGameHandler extends AbstractEventHandler<ConnectToAGame>
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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<MovePlayerRoom> {
|
||||
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user