Debug: Add detailed logging to ProcessBuildingHook
Added step-by-step logging to identify where building load fails: - GetPlaceableByUniqueName result - Each initialization step - Exception details if any step fails 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
72
Main.cs
72
Main.cs
@@ -1394,38 +1394,60 @@ namespace KCM
|
|||||||
{
|
{
|
||||||
if (KCClient.client.IsConnected)
|
if (KCClient.client.IsConnected)
|
||||||
{
|
{
|
||||||
|
Main.helper.Log($"[ProcessBuilding] START - {structureData.uniqueName}");
|
||||||
|
|
||||||
Building Building = GameState.inst.GetPlaceableByUniqueName(structureData.uniqueName);
|
try
|
||||||
bool flag = Building;
|
|
||||||
if (flag)
|
|
||||||
{
|
{
|
||||||
Building building = UnityEngine.Object.Instantiate<Building>(Building);
|
Building Building = GameState.inst.GetPlaceableByUniqueName(structureData.uniqueName);
|
||||||
building.transform.position = structureData.globalPosition;
|
Main.helper.Log($"[ProcessBuilding] GetPlaceable: {(Building != null ? "OK" : "NULL")}");
|
||||||
building.Init();
|
|
||||||
building.transform.SetParent(p.buildingContainer.transform, true);
|
|
||||||
structureData.Unpack(building);
|
|
||||||
p.AddBuilding(building);
|
|
||||||
|
|
||||||
// Place building in world and setup pathing
|
if (Building)
|
||||||
World.inst.PlaceFromLoad(building);
|
|
||||||
structureData.UnpackStage2(building);
|
|
||||||
|
|
||||||
Main.helper.Log($"Loading player id: {p.PlayerLandmassOwner.teamId}");
|
|
||||||
Main.helper.Log($"loading building: {building.FriendlyName}");
|
|
||||||
Main.helper.Log($" (teamid: {building.TeamID()})");
|
|
||||||
Main.helper.Log(p.ToString());
|
|
||||||
bool flag2 = building.GetComponent<Keep>() != null && building.TeamID() == p.PlayerLandmassOwner.teamId;
|
|
||||||
Main.helper.Log("Set keep? " + flag2);
|
|
||||||
if (flag2)
|
|
||||||
{
|
{
|
||||||
p.keep = building.GetComponent<Keep>();
|
Building building = UnityEngine.Object.Instantiate<Building>(Building);
|
||||||
Main.helper.Log(p.keep.ToString());
|
Main.helper.Log($"[ProcessBuilding] Instantiated");
|
||||||
|
|
||||||
|
building.transform.position = structureData.globalPosition;
|
||||||
|
Main.helper.Log($"[ProcessBuilding] Position set: {structureData.globalPosition}");
|
||||||
|
|
||||||
|
building.Init();
|
||||||
|
Main.helper.Log($"[ProcessBuilding] Init done");
|
||||||
|
|
||||||
|
building.transform.SetParent(p.buildingContainer.transform, true);
|
||||||
|
Main.helper.Log($"[ProcessBuilding] SetParent done");
|
||||||
|
|
||||||
|
structureData.Unpack(building);
|
||||||
|
Main.helper.Log($"[ProcessBuilding] Unpack done");
|
||||||
|
|
||||||
|
p.AddBuilding(building);
|
||||||
|
Main.helper.Log($"[ProcessBuilding] AddBuilding done");
|
||||||
|
|
||||||
|
World.inst.PlaceFromLoad(building);
|
||||||
|
Main.helper.Log($"[ProcessBuilding] PlaceFromLoad done");
|
||||||
|
|
||||||
|
structureData.UnpackStage2(building);
|
||||||
|
Main.helper.Log($"[ProcessBuilding] UnpackStage2 done");
|
||||||
|
|
||||||
|
bool isKeep = building.GetComponent<Keep>() != null && building.TeamID() == p.PlayerLandmassOwner.teamId;
|
||||||
|
if (isKeep)
|
||||||
|
{
|
||||||
|
p.keep = building.GetComponent<Keep>();
|
||||||
|
Main.helper.Log($"[ProcessBuilding] Keep set");
|
||||||
|
}
|
||||||
|
|
||||||
|
__result = building;
|
||||||
|
Main.helper.Log($"[ProcessBuilding] SUCCESS - {structureData.uniqueName}");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Main.helper.Log($"[ProcessBuilding] FAILED - {structureData.uniqueName} not found in GameState");
|
||||||
|
__result = null;
|
||||||
}
|
}
|
||||||
__result = building;
|
|
||||||
}
|
}
|
||||||
else
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Main.helper.Log(structureData.uniqueName + " failed to load correctly");
|
Main.helper.Log($"[ProcessBuilding] EXCEPTION: {structureData.uniqueName}");
|
||||||
|
Main.helper.Log($"[ProcessBuilding] Error: {e.Message}");
|
||||||
|
Main.helper.Log($"[ProcessBuilding] Stack: {e.StackTrace}");
|
||||||
__result = null;
|
__result = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user