From a81f1e986a938a1d7a1c2cfc3cc31348b27aef8b Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 26 Mar 2023 13:47:04 -0400 Subject: [PATCH] Fix parenting issue, add more dialogue verbose logs --- NewHorizons/Builder/Props/DetailBuilder.cs | 5 ++++- NewHorizons/Builder/Props/DialogueBuilder.cs | 8 +++++++- NewHorizons/Builder/Props/PropBuildManager.cs | 8 ++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/NewHorizons/Builder/Props/DetailBuilder.cs b/NewHorizons/Builder/Props/DetailBuilder.cs index 7192715e..de12038a 100644 --- a/NewHorizons/Builder/Props/DetailBuilder.cs +++ b/NewHorizons/Builder/Props/DetailBuilder.cs @@ -170,6 +170,8 @@ namespace NewHorizons.Builder.Props if (detail.removeComponents) { + NHLogger.LogVerbose($"Removing all components from [{prop.name}]"); + // Just swap all the children to a new game object var newDetailGO = new GameObject(prop.name); newDetailGO.transform.position = prop.transform.position; @@ -185,7 +187,8 @@ namespace NewHorizons.Builder.Props { child.parent = newDetailGO.transform; } - GameObject.Destroy(prop); + // Have to destroy it right away, else parented props might get attached to the old one + GameObject.DestroyImmediate(prop); prop = newDetailGO; } diff --git a/NewHorizons/Builder/Props/DialogueBuilder.cs b/NewHorizons/Builder/Props/DialogueBuilder.cs index 03fbc290..e05981f1 100644 --- a/NewHorizons/Builder/Props/DialogueBuilder.cs +++ b/NewHorizons/Builder/Props/DialogueBuilder.cs @@ -16,9 +16,15 @@ namespace NewHorizons.Builder.Props // Returns the character dialogue tree and remote dialogue trigger, if applicable. public static (CharacterDialogueTree, RemoteDialogueTrigger) Make(GameObject go, Sector sector, DialogueInfo info, IModBehaviour mod) { + NHLogger.LogVerbose($"[DIALOGUE] Created a new character dialogue [{info.rename}] on [{info.parentPath}]"); + // In stock I think they disable dialogue stuff with conditions // Here we just don't make it at all - if (info.blockAfterPersistentCondition != null && PlayerData.GetPersistentCondition(info.blockAfterPersistentCondition)) return (null, null); + if (!string.IsNullOrEmpty(info.blockAfterPersistentCondition) && PlayerData.GetPersistentCondition(info.blockAfterPersistentCondition)) + { + NHLogger.LogVerbose($"[DIALOGUE] Persistent condition [{info.blockAfterPersistentCondition}] was met for [{info.rename}], aborting"); + return (null, null); + } var dialogue = MakeConversationZone(go, sector, info, mod.ModHelper); diff --git a/NewHorizons/Builder/Props/PropBuildManager.cs b/NewHorizons/Builder/Props/PropBuildManager.cs index 5c00d553..b0b6c76d 100644 --- a/NewHorizons/Builder/Props/PropBuildManager.cs +++ b/NewHorizons/Builder/Props/PropBuildManager.cs @@ -106,11 +106,15 @@ namespace NewHorizons.Builder.Props { try { - DialogueBuilder.Make(go, sector, dialogueInfo, mod); + var (dialogue, trigger) = DialogueBuilder.Make(go, sector, dialogueInfo, mod); + if (dialogue == null) + { + NHLogger.LogVerbose($"[DIALOGUE] Failed to create dialogue [{dialogueInfo.xmlFile}]"); + } } catch (Exception ex) { - NHLogger.LogError($"Couldn't make dialogue [{dialogueInfo.xmlFile}] for [{go.name}]:\n{ex}"); + NHLogger.LogError($"[DIALOGUE] Couldn't make dialogue [{dialogueInfo.xmlFile}] for [{go.name}]:\n{ex}"); } } }