From 268437dfc5c6f4611760b460a9e19dddecfc193d Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 14 Aug 2022 14:29:23 -0400 Subject: [PATCH] Finalize credits #246 --- NewHorizons/Assets/addon-manifest.json | 5 ++- NewHorizons/Handlers/CreditsHandler.cs | 58 ++++++++++++++++++++------ NewHorizons/Main.cs | 4 +- 3 files changed, 50 insertions(+), 17 deletions(-) diff --git a/NewHorizons/Assets/addon-manifest.json b/NewHorizons/Assets/addon-manifest.json index bf105729..4a7dd87c 100644 --- a/NewHorizons/Assets/addon-manifest.json +++ b/NewHorizons/Assets/addon-manifest.json @@ -9,9 +9,10 @@ "Trifid#Tester\n#Programmer", "Nageld#Programmer", "Ernesto#Fish", - "with help from#Raicuparta\n#dgarroDC\n#jtsalomo\n#and the modding community", + "With help from#Raicuparta\n#dgarroDC\n#jtsalomo\n#and the modding community", + " ", "Based off Marshmallow made by#Mister_Nebula", - "with help from#AmazingAlek\n#Raicuparta\n#and the Outer Wilds discord server", + "With help from#AmazingAlek\n#Raicuparta\n#and the Outer Wilds discord server", " ", "This work is unofficial Fan Content" ] diff --git a/NewHorizons/Handlers/CreditsHandler.cs b/NewHorizons/Handlers/CreditsHandler.cs index 13161548..9d7e7405 100644 --- a/NewHorizons/Handlers/CreditsHandler.cs +++ b/NewHorizons/Handlers/CreditsHandler.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using System.Xml; using UnityEngine; -using static RumbleManager.Rumble; using Logger = NewHorizons.Utility.Logger; namespace NewHorizons.Handlers @@ -42,9 +41,9 @@ namespace NewHorizons.Handlers { var finalCredits = xml.SelectSingleNode("Credits/section"); - // Fade credits look wrong right now bc it works with just one column not two /* - var nodeFade = CreateFadeCreditsFromList(xml, sectionName, entries, true); + * Looks bad, would need more customization, complicated, messes up music timing, wont do for now + var nodeFade = CreateFadeCreditsFromList(xml, sectionName, entries); finalCredits.InsertAfter(nodeFade, finalCredits.ChildNodes[0]); */ @@ -66,6 +65,8 @@ namespace NewHorizons.Handlers return null; } + // Looked bad so not used + /* private static XmlNode CreateFadeCreditsFromList(XmlDocument doc, string title, string[] entries) { var rootSection = MakeNode(doc, "section", new Dictionary() @@ -98,7 +99,16 @@ namespace NewHorizons.Handlers for (int i = 0; i < entries.Length; i++) { var entry = entries[i]; - entry = entry.Split('#')[0]; + + if (entry.Contains("#")) + { + // Replace first one with a space + entry = RemoveExcessSpaces(entry); + var indexOfColon = entry.IndexOf(":"); + var firstPart = entry.Substring(0, Math.Min(entry.IndexOf("#"), indexOfColon == -1 ? int.MaxValue : indexOfColon)); + entry = firstPart + ": " + entry.Substring(entry.IndexOf("#") + 1); + } + entry = entry.Replace("#", ", ").Replace("/n", ""); xmlText += $"{entry}\n"; xmlText += "\n"; @@ -107,11 +117,19 @@ namespace NewHorizons.Handlers xmlText += ""; rootSection.AppendChild(titleLayout); - rootSection.AppendChild(StringToNode(doc, xmlText)); + foreach (var node in StringToNodes(doc, xmlText)) rootSection.AppendChild(node); return rootSection; } + private static string RemoveExcessSpaces(string s) + { + var options = RegexOptions.None; + Regex regex = new Regex("[ ]{2,}", options); + return regex.Replace(s, " "); + } + */ + private static XmlNode CreateScrollCreditsFromList(XmlDocument doc, string title, string[] entries) { var rootSection = MakeNode(doc, "section", new Dictionary() @@ -136,32 +154,48 @@ namespace NewHorizons.Handlers titleNode.InnerText = title; titleLayout.AppendChild(titleNode); - var type = "TwoColumnScrollAlignRightLeft"; - var xmlText = $"\n"; + + var xmlText = ""; + bool? flag = null; for (int i = 0; i < entries.Length; i++) { var entry = entries[i]; + var twoColumn = entry.Contains("#"); + if (flag != twoColumn) + { + if (i != 0) xmlText += ""; + var type = twoColumn ? "TwoColumnScrollAlignRightLeft" : "SingleColumnScrollCentered"; + xmlText += $"\n"; + flag = twoColumn; + } + xmlText += $"{entry}\n"; + xmlText += ""; } xmlText += "\n"; xmlText += ""; rootSection.AppendChild(titleLayout); - rootSection.AppendChild(StringToNode(doc, xmlText)); + foreach(var node in StringToNodes(doc, xmlText)) rootSection.AppendChild(node); return rootSection; } - private static XmlNode StringToNode(XmlDocument docContext, string text) + private static XmlNode[] StringToNodes(XmlDocument docContext, string text) { var doc = new XmlDocument(); - doc.LoadXml(text); + // Doing this funny thing so that theres a single parent root thing + doc.LoadXml("" + text + ""); // ArgumentException: The node to be inserted is from a different document context. - var importedNode = docContext.ImportNode(doc.DocumentElement, true); + var nodes = new List(); + foreach (XmlNode node in doc.DocumentElement.ChildNodes) + { + nodes.Add(docContext.ImportNode(node, true)); + } - return importedNode; + return nodes.ToArray(); } private static XmlNode MakeNode(XmlDocument doc, string nodeType, Dictionary attributes) diff --git a/NewHorizons/Main.cs b/NewHorizons/Main.cs index 75ad2e23..aafed90f 100644 --- a/NewHorizons/Main.cs +++ b/NewHorizons/Main.cs @@ -525,12 +525,10 @@ namespace NewHorizons private void LoadAddonManifest(string file, IModBehaviour mod) { - Logger.LogError($"{mod.ModHelper.Manifest.Name}"); + Logger.LogVerbose($"Loading addon manifest for {mod.ModHelper.Manifest.Name}"); var addonConfig = mod.ModHelper.Storage.Load(file); - - if (addonConfig.achievements != null) AchievementHandler.RegisterAddon(addonConfig, mod as ModBehaviour); if (addonConfig.credits != null) CreditsHandler.RegisterCredits(mod.ModHelper.Manifest.Name, addonConfig.credits); }