diff --git a/core/src/netwerkprog/game/server/Server.java b/core/src/netwerkprog/game/server/Server.java index fbb5004..96bc1b0 100644 --- a/core/src/netwerkprog/game/server/Server.java +++ b/core/src/netwerkprog/game/server/Server.java @@ -13,7 +13,7 @@ public class Server { public void start() { this.sessionController = new SessionController(this); - this.dataController = new DataController(); + this.dataController = new DataController(sessionController); this.gameThreads = new HashMap<>(); this.sessionThread = new Thread(sessionController); diff --git a/core/src/netwerkprog/game/server/controllers/DataController.java b/core/src/netwerkprog/game/server/controllers/DataController.java index 2e48320..bdc1bb7 100644 --- a/core/src/netwerkprog/game/server/controllers/DataController.java +++ b/core/src/netwerkprog/game/server/controllers/DataController.java @@ -1,23 +1,23 @@ package netwerkprog.game.server.controllers; -import netwerkprog.game.util.data.CharacterData; -import netwerkprog.game.util.data.Data; -import netwerkprog.game.util.data.DataCallback; -import netwerkprog.game.util.data.DataSource; +import netwerkprog.game.util.data.*; import netwerkprog.game.util.game.GameCharacter; import java.util.Arrays; import java.util.HashSet; public class DataController implements DataCallback { + private final DataChangeCallback callback; private final HashSet gameCharacters; - public DataController() { + public DataController(DataChangeCallback callback) { + this.callback = callback; gameCharacters = new HashSet<>(); } public void addCharacter(GameCharacter gameCharacter) { this.gameCharacters.add(gameCharacter); + callback.onDataChange(new CharacterData(gameCharacter.getName(), gameCharacter)); } public void addAllCharacters(GameCharacter... gameCharacters) { @@ -26,10 +26,12 @@ public class DataController implements DataCallback { public void removeCharacter(String 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) { - this.gameCharacters.remove(character); + public void removeCharacter(GameCharacter gameCharacter) { + this.gameCharacters.remove(gameCharacter); + callback.onDataChange(new CharacterData(gameCharacter.getName(), gameCharacter)); //todo modify Character data to allow for removal. } public void clearCharacters() { diff --git a/core/src/netwerkprog/game/util/data/DataChangeCallback.java b/core/src/netwerkprog/game/util/data/DataChangeCallback.java new file mode 100644 index 0000000..ea78a7f --- /dev/null +++ b/core/src/netwerkprog/game/util/data/DataChangeCallback.java @@ -0,0 +1,5 @@ +package netwerkprog.game.util.data; + +public interface DataChangeCallback { + void onDataChange(Data data); +}