From 78f98c822747245525b010ffdaf250955575f3aa Mon Sep 17 00:00:00 2001 From: Simon Date: Mon, 4 Jun 2018 17:07:20 -0400 Subject: [PATCH] JSONSerialisable objects now have a debug function #156 --- .../net/simon987/npcplugin/HarvesterNPC.java | 9 +++++++++ .../java/net/simon987/npcplugin/RadioTower.java | 16 ++++++++++++++++ .../java/net/simon987/server/game/item/Item.java | 5 +++++ .../simon987/server/game/objects/GameObject.java | 5 +++++ .../net/simon987/server/game/world/TileMap.java | 5 +++++ .../net/simon987/server/io/JSONSerialisable.java | 2 ++ .../server/websocket/ObjectsRequestHandler.java | 10 +++++++--- .../simon987/server/websocket/SocketServer.java | 1 + 8 files changed, 50 insertions(+), 3 deletions(-) diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/HarvesterNPC.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/HarvesterNPC.java index 53da956..ea7b579 100644 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/HarvesterNPC.java +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/HarvesterNPC.java @@ -75,6 +75,15 @@ public class HarvesterNPC extends NonPlayerCharacter { return json; } + @Override + public JSONObject debugJsonSerialise() { + JSONObject json = jsonSerialise(); + + json.put("taskCompleted", getTask().checkCompleted()); + + return json; + } + @Override public Document mongoSerialise() { Document dbObject = super.mongoSerialise(); diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/RadioTower.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/RadioTower.java index dc1c8ea..249acb9 100644 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/RadioTower.java +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/RadioTower.java @@ -5,6 +5,8 @@ import net.simon987.server.game.objects.MessageReceiver; import net.simon987.server.game.objects.Structure; import net.simon987.server.game.objects.Updatable; import org.bson.Document; +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; import java.util.ArrayList; @@ -61,4 +63,18 @@ public class RadioTower extends Structure implements MessageReceiver, Updatable return lastMessages; } + @Override + public JSONObject debugJsonSerialise() { + JSONObject json = super.debugJsonSerialise(); + + JSONArray messages = new JSONArray(); + + for (char[] message : this.messages) { + messages.add(new String(message)); + } + + json.put("messages", messages); + + return json; + } } diff --git a/Server/src/main/java/net/simon987/server/game/item/Item.java b/Server/src/main/java/net/simon987/server/game/item/Item.java index 34f01c8..ecaa914 100644 --- a/Server/src/main/java/net/simon987/server/game/item/Item.java +++ b/Server/src/main/java/net/simon987/server/game/item/Item.java @@ -42,6 +42,11 @@ public abstract class Item implements JSONSerialisable, MongoSerializable { return json; } + @Override + public JSONObject debugJsonSerialise() { + return jsonSerialise(); + } + @Override public Document mongoSerialise() { Document document = new Document(); diff --git a/Server/src/main/java/net/simon987/server/game/objects/GameObject.java b/Server/src/main/java/net/simon987/server/game/objects/GameObject.java index bf6aa61..f855522 100755 --- a/Server/src/main/java/net/simon987/server/game/objects/GameObject.java +++ b/Server/src/main/java/net/simon987/server/game/objects/GameObject.java @@ -234,6 +234,11 @@ public abstract class GameObject implements JSONSerialisable, MongoSerializable return json; } + @Override + public JSONObject debugJsonSerialise() { + return jsonSerialise(); + } + public boolean isAt(int x, int y) { return this.x == x && this.y == y; diff --git a/Server/src/main/java/net/simon987/server/game/world/TileMap.java b/Server/src/main/java/net/simon987/server/game/world/TileMap.java index da2a2d5..cf1481a 100755 --- a/Server/src/main/java/net/simon987/server/game/world/TileMap.java +++ b/Server/src/main/java/net/simon987/server/game/world/TileMap.java @@ -139,6 +139,11 @@ public class TileMap implements JSONSerialisable, MongoSerializable { return json; } + @Override + public JSONObject debugJsonSerialise() { + return jsonSerialise(); + } + @Override public Document mongoSerialise() { diff --git a/Server/src/main/java/net/simon987/server/io/JSONSerialisable.java b/Server/src/main/java/net/simon987/server/io/JSONSerialisable.java index 67c157c..7d54643 100644 --- a/Server/src/main/java/net/simon987/server/io/JSONSerialisable.java +++ b/Server/src/main/java/net/simon987/server/io/JSONSerialisable.java @@ -6,4 +6,6 @@ public interface JSONSerialisable { JSONObject jsonSerialise(); + JSONObject debugJsonSerialise(); + } diff --git a/Server/src/main/java/net/simon987/server/websocket/ObjectsRequestHandler.java b/Server/src/main/java/net/simon987/server/websocket/ObjectsRequestHandler.java index bdd2f10..e1f9834 100644 --- a/Server/src/main/java/net/simon987/server/websocket/ObjectsRequestHandler.java +++ b/Server/src/main/java/net/simon987/server/websocket/ObjectsRequestHandler.java @@ -15,14 +15,14 @@ public class ObjectsRequestHandler implements MessageHandler { @Override public void handle(OnlineUser user, JSONObject json) throws IllegalStateException, IOException { if (json.get("t").equals("object")) { - // LogManager.LOGGER.fine("(WS) Objects request from " + user.getUser().getUsername()); - int x, y; String dimension; + boolean sendDebugInfo; try { x = Long.valueOf((long) json.get("x")).intValue(); y = Long.valueOf((long) json.get("y")).intValue(); dimension = (String) json.get("dimension"); + sendDebugInfo = json.containsKey("debug") && (boolean) json.get("debug"); } catch (Exception e) { LogManager.LOGGER.severe("(WS) Malformed Objects request from " + user.getUser().getUsername()); return; @@ -37,7 +37,11 @@ public class ObjectsRequestHandler implements MessageHandler { for (GameObject object : world.getGameObjects()) { - objects.add(object.jsonSerialise()); + if (sendDebugInfo) { + objects.add(object.debugJsonSerialise()); + } else { + objects.add(object.jsonSerialise()); + } } response.put("t", "object"); diff --git a/Server/src/main/java/net/simon987/server/websocket/SocketServer.java b/Server/src/main/java/net/simon987/server/websocket/SocketServer.java index 58aacb4..1f35506 100644 --- a/Server/src/main/java/net/simon987/server/websocket/SocketServer.java +++ b/Server/src/main/java/net/simon987/server/websocket/SocketServer.java @@ -105,6 +105,7 @@ public class SocketServer { */ public void tick() { + //TODO: refactor this function (1. Create json instance for each user 2. Extract functions 3. rename variables) JSONObject json = new JSONObject(); json.put("t", "tick");