diff --git a/src/engine/Dungeons/Dungeon.java b/src/engine/Dungeons/Dungeon.java index 05ec4ef2..bb6e6aad 100644 --- a/src/engine/Dungeons/Dungeon.java +++ b/src/engine/Dungeons/Dungeon.java @@ -2,12 +2,17 @@ package engine.Dungeons; import engine.Enum; import engine.InterestManagement.WorldGrid; +import engine.gameManager.BuildingManager; import engine.gameManager.PowersManager; +import engine.gameManager.ZoneManager; import engine.math.Vector3fImmutable; +import engine.net.ByteBufferWriter; import engine.objects.*; import engine.powers.EffectsBase; import engine.server.MBServerStatics; +import org.pmw.tinylog.Logger; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashSet; @@ -58,4 +63,92 @@ public class Dungeon { eff.endEffect(); } } + + public static void serializeForClientMsgTeleport(ByteBufferWriter writer) { + Guild rulingGuild = Guild.getErrantGuild(); + Guild rulingNation = Guild.getErrantGuild(); + + Zone zone = ZoneManager.getZoneByUUID(994); + // Begin Serialzing soverign guild data + writer.putInt(Enum.GameObjectType.Zone.ordinal()); + writer.putInt(994); + writer.putString("Whitehorn Citadel"); + writer.putInt(rulingGuild.getObjectType().ordinal()); + writer.putInt(rulingGuild.getObjectUUID()); + + writer.putString(rulingGuild.getName()); + writer.putString(""); + writer.putString(rulingGuild.getLeadershipType()); + + // Serialize guild ruler's name + // If tree is abandoned blank out the name + // to allow them a rename. + + writer.putString(""); + + writer.putInt(rulingGuild.getCharter()); + writer.putInt(0); // always 00000000 + + writer.put((byte)0); + + writer.put((byte) 1); + writer.put((byte) 1); // *** Refactor: What are these flags? + writer.put((byte) 1); + writer.put((byte) 1); + writer.put((byte) 1); + + GuildTag._serializeForDisplay(rulingGuild.getGuildTag(), writer); + GuildTag._serializeForDisplay(rulingNation.getGuildTag(), writer); + + writer.putInt(0);// TODO Implement description text + + writer.put((byte) 1); + writer.put((byte) 0); + writer.put((byte) 1); + + // Begin serializing nation guild info + + if (rulingNation.isEmptyGuild()) { + writer.putInt(rulingGuild.getObjectType().ordinal()); + writer.putInt(rulingGuild.getObjectUUID()); + } else { + writer.putInt(rulingNation.getObjectType().ordinal()); + writer.putInt(rulingNation.getObjectUUID()); + } + + + // Serialize nation name + + if (rulingNation.isEmptyGuild()) + writer.putString("None"); + else + writer.putString(rulingNation.getName()); + + writer.putInt(1); + + writer.putInt(0xFFFFFFFF); + + writer.putInt(0); + + if (rulingNation.isEmptyGuild()) + writer.putString(" "); + + writer.putLocalDateTime(LocalDateTime.now()); + + //location + Vector3fImmutable loc = Vector3fImmutable.getRandomPointOnCircle(BuildingManager.getBuilding(2827951).loc,30f); + + writer.putFloat(loc.x); + writer.putFloat(loc.y); + writer.putFloat(loc.z); + + writer.putInt(0); + + writer.put((byte) 1); + writer.put((byte) 0); + writer.putInt(0x64); + writer.put((byte) 0); + writer.put((byte) 0); + writer.put((byte) 0); + } } diff --git a/src/engine/net/client/msg/TeleportRepledgeListMsg.java b/src/engine/net/client/msg/TeleportRepledgeListMsg.java index 69b73e43..84e60fd8 100644 --- a/src/engine/net/client/msg/TeleportRepledgeListMsg.java +++ b/src/engine/net/client/msg/TeleportRepledgeListMsg.java @@ -10,6 +10,7 @@ package engine.net.client.msg; +import engine.Dungeons.Dungeon; import engine.net.AbstractConnection; import engine.net.AbstractNetMsg; import engine.net.ByteBufferReader; @@ -108,7 +109,7 @@ public class TeleportRepledgeListMsg extends ClientNetMsg { for (int i = 0; i < 3; i++) writer.putInt(0); - writer.putInt(cities.size() + mines.size()); + writer.putInt(cities.size() + mines.size() + 1); for (City city : cities) City.serializeForClientMsg(city, writer); @@ -116,6 +117,7 @@ public class TeleportRepledgeListMsg extends ClientNetMsg { for(Mine mine : mines) Mine.serializeForClientMsgTeleport(mine, writer); + Dungeon.serializeForClientMsgTeleport(writer); } public PlayerCharacter getPlayer() {