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);
}