diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/Factory.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/Factory.java new file mode 100644 index 0000000..5e5dedd --- /dev/null +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/Factory.java @@ -0,0 +1,57 @@ +package net.simon987.npcplugin; + +import net.simon987.server.game.GameObject; +import net.simon987.server.game.Updatable; +import org.json.simple.JSONObject; + +public class Factory extends GameObject implements Updatable { + + private static final int MAP_INFO = 0x0200; + + public static final int ID = 3; + + @Override + public char getMapInfo() { + return MAP_INFO; + } + + @Override + public void update() { + System.out.println("Updating Factory..."); + } + + @Override + public boolean isAt(int x, int y) { + + /* + * Object is 2x2 tiles, the (x,y) coordinates of the object being + * at top-left. + * # . + * . . + */ + return (x == getX() + 1 || x == getX()) && (y == getY() + 1 || y == getY()); + } + + @Override + public JSONObject serialise() { + + JSONObject json = new JSONObject(); + + json.put("i", getObjectId()); + json.put("x", getX()); + json.put("y", getY()); + json.put("t", ID); + + return json; + } + + public static Factory deserialise(JSONObject json) { + + Factory factory = new Factory(); + factory.setObjectId((int) (long) json.get("i")); + factory.setX((int) (long) json.get("x")); + factory.setY((int) (long) json.get("y")); + + return factory; + } +} diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/HarvestTask.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/HarvestTask.java index a5f5ef8..00cee21 100644 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/HarvestTask.java +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/HarvestTask.java @@ -1,7 +1,6 @@ package net.simon987.npcplugin; -import net.simon987.server.GameServer; import net.simon987.server.assembly.Util; import net.simon987.server.game.Direction; import net.simon987.server.game.GameObject; @@ -85,16 +84,7 @@ public class HarvestTask extends NPCTask { if (nextWorldDirection == null) { - //Stay near the center of the map 50% of the time - if (random.nextBoolean()) { - - nextWorldDirection = Direction.getDirectionTo(npc.getX(), npc.getY(), - GameServer.INSTANCE.getConfig().getInt("new_user_worldX"), - GameServer.INSTANCE.getConfig().getInt("new_user_worldY")); - - } else { - nextWorldDirection = Direction.getDirection(random.nextInt(3)); - } + nextWorldDirection = Direction.getDirection(random.nextInt(3)); pause += 6; } 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 9d6e7cb..89931b4 100644 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/HarvesterNPC.java +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/HarvesterNPC.java @@ -6,7 +6,7 @@ import org.json.simple.JSONObject; public class HarvesterNPC extends NonPlayerCharacter { - public static final int ID = 10; //todo change + public static final int ID = 10; public HarvesterNPC() { @@ -44,7 +44,7 @@ public class HarvesterNPC extends NonPlayerCharacter { json.put("hp", hp); json.put("energy", energy); json.put("action", getAction().ordinal()); - json.put("t", 10); + json.put("t", ID); return json; } diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/NpcPlugin.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/NpcPlugin.java index ceb8311..2ee01fc 100644 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/NpcPlugin.java +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/NpcPlugin.java @@ -26,6 +26,8 @@ public class NpcPlugin extends ServerPlugin implements GameObjectDeserializer { if (objType == HarvesterNPC.ID) { return HarvesterNPC.deserialize(object); + } else if (objType == Factory.ID) { + return Factory.deserialise(object); } return null; diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/event/WorldUpdateListener.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/event/WorldUpdateListener.java index 2a4b43c..e99b0c8 100644 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/event/WorldUpdateListener.java +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/event/WorldUpdateListener.java @@ -1,5 +1,6 @@ package net.simon987.npcplugin.event; +import net.simon987.npcplugin.Factory; import net.simon987.npcplugin.HarvesterNPC; import net.simon987.npcplugin.NonPlayerCharacter; import net.simon987.server.GameServer; @@ -31,7 +32,7 @@ public class WorldUpdateListener implements GameEventListener { if (ok) { ok = false; - LogManager.LOGGER.info("Spawning Harvester\n--------------------------------------"); + LogManager.LOGGER.info("Spawning Harvester + Factory\n--------------------------------------"); NonPlayerCharacter npc = new HarvesterNPC(); @@ -45,12 +46,22 @@ public class WorldUpdateListener implements GameEventListener { world.getGameObjects().add(npc); world.incUpdatable(); } + + //Factory test + Factory factory = new Factory(); + + factory.setWorld(world); + factory.setObjectId(GameServer.INSTANCE.getGameUniverse().getNextObjectId()); + factory.setX(7); + factory.setY(11); + world.getGameObjects().add(factory); + world.incUpdatable(); + } } - - } + } diff --git a/Server/src/main/java/net/simon987/server/game/TileMap.java b/Server/src/main/java/net/simon987/server/game/TileMap.java index f6faaba..f13c27b 100755 --- a/Server/src/main/java/net/simon987/server/game/TileMap.java +++ b/Server/src/main/java/net/simon987/server/game/TileMap.java @@ -119,7 +119,7 @@ public class TileMap implements JSONSerialisable { deflaterOutputStream.close(); byte[] compressedBytes = stream.toByteArray(); - json.put("zipTerrain", new String(Base64.getEncoder().encode(compressedBytes))); + json.put("z", new String(Base64.getEncoder().encode(compressedBytes))); } catch (IOException e) { e.printStackTrace(); @@ -133,7 +133,7 @@ public class TileMap implements JSONSerialisable { TileMap tileMap = new TileMap(World.WORLD_SIZE, World.WORLD_SIZE); - byte[] compressedBytes = Base64.getDecoder().decode((String) object.get("zipTerrain")); + byte[] compressedBytes = Base64.getDecoder().decode((String) object.get("z")); try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); diff --git a/config.properties b/config.properties index dca7da3..7b0cf1b 100644 --- a/config.properties +++ b/config.properties @@ -17,7 +17,7 @@ cert_path=certificates # ---------------------------------------------- # Length of a tick in ms -tick_length=125 +tick_length=1000 # Default offset of the origin (starting point of code execution) in words org_offset=512 # Address of the stack bottom diff --git a/plugins/Plant.jar b/plugins/Plant.jar index 238f938..4c76786 100644 Binary files a/plugins/Plant.jar and b/plugins/Plant.jar differ diff --git a/plugins/Plugin NPC.jar b/plugins/Plugin NPC.jar index 67072c8..e74e8f4 100644 Binary files a/plugins/Plugin NPC.jar and b/plugins/Plugin NPC.jar differ