diff --git a/core/src/netwerkprog/game/client/Client.java b/core/src/netwerkprog/game/client/Client.java index e17ccd1..93d6d2a 100644 --- a/core/src/netwerkprog/game/client/Client.java +++ b/core/src/netwerkprog/game/client/Client.java @@ -99,6 +99,6 @@ public class Client extends Controller implements ParserCallback { @Override public void onDataReceived(String data) { - send(data); + System.out.println(data); } } diff --git a/core/src/netwerkprog/game/server/Parser.java b/core/src/netwerkprog/game/server/Parser.java index 2da6f75..c4dcb44 100644 --- a/core/src/netwerkprog/game/server/Parser.java +++ b/core/src/netwerkprog/game/server/Parser.java @@ -1,15 +1,43 @@ package netwerkprog.game.server; +import netwerkprog.game.client.game.characters.DevTest1; +import netwerkprog.game.client.game.characters.DevTest2; +import netwerkprog.game.client.game.characters.DevTest3; +import netwerkprog.game.server.controllers.DataController; import netwerkprog.game.util.data.ParserCallback; +import java.util.Scanner; + public class Parser { private final ParserCallback callback; + private Scanner scanner; + + private final DataController dataController; public Parser(ParserCallback callback) { this.callback = callback; + this.dataController = new DataController(); + + this.dataController.addAllCharacters(new DevTest1(), new DevTest2(), new DevTest3()); } public void parse(String request) { - callback.onDataReceived(null); + String data = ""; + this.scanner = new Scanner(request); + scanner.useDelimiter("~"); + String type = scanner.next(); + String name = scanner.next(); + + if (type.equals("character")) { + try { + data = dataController.getCharacter(name).toString(); + } catch (IllegalArgumentException ex) { + data = ex.getMessage(); + } + } + + + + callback.onDataReceived(data); } } diff --git a/core/src/netwerkprog/game/server/controllers/DataController.java b/core/src/netwerkprog/game/server/controllers/DataController.java index 79e8a02..f1de4bc 100644 --- a/core/src/netwerkprog/game/server/controllers/DataController.java +++ b/core/src/netwerkprog/game/server/controllers/DataController.java @@ -1,8 +1,47 @@ package netwerkprog.game.server.controllers; +import netwerkprog.game.util.game.GameCharacter; + +import java.util.Arrays; +import java.util.HashSet; + public class DataController { + private final HashSet gameCharacters; + public DataController() { + gameCharacters = new HashSet<>(); } + public void addCharacter(GameCharacter gameCharacter) { + this.gameCharacters.add(gameCharacter); + } + public void addAllCharacters(GameCharacter... gameCharacters) { + this.gameCharacters.addAll(Arrays.asList(gameCharacters)); + } + + public void removeCharacter(String name) { + this.gameCharacters.removeIf(character -> character.getName().equals(name)); + } + + public void removeCharacter(GameCharacter character) { + this.gameCharacters.remove(character); + } + + public void clearCharacters() { + this.gameCharacters.clear(); + } + + public HashSet getGameCharacters() { + return gameCharacters; + } + + public GameCharacter getCharacter(String name) throws IllegalArgumentException { + for (GameCharacter character : gameCharacters) { + if (character.getName().equals(name)) { + return character; + } + } + throw new IllegalArgumentException("The character does not exist."); + } } diff --git a/core/src/netwerkprog/game/util/game/GameCharacter.java b/core/src/netwerkprog/game/util/game/GameCharacter.java index 3a740ee..b871fbd 100644 --- a/core/src/netwerkprog/game/util/game/GameCharacter.java +++ b/core/src/netwerkprog/game/util/game/GameCharacter.java @@ -26,6 +26,10 @@ public abstract class GameCharacter extends Actor implements Comparable