Added broadcast of player join/leave messages.
This commit is contained in:
parent
4ef8e88e81
commit
dd97f43c9a
|
@ -1,5 +1,6 @@
|
|||
package nl.andrewl.aos_core.net;
|
||||
|
||||
import nl.andrewl.aos_core.model.Player;
|
||||
import nl.andrewl.record_net.Message;
|
||||
|
||||
/**
|
||||
|
@ -11,4 +12,13 @@ public record PlayerJoinMessage(
|
|||
float px, float py, float pz,
|
||||
float vx, float vy, float vz,
|
||||
float ox, float oy
|
||||
) implements Message {}
|
||||
) implements Message {
|
||||
public PlayerJoinMessage(Player player) {
|
||||
this(
|
||||
player.getId(), player.getUsername(),
|
||||
player.getPosition().x, player.getPosition().y, player.getPosition().z,
|
||||
player.getVelocity().x, player.getVelocity().y, player.getVelocity().z,
|
||||
player.getOrientation().x, player.getOrientation().y
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package nl.andrewl.aos2_server;
|
||||
|
||||
import nl.andrewl.aos_core.Net;
|
||||
import nl.andrewl.aos_core.net.PlayerJoinMessage;
|
||||
import nl.andrewl.aos_core.net.PlayerLeaveMessage;
|
||||
import nl.andrewl.aos_core.net.udp.DatagramInit;
|
||||
import nl.andrewl.aos_core.net.udp.PlayerUpdateMessage;
|
||||
import nl.andrewl.record_net.Message;
|
||||
|
@ -29,6 +31,7 @@ public class PlayerManager {
|
|||
clientHandlers.put(player.getId(), handler);
|
||||
log.info("Registered player \"{}\" with id {}", player.getUsername(), player.getId());
|
||||
player.setPosition(new Vector3f(0, 64, 0));
|
||||
broadcastTcpMessage(new PlayerJoinMessage(player));
|
||||
broadcastUdpMessage(new PlayerUpdateMessage(player));
|
||||
return player;
|
||||
}
|
||||
|
@ -38,6 +41,7 @@ public class PlayerManager {
|
|||
if (handler != null) handler.shutdown();
|
||||
players.remove(player.getId());
|
||||
clientHandlers.remove(player.getId());
|
||||
broadcastTcpMessage(new PlayerLeaveMessage(player.getId()));
|
||||
log.info("Deregistered player \"{}\" with id {}", player.getUsername(), player.getId());
|
||||
}
|
||||
|
||||
|
@ -73,6 +77,12 @@ public class PlayerManager {
|
|||
}
|
||||
}
|
||||
|
||||
public void broadcastTcpMessage(Message msg) {
|
||||
for (var handler : getHandlers()) {
|
||||
handler.sendTcpMessage(msg);
|
||||
}
|
||||
}
|
||||
|
||||
public void broadcastUdpMessage(Message msg) {
|
||||
try {
|
||||
byte[] data = Net.write(msg);
|
||||
|
|
Loading…
Reference in New Issue