Väljunud mängija eemaldamine ekraanilt¶
Koodi värskendamine¶
Game.java
public void leaveLobby(int playerId, int lobbyId) {
...
if (lobby.getPlayersNumber() == 0) {
...
}
ServerLauncher.getInstance().sendToAllUDP(new LeaveLobbyPacket(playerId));
}
Nüüd, kui mängija väljub lobbist, siis saadetakse sellest info teistele lobbis asuvatele mängijatele.
Vastuse töötlemine kliendis¶
ClientLauncher.java
@Override
public void received(Connection connection, Object object) {
switch (object) {
...
case LeaveLobbyPacket packet ->
Main.getInstance().removePlayer(packet.getId());
...
}
}
Main.java
public void removePlayer(int id) {
if (id == ClientLauncher.getInstance().getID()) {
currentLobby = null;
Gdx.app.postRunnable(new SetScreenRunnable(new LobbiesListScreen()));
} else {
if (getScreen() instanceof LobbyScreen lobbyScreen) {
lobbyScreen.removePlayer(id);
}
}
}
LobbyScreen.java
public void removePlayer(int id) {
Actor player = players.remove(id);
playersTable.removeActor(player);
}