mirror of
https://github.com/inf112-v20/Fiasko.git
synced 2025-01-31 23:29:36 +01:00
Fikset oppdeling og lagt til metode for å merkere døde spillere.
This commit is contained in:
parent
99f7578cd7
commit
911a725a26
@ -1,14 +1,11 @@
|
|||||||
package inf112.fiasko.roborally.networking;
|
package inf112.fiasko.roborally.networking;
|
||||||
|
|
||||||
import com.esotericsoftware.kryonet.Connection;
|
import com.esotericsoftware.kryonet.Connection;
|
||||||
import com.esotericsoftware.kryonet.Listener;
|
|
||||||
import com.esotericsoftware.kryonet.Server;
|
import com.esotericsoftware.kryonet.Server;
|
||||||
import inf112.fiasko.roborally.element_properties.RobotID;
|
import inf112.fiasko.roborally.elementproperties.RobotID;
|
||||||
import inf112.fiasko.roborally.networking.containers.ErrorResponse;
|
|
||||||
import inf112.fiasko.roborally.utility.NetworkUtil;
|
import inf112.fiasko.roborally.utility.NetworkUtil;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -31,6 +28,10 @@ public class RoboRallyServer {
|
|||||||
server.addListener(listener);
|
server.addListener(listener);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setDeadPlayers(List<RobotID> deadRobotList) {
|
||||||
|
listener.setDeadPlayers(deadRobotList);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a map between connections and their robot id
|
* Gets a map between connections and their robot id
|
||||||
* @return A mapping between connections and robot ids
|
* @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");
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user