fix: send gamestructure to players joining a running game

This commit is contained in:
punchready 2021-08-09 20:29:46 +02:00
parent 2e839c1768
commit d46471e601

View File

@ -57,6 +57,7 @@ public class LobbyConnection implements Runnable {
Logger.trace("Set client state to playing");
participant.getClient().setState(ClientState.Playing);
participant.state = ParticipantState.Playing;
participant.sendMessage(generateGameStructure(participant.type));
}
if (participant.type == ParticipantType.Spectator) {
Logger.trace("Adding spectator");
@ -158,7 +159,7 @@ public class LobbyConnection implements Runnable {
response.gameID = gameID;
participant.sendMessage(response);
sendGameStructure(participant.equals(player1), participant.equals(player2), false);
participant.sendMessage(generateGameStructure(participant.type));
lobby.handleReconnect(participant);
}
@ -186,7 +187,7 @@ public class LobbyConnection implements Runnable {
Logger.info("Starting Lobby in main thread for lobby '{}'", gameID);
}
sendGameStructure(true, true, true);
broadcastGameStructure(true, true, true);
this.lobby = new Lobby(
gameID,
@ -221,7 +222,14 @@ public class LobbyConnection implements Runnable {
}
private void sendGameStructure(boolean p1, boolean p2, boolean spectators) {
private void broadcastGameStructure() {
// Sending GameStructure message with fitting assignment
player1.sendMessage(generateGameStructure(ParticipantType.PlayerOne));
player2.sendMessage(generateGameStructure(ParticipantType.PlayerTwo));
broadcastToSpectators(generateGameStructure(ParticipantType.Spectator));
}
private GameStructureMessage generateGameStructure(ParticipantType assignment) {
GameStructureMessage gameStructureMessage = new GameStructureMessage();
gameStructureMessage.playerOneName = player1.id.getName();
gameStructureMessage.playerTwoName = player2.id.getName();
@ -240,21 +248,9 @@ public class LobbyConnection implements Runnable {
gameStructureMessage.matchconfig = Server.getPartyConfig();
gameStructureMessage.scenarioconfig = Server.getScenarioConfig();
// Sending GameStructure message with fitting assignment
if (p1) {
gameStructureMessage.assignment = ParticipantType.PlayerOne;
player1.sendMessage(gameStructureMessage);
}
gameStructureMessage.assignment = assignment;
if (p2) {
gameStructureMessage.assignment = ParticipantType.PlayerTwo;
player2.sendMessage(gameStructureMessage);
}
if (spectators) {
gameStructureMessage.assignment = ParticipantType.Spectator;
broadcastToSpectators(gameStructureMessage);
}
return gameStructureMessage;
}
private Tuple<Participant, Request[]> pollQueueAsync() {