mirror of
				https://github.com/inf112-v20/Fiasko.git
				synced 2025-10-26 23:33:44 +01:00 
			
		
		
		
	Fikset oppdeling og lagt til metode for å merkere døde spillere.
This commit is contained in:
		| @@ -1,14 +1,11 @@ | ||||
| package inf112.fiasko.roborally.networking; | ||||
|  | ||||
| import com.esotericsoftware.kryonet.Connection; | ||||
| import com.esotericsoftware.kryonet.Listener; | ||||
| import com.esotericsoftware.kryonet.Server; | ||||
| import inf112.fiasko.roborally.element_properties.RobotID; | ||||
| import inf112.fiasko.roborally.networking.containers.ErrorResponse; | ||||
| import inf112.fiasko.roborally.elementproperties.RobotID; | ||||
| import inf112.fiasko.roborally.utility.NetworkUtil; | ||||
|  | ||||
| import java.io.IOException; | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
|  | ||||
| /** | ||||
| @@ -31,6 +28,10 @@ public class RoboRallyServer { | ||||
|         server.addListener(listener); | ||||
|     } | ||||
|  | ||||
|     public void setDeadPlayers(List<RobotID> deadRobotList) { | ||||
|         listener.setDeadPlayers(deadRobotList); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Gets a map between connections and their robot id | ||||
|      * @return A mapping between connections and robot ids | ||||
| @@ -59,72 +60,3 @@ public class RoboRallyServer { | ||||
|     } | ||||
| } | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * This listener handles all sending and responses for the server | ||||
|  */ | ||||
| class RoboRallyServerListener extends Listener { | ||||
|     private Connection host; | ||||
|     private final Map<Connection, RobotID> clients; | ||||
|     private final Map<Connection, String> playerNames; | ||||
|  | ||||
|     /** | ||||
|      * Instantiates a new Robo Rally server listener | ||||
|      */ | ||||
|     RoboRallyServerListener() { | ||||
|         super(); | ||||
|         clients = new HashMap<>(); | ||||
|         playerNames = new HashMap<>(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Gets a map between connections and their player name | ||||
|      * @return A mapping between connections and robot ids | ||||
|      */ | ||||
|     public Map<Connection, String> getPlayerNames() { | ||||
|         return playerNames; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Gets a map between connections and their robot id | ||||
|      * @return A mapping between connections and robot ids | ||||
|      */ | ||||
|     public Map<Connection, RobotID> getRobotID() { | ||||
|         return clients; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void received (Connection connection, Object object) { | ||||
|         if (object instanceof String) { | ||||
|             String playerName = (String) object; | ||||
|             if (playerNames.values().contains(playerName)) { | ||||
|                 String errorMessage = "The player name send is already taken."; | ||||
|                 connection.sendTCP(new ErrorResponse(errorMessage, new IllegalArgumentException(errorMessage))); | ||||
|             } else { | ||||
|                 playerNames.put(connection, playerName); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void connected(Connection connection) { | ||||
|         //The first client to connect is assumed to be the host | ||||
|         if (host == null) { | ||||
|             host = connection; | ||||
|         } | ||||
|         //Prevents more than 8 players from connecting at once | ||||
|         if (clients.size() >= 8) { | ||||
|             String errorMessage = "The server already has 8 players. You cannot join."; | ||||
|             connection.sendTCP(new ErrorResponse(errorMessage, new IOException(errorMessage))); | ||||
|             connection.close(); | ||||
|             return; | ||||
|         } | ||||
|         clients.put(connection, RobotID.getRobotIDFromID(clients.size() + 1)); | ||||
|         System.out.println(connection.getRemoteAddressTCP() + " connected"); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void disconnected(Connection connection) { | ||||
|         System.out.println(connection.getRemoteAddressTCP() + " disconnected"); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Steinar Aalstad Lillesund
					Steinar Aalstad Lillesund