Added automatic updates server side when data is changed
This commit is contained in:
@@ -13,7 +13,7 @@ public class Server {
|
|||||||
|
|
||||||
public void start() {
|
public void start() {
|
||||||
this.sessionController = new SessionController(this);
|
this.sessionController = new SessionController(this);
|
||||||
this.dataController = new DataController();
|
this.dataController = new DataController(sessionController);
|
||||||
|
|
||||||
this.gameThreads = new HashMap<>();
|
this.gameThreads = new HashMap<>();
|
||||||
this.sessionThread = new Thread(sessionController);
|
this.sessionThread = new Thread(sessionController);
|
||||||
|
|||||||
@@ -1,23 +1,23 @@
|
|||||||
package netwerkprog.game.server.controllers;
|
package netwerkprog.game.server.controllers;
|
||||||
|
|
||||||
import netwerkprog.game.util.data.CharacterData;
|
import netwerkprog.game.util.data.*;
|
||||||
import netwerkprog.game.util.data.Data;
|
|
||||||
import netwerkprog.game.util.data.DataCallback;
|
|
||||||
import netwerkprog.game.util.data.DataSource;
|
|
||||||
import netwerkprog.game.util.game.GameCharacter;
|
import netwerkprog.game.util.game.GameCharacter;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
|
||||||
public class DataController implements DataCallback {
|
public class DataController implements DataCallback {
|
||||||
|
private final DataChangeCallback callback;
|
||||||
private final HashSet<GameCharacter> gameCharacters;
|
private final HashSet<GameCharacter> gameCharacters;
|
||||||
|
|
||||||
public DataController() {
|
public DataController(DataChangeCallback callback) {
|
||||||
|
this.callback = callback;
|
||||||
gameCharacters = new HashSet<>();
|
gameCharacters = new HashSet<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addCharacter(GameCharacter gameCharacter) {
|
public void addCharacter(GameCharacter gameCharacter) {
|
||||||
this.gameCharacters.add(gameCharacter);
|
this.gameCharacters.add(gameCharacter);
|
||||||
|
callback.onDataChange(new CharacterData(gameCharacter.getName(), gameCharacter));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addAllCharacters(GameCharacter... gameCharacters) {
|
public void addAllCharacters(GameCharacter... gameCharacters) {
|
||||||
@@ -26,10 +26,12 @@ public class DataController implements DataCallback {
|
|||||||
|
|
||||||
public void removeCharacter(String name) {
|
public void removeCharacter(String name) {
|
||||||
this.gameCharacters.removeIf(character -> character.getName().equals(name));
|
this.gameCharacters.removeIf(character -> character.getName().equals(name));
|
||||||
|
callback.onDataChange(new CharacterData(name, getCharacter(name))); //todo modify Character data to allow for removal.
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeCharacter(GameCharacter character) {
|
public void removeCharacter(GameCharacter gameCharacter) {
|
||||||
this.gameCharacters.remove(character);
|
this.gameCharacters.remove(gameCharacter);
|
||||||
|
callback.onDataChange(new CharacterData(gameCharacter.getName(), gameCharacter)); //todo modify Character data to allow for removal.
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clearCharacters() {
|
public void clearCharacters() {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import netwerkprog.game.server.ServerClient;
|
|||||||
import netwerkprog.game.util.application.Controller;
|
import netwerkprog.game.util.application.Controller;
|
||||||
import netwerkprog.game.util.data.ConnectionData;
|
import netwerkprog.game.util.data.ConnectionData;
|
||||||
import netwerkprog.game.util.data.Data;
|
import netwerkprog.game.util.data.Data;
|
||||||
|
import netwerkprog.game.util.data.DataChangeCallback;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.ObjectInputStream;
|
import java.io.ObjectInputStream;
|
||||||
@@ -18,7 +19,7 @@ import java.util.Set;
|
|||||||
/**
|
/**
|
||||||
* The sessionController manages any connections from new clients and assigns individual threads to said clients.
|
* The sessionController manages any connections from new clients and assigns individual threads to said clients.
|
||||||
*/
|
*/
|
||||||
public class SessionController extends Controller {
|
public class SessionController extends Controller implements DataChangeCallback {
|
||||||
private Server server;
|
private Server server;
|
||||||
private ServerSocket serverSocket;
|
private ServerSocket serverSocket;
|
||||||
private final ArrayList<ServerClient> clients = new ArrayList<>();
|
private final ArrayList<ServerClient> clients = new ArrayList<>();
|
||||||
@@ -163,4 +164,9 @@ public class SessionController extends Controller {
|
|||||||
}
|
}
|
||||||
System.out.println("[SERVER] networking shutdown ");
|
System.out.println("[SERVER] networking shutdown ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDataChange(Data data) {
|
||||||
|
serverMessage(data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package netwerkprog.game.util.data;
|
||||||
|
|
||||||
|
public interface DataChangeCallback {
|
||||||
|
void onDataChange(Data data);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user