fix: fixed a bug where spectators that join aren't in the playing state
This commit is contained in:
		@ -2,7 +2,9 @@ package uulm.teamname.marvelous.server.lobby.pipelining;
 | 
			
		||||
 | 
			
		||||
import org.tinylog.Logger;
 | 
			
		||||
import uulm.teamname.marvelous.gamelibrary.events.Event;
 | 
			
		||||
import uulm.teamname.marvelous.gamelibrary.events.EventBuilder;
 | 
			
		||||
import uulm.teamname.marvelous.gamelibrary.gamelogic.GameInstance;
 | 
			
		||||
import uulm.teamname.marvelous.gamelibrary.messages.server.EventMessage;
 | 
			
		||||
import uulm.teamname.marvelous.gamelibrary.requests.RequestBuilder;
 | 
			
		||||
import uulm.teamname.marvelous.gamelibrary.requests.RequestType;
 | 
			
		||||
import uulm.teamname.marvelous.server.lobby.Lobby;
 | 
			
		||||
@ -28,7 +30,10 @@ public class RequestGameStateSegment implements Segment {
 | 
			
		||||
        Logger.trace("RequestGameStateSegment received {} requests", packet.size());
 | 
			
		||||
        if (packet.containsRequestOfType(RequestType.Req)) {
 | 
			
		||||
            Logger.trace("Req event found. Returning Gamestate, and clearing entire RequestList");
 | 
			
		||||
            carrier.add(game.getGameStateEvent());
 | 
			
		||||
            var gamestateEventMessage = new EventMessage();
 | 
			
		||||
            gamestateEventMessage.messages = new Event[] {game.getGameStateEvent()};
 | 
			
		||||
            packet.getOrigin().sendMessage(gamestateEventMessage);
 | 
			
		||||
            carrier.clear();
 | 
			
		||||
            packet.clear();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -49,17 +49,18 @@ public class LobbyConnection implements Runnable {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void addParticipant(Participant participant) {
 | 
			
		||||
        if (this.state == LobbyConnectionState.Started) {
 | 
			
		||||
        if (this.state == LobbyConnectionState.Started || this.player1.state == ParticipantState.Playing) {
 | 
			
		||||
            Logger.trace("Set client state to playing");
 | 
			
		||||
            participant.getClient().state = ClientState.Playing;
 | 
			
		||||
            participant.state = ParticipantState.Playing;
 | 
			
		||||
        }
 | 
			
		||||
        if(participant.type == ParticipantType.Spectator) {
 | 
			
		||||
            Logger.trace("Adding spectator");
 | 
			
		||||
            spectators.add(participant);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if(participant.type == ParticipantType.PlayerOne) {
 | 
			
		||||
        } else if(participant.type == ParticipantType.PlayerOne) {
 | 
			
		||||
            player1 = participant;
 | 
			
		||||
        }else {
 | 
			
		||||
        } else {
 | 
			
		||||
            player2 = participant;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -4,5 +4,6 @@ public enum ClientState {
 | 
			
		||||
    Blank,
 | 
			
		||||
    Ready,
 | 
			
		||||
    Assigned,
 | 
			
		||||
    Reconnect, Playing
 | 
			
		||||
    Reconnect,
 | 
			
		||||
    Playing
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user