Added automatic updates server side when data is changed

This commit is contained in:
MickWerf
2020-06-07 14:12:48 +02:00
parent b287360012
commit 60d478bb1e
4 changed files with 22 additions and 9 deletions

View File

@@ -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);

View File

@@ -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() {

View File

@@ -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);
}
} }

View File

@@ -0,0 +1,5 @@
package netwerkprog.game.util.data;
public interface DataChangeCallback {
void onDataChange(Data data);
}