Implemented server re-registration when a server closes / updates

- When a server is closed, it will disappear from the server list
- When a player joins a server, the number of spaces left will decrease
- Servers now disappear instead of duplicating
- Added tests for ServerDescription
- Added documentation for new classes

Tags: #story[1247]
This commit is contained in:
Michael Rausch
2017-09-01 16:05:47 +12:00
parent 0c5d661995
commit b346d5a706
10 changed files with 316 additions and 136 deletions
@@ -1,14 +1,6 @@
package seng302.visualiser.controllers;
import java.io.IOException;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.URL;
import java.util.*;
import com.sun.security.ntlm.Server;
import cucumber.api.java.en.But;
import javafx.application.Platform;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Alert;
@@ -17,12 +9,20 @@ import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.GridPane;
import seng302.gameServer.GameState;
import seng302.gameServer.ServerDescription;
import seng302.visualiser.GameClient;
import seng302.visualiser.ServerListener;
import seng302.visualiser.ServerListenerDelegate;
import java.io.IOException;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.URL;
import java.util.Enumeration;
import java.util.List;
import java.util.ResourceBundle;
/**
* A Class describing the actions of the start screen controller
* Created by wmu16 on 10/07/17.
@@ -192,6 +192,10 @@ public class StartScreenController implements Initializable, ServerListenerDeleg
return ipAddress;
}
/**
* Update the server list with new information
* @param servers The current list of servers
*/
private void refreshServerList(List<ServerDescription> servers){
this.serverList.getItems().clear();
@@ -204,20 +208,20 @@ public class StartScreenController implements Initializable, ServerListenerDeleg
public void serverRemoved(List<ServerDescription> currentServers) {
this.servers = currentServers;
refreshServerList(currentServers);
Platform.runLater(() -> refreshServerList(currentServers));
}
@Override
public void serverDetected(ServerDescription serverDescription, List<ServerDescription> servers) {
this.servers = servers;
refreshServerList(servers);
Platform.runLater(() -> refreshServerList(servers));
}
private void joinLobbyClicked() {
Integer selectedServer = serverList.getSelectionModel().getSelectedIndex();
if (this.servers == null || selectedServer >= this.servers.size()){
if (this.servers == null || selectedServer >= this.servers.size() || selectedServer < 0){
Alert alert = new Alert(Alert.AlertType.ERROR, "Invalid server selected");
alert.showAndWait();
return;