edited SeaSynchronizer , EditorState, ServerGameLogic

added JavaDocs for the new and adapted functions
added a new invalid map for testing purposes
fixed implemented the logic to check for invalid maps in the method received in ServerGameLogic
This commit is contained in:
Lukas Bauer
2024-10-03 13:28:41 +02:00
parent 07e922d01e
commit ce5e908349
4 changed files with 107 additions and 7 deletions

View File

@@ -227,7 +227,7 @@ private ShipMap harbor() {
}
/**
* Loads a map from the specified file.
* Loads a map from the specified file. Also Checks if the map is valid
*
* @param file the file to load the map from
* @throws IOException if the map cannot be loaded
@@ -267,10 +267,20 @@ public boolean maySaveMap() {
return harbor().getItems().isEmpty();
}
/**
* Checks if the map is valid in terms of overlapping and if the ship is within the boundries of the map
* @param dto DataTransferObject is the loaded json file
* @return returns true if the map is valid, false otherwhise
*/
private boolean validMap(ShipMapDTO dto) {
return inBoundsClient(dto) && overLapClient(dto);
}
/**
* Checks if the Ships overlap on the map
* @param dto DataTransferObject is the loaded json file
* @return returns true if the ships arent overlapping, false otherwhise
*/
private boolean overLapClient(ShipMapDTO dto) {
List<Battleship> battleshipList = dto.getShips();
@@ -286,6 +296,11 @@ private boolean overLapClient(ShipMapDTO dto) {
return true;
}
/**
* Checks if the Ship is in the map Boundries
* @param dto DataTransferObject is the loaded json file
* @return true if the ship is in the maps boundriess, false otherwhise
*/
private boolean inBoundsClient(ShipMapDTO dto) {
int widht = dto.getWidth();
int height = dto.getHeight();

View File

@@ -134,7 +134,7 @@ public Player addPlayer(int id) {
}
/**
* Handles the reception of a MapMessage.
* Handles the reception of a MapMessage. Also Checks if the given map is valid or invalid
*
* @param msg the received MapMessage
* @param from the ID of the sender client
@@ -143,16 +143,19 @@ public Player addPlayer(int id) {
public void received(MapMessage msg, int from) {
if (state != ServerState.SET_UP)
LOGGER.log(Level.ERROR, "playerReady not allowed in {0}", state); //NON-NLS
else if(!validMap(msg,from)){
LOGGER.log(Level.ERROR, "Map message not valid",state);
}
else
playerReady(getPlayerById(from), msg.getShips());
}
/**
* Checks if the map is Valid in terms of boundries and overlaps
*
* *
* @param msg the received MapMessage
* @param id the ID of the sender client
* @return
* @return returns true if the map is valid, false otherwhise
*/
private boolean validMap(MapMessage msg, int id) {
return inBounds(msg, id) && overLap(msg);
@@ -162,7 +165,7 @@ private boolean validMap(MapMessage msg, int id) {
* Checks if the Ships overLap
*
* @param msg the received MapMessage
* @return
* @return returns true if the ships arent overlapping, false otherwhise
*/
private boolean overLap(MapMessage msg) {
List<Battleship> battleshipList = msg.getShips();
@@ -184,7 +187,7 @@ private boolean overLap(MapMessage msg) {
*
* @param msg the received MapMessage
* @param id the ID of the sender client
* @return
* @return returns true if the ship is within the maps boundries, false otherwhise
*/
private boolean inBounds(MapMessage msg, int id) {
int widht = getPlayerById(id).getMap().getWidth();