From 5841db2a0da8c1b83e4d967a2ee7469fc8c9c109 Mon Sep 17 00:00:00 2001
From: FatBoy-DOTC <justin.chucksinsulating@gmail.com>
Date: Sun, 2 Mar 2025 22:30:24 -0600
Subject: [PATCH] serialize dungeon for teleport

---
 src/engine/Dungeons/Dungeon.java              | 93 +++++++++++++++++++
 .../client/msg/TeleportRepledgeListMsg.java   |  4 +-
 2 files changed, 96 insertions(+), 1 deletion(-)

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() {