Compare commits
	
		
			4 Commits
		
	
	
		
			2e839c1768
			...
			97a2cbb74e
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 97a2cbb74e | |||
| d54d2004dd | |||
| e7c5976f9b | |||
| d46471e601 | 
							
								
								
									
										2
									
								
								Gamelib
									
									
									
									
									
								
							
							
								
								
								
								
								
							
						
						
									
										2
									
								
								Gamelib
									
									
									
									
									
								
							 Submodule Gamelib updated: ddd0f2f953...9f5303ba74
									
								
							@ -92,7 +92,6 @@ public class Server {
 | 
				
			|||||||
     * It has to be executed <b>BEFORE ANY LOGGING OPERATIONS</b> .
 | 
					     * It has to be executed <b>BEFORE ANY LOGGING OPERATIONS</b> .
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private static void setLogLevel(int logLevel) {
 | 
					    private static void setLogLevel(int logLevel) {
 | 
				
			||||||
        // System.out.println("setting log level to " + logLevel);
 | 
					 | 
				
			||||||
        Map<String, String> map = new HashMap<>();
 | 
					        Map<String, String> map = new HashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Configuration.replace(map);
 | 
					        Configuration.replace(map);
 | 
				
			||||||
 | 
				
			|||||||
@ -1,13 +1,9 @@
 | 
				
			|||||||
package uulm.teamname.marvelous.server.lobby;
 | 
					package uulm.teamname.marvelous.server.lobby;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import uulm.teamname.marvelous.server.Server;
 | 
					 | 
				
			||||||
import uulm.teamname.marvelous.server.lobbymanager.Participant;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.util.concurrent.Executors;
 | 
					import java.util.concurrent.Executors;
 | 
				
			||||||
import java.util.concurrent.ScheduledExecutorService;
 | 
					import java.util.concurrent.ScheduledExecutorService;
 | 
				
			||||||
import java.util.concurrent.ThreadFactory;
 | 
					import java.util.concurrent.ThreadFactory;
 | 
				
			||||||
import java.util.concurrent.TimeUnit;
 | 
					import java.util.concurrent.TimeUnit;
 | 
				
			||||||
import java.util.function.Consumer;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * A timer meant to time the entire Lifetime of the lobby, and if it is higher than the maximum permitted value,
 | 
					 * A timer meant to time the entire Lifetime of the lobby, and if it is higher than the maximum permitted value,
 | 
				
			||||||
 | 
				
			|||||||
@ -28,19 +28,19 @@ public class TurnTimeoutTimer {
 | 
				
			|||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * This method checks if the participant is not a spectator. Otherwise it won't start a timer.
 | 
					     * This method checks if the participant is not a spectator. Otherwise it won't start a timer.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param Participant the timer is for
 | 
					     * @param participant the timer is for
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public void startTurnTimer(Participant Participant) {
 | 
					    public void startTurnTimer(Participant participant) {
 | 
				
			||||||
        if (Participant.type == ParticipantType.Spectator) {
 | 
					        if (participant.type == ParticipantType.Spectator) {
 | 
				
			||||||
            throw new IllegalStateException("Spectators don't have TurnTime");
 | 
					            throw new IllegalStateException("Spectators don't have TurnTime");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        clear();
 | 
					        clear();
 | 
				
			||||||
        Logger.debug("Starting turn timer for participant '{}' with role {}",
 | 
					        Logger.debug("Starting turn timer for participant '{}' with role {}",
 | 
				
			||||||
                Participant.id.getName(), Participant.type);
 | 
					                participant.id.getName(), participant.type);
 | 
				
			||||||
        current = timer.schedule(() -> {
 | 
					        current = timer.schedule(() -> {
 | 
				
			||||||
                    callback.accept(Participant);
 | 
					                    callback.accept(participant);
 | 
				
			||||||
                    return Participant;
 | 
					                    return participant;
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                maxRoundTime,
 | 
					                maxRoundTime,
 | 
				
			||||||
                TimeUnit.SECONDS);
 | 
					                TimeUnit.SECONDS);
 | 
				
			||||||
 | 
				
			|||||||
@ -29,9 +29,9 @@ public class LobbyConnection implements Runnable {
 | 
				
			|||||||
    private Participant player1;
 | 
					    private Participant player1;
 | 
				
			||||||
    private Participant player2;
 | 
					    private Participant player2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final HashSet<Participant> spectators = new HashSet<>(10);
 | 
					    private final Set<Participant> spectators = new HashSet<>(10);
 | 
				
			||||||
    private final HashMap<SUID, List<Integer>> selection = new HashMap<>(2);
 | 
					    private final Map<SUID, List<Integer>> selection = new HashMap<>(2);
 | 
				
			||||||
    public final HashMap<ParticipantType, CharacterProperties[]> options = new HashMap<>(2);
 | 
					    public final Map<ParticipantType, CharacterProperties[]> options = new HashMap<>(2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private final BlockingQueue<Tuple<Participant, Request[]>> requestQueue = new LinkedBlockingQueue<>();
 | 
					    private final BlockingQueue<Tuple<Participant, Request[]>> requestQueue = new LinkedBlockingQueue<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -57,6 +57,7 @@ public class LobbyConnection implements Runnable {
 | 
				
			|||||||
            Logger.trace("Set client state to playing");
 | 
					            Logger.trace("Set client state to playing");
 | 
				
			||||||
            participant.getClient().setState(ClientState.Playing);
 | 
					            participant.getClient().setState(ClientState.Playing);
 | 
				
			||||||
            participant.state = ParticipantState.Playing;
 | 
					            participant.state = ParticipantState.Playing;
 | 
				
			||||||
 | 
					            participant.sendMessage(generateGameStructure(participant.type));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (participant.type == ParticipantType.Spectator) {
 | 
					        if (participant.type == ParticipantType.Spectator) {
 | 
				
			||||||
            Logger.trace("Adding spectator");
 | 
					            Logger.trace("Adding spectator");
 | 
				
			||||||
@ -116,7 +117,7 @@ public class LobbyConnection implements Runnable {
 | 
				
			|||||||
        return player2;
 | 
					        return player2;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public HashSet<Participant> getSpectators() {
 | 
					    public Set<Participant> getSpectators() {
 | 
				
			||||||
        return spectators;
 | 
					        return spectators;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -158,7 +159,7 @@ public class LobbyConnection implements Runnable {
 | 
				
			|||||||
            response.gameID = gameID;
 | 
					            response.gameID = gameID;
 | 
				
			||||||
            participant.sendMessage(response);
 | 
					            participant.sendMessage(response);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            sendGameStructure(participant.equals(player1), participant.equals(player2), false);
 | 
					            participant.sendMessage(generateGameStructure(participant.type));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            lobby.handleReconnect(participant);
 | 
					            lobby.handleReconnect(participant);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@ -186,7 +187,7 @@ public class LobbyConnection implements Runnable {
 | 
				
			|||||||
            Logger.info("Starting Lobby in main thread for lobby '{}'", gameID);
 | 
					            Logger.info("Starting Lobby in main thread for lobby '{}'", gameID);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        sendGameStructure(true, true, true);
 | 
					        broadcastGameStructure();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.lobby = new Lobby(
 | 
					        this.lobby = new Lobby(
 | 
				
			||||||
                gameID,
 | 
					                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 gameStructureMessage = new GameStructureMessage();
 | 
				
			||||||
        gameStructureMessage.playerOneName = player1.id.getName();
 | 
					        gameStructureMessage.playerOneName = player1.id.getName();
 | 
				
			||||||
        gameStructureMessage.playerTwoName = player2.id.getName();
 | 
					        gameStructureMessage.playerTwoName = player2.id.getName();
 | 
				
			||||||
@ -240,21 +248,9 @@ public class LobbyConnection implements Runnable {
 | 
				
			|||||||
        gameStructureMessage.matchconfig = Server.getPartyConfig();
 | 
					        gameStructureMessage.matchconfig = Server.getPartyConfig();
 | 
				
			||||||
        gameStructureMessage.scenarioconfig = Server.getScenarioConfig();
 | 
					        gameStructureMessage.scenarioconfig = Server.getScenarioConfig();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Sending GameStructure message with fitting assignment
 | 
					        gameStructureMessage.assignment = assignment;
 | 
				
			||||||
        if (p1) {
 | 
					 | 
				
			||||||
            gameStructureMessage.assignment = ParticipantType.PlayerOne;
 | 
					 | 
				
			||||||
            player1.sendMessage(gameStructureMessage);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (p2) {
 | 
					        return gameStructureMessage;
 | 
				
			||||||
            gameStructureMessage.assignment = ParticipantType.PlayerTwo;
 | 
					 | 
				
			||||||
            player2.sendMessage(gameStructureMessage);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (spectators) {
 | 
					 | 
				
			||||||
            gameStructureMessage.assignment = ParticipantType.Spectator;
 | 
					 | 
				
			||||||
            broadcastToSpectators(gameStructureMessage);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private Tuple<Participant, Request[]> pollQueueAsync() {
 | 
					    private Tuple<Participant, Request[]> pollQueueAsync() {
 | 
				
			||||||
 | 
				
			|||||||
@ -43,7 +43,7 @@ class UserManagerTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    void userIsConnectedTest() {
 | 
					    void userIsConnectedTest() {
 | 
				
			||||||
        assertThat(manager.getUserCount()).isEqualTo(0);
 | 
					        assertThat(manager.getUserCount()).isZero();
 | 
				
			||||||
        assertThat(manager.containsConnection(socket1)).isFalse();
 | 
					        assertThat(manager.containsConnection(socket1)).isFalse();
 | 
				
			||||||
        manager.connectUser(socket1);
 | 
					        manager.connectUser(socket1);
 | 
				
			||||||
        assertThat(manager.getUserCount()).isEqualTo(1);
 | 
					        assertThat(manager.getUserCount()).isEqualTo(1);
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user