diff --git a/NewHorizons/Utility/DebugMenu/DebugMenu.cs b/NewHorizons/Utility/DebugMenu/DebugMenu.cs index ca54f738..207c51e6 100644 --- a/NewHorizons/Utility/DebugMenu/DebugMenu.cs +++ b/NewHorizons/Utility/DebugMenu/DebugMenu.cs @@ -37,8 +37,8 @@ namespace NewHorizons.Utility.DebugMenu // Submenus private List submenus; private int activeSubmenu = 0; - - private static JsonSerializerSettings jsonSettings = new JsonSerializerSettings + + internal static JsonSerializerSettings jsonSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, DefaultValueHandling = DefaultValueHandling.Ignore, @@ -158,6 +158,12 @@ namespace NewHorizons.Utility.DebugMenu } GUI.enabled = true; GUILayout.EndHorizontal(); + + if (GUILayout.Button("Print config changes for your mod")) + { + PrintLoadedConfigChangesForRecentSystem(); + saveButtonUnlocked = false; + } } GUILayout.Space(20); @@ -267,6 +273,14 @@ namespace NewHorizons.Utility.DebugMenu } } + private void PrintLoadedConfigChangesForRecentSystem() + { + foreach(DebugSubmenu menu in submenus) + { + menu.PrintNewConfigSection(this); + } + } + private void InitMenu() { if (_editorMenuStyle != null) return; diff --git a/NewHorizons/Utility/DebugMenu/DebugMenuNomaiText.cs b/NewHorizons/Utility/DebugMenu/DebugMenuNomaiText.cs index d1a6ec72..cc1f237c 100644 --- a/NewHorizons/Utility/DebugMenu/DebugMenuNomaiText.cs +++ b/NewHorizons/Utility/DebugMenu/DebugMenuNomaiText.cs @@ -521,5 +521,43 @@ namespace NewHorizons.Utility.DebugMenu // metadata.spiral.zRotation = metadata.spiral.zRotation; //}); } + + internal override void PrintNewConfigSection(DebugMenu menu) + { + var conversationsJSON = conversations + .GroupBy(conversation => conversation.planetConfig.name) + .Select(allConversationsOnBody => + allConversationsOnBody.Key + + "\n[" + + allConversationsOnBody.Select(conversation => + "\t{\n" + + $"\t\t\"position\": {conversation.conversation.position},\n" + + $"\t\t\"normal\": {conversation.conversation.normal},\n" + + (conversation.conversation.parentPath == default ? "" : $"\t\t\"parentPath\": \"{conversation.conversation.parentPath}\",\n") + + (conversation.conversation.location == NomaiTextInfo.NomaiTextLocation.UNSPECIFIED ? "" : $"\t\t\"location\": {conversation.conversation.location},\n") + + (conversation.conversation.rotation == default ? "" : $"\t\t\"rotation\": {conversation.conversation.rotation},\n") + + (conversation.conversation.rename == default ? "" : $"\t\t\"rename\": \"{conversation.conversation.rename}\",\n") + + (conversation.conversation.seed == default ? "" : $"\t\t\"seed\": {conversation.conversation.seed},\n") + + (conversation.conversation.type == NomaiTextInfo.NomaiTextType.Wall ? "" : $"\t\t\"type\": \"{conversation.conversation.type}\",\n") + + $"\t\t\"xmlFile\": \"{conversation.conversation.xmlFile}\",\n" + + "\t\t\"arcInfo\": [\n" + + string.Join(",\n", conversation.spirals.Select(spiral => + "\t\t\t{" + + $"\"position\": {spiral.spiral.position}, " + + $"\"zRotation\": {spiral.spiral.zRotation}, " + + (spiral.spiral.mirror == default ? "" : $"\"mirror\": {spiral.spiral.mirror}, ") + + (spiral.spiral.type == NomaiTextArcInfo.NomaiTextArcType.Adult ? "" : $"\"type\": \"{spiral.spiral.type}\", ") + + (spiral.spiral.variation == -1 ? "" : $"\"variation\": {spiral.spiral.variation}") + + "}" + )) + + "\t\t]" + ) + ); + + foreach(string json in conversationsJSON) + { + Logger.Log(json); + } + } } } diff --git a/NewHorizons/Utility/DebugMenu/DebugMenuPropPlacer.cs b/NewHorizons/Utility/DebugMenu/DebugMenuPropPlacer.cs index 52c1b9bd..1e35f040 100644 --- a/NewHorizons/Utility/DebugMenu/DebugMenuPropPlacer.cs +++ b/NewHorizons/Utility/DebugMenu/DebugMenuPropPlacer.cs @@ -1,6 +1,7 @@ using NewHorizons.External.Configs; using NewHorizons.External.Modules; using NewHorizons.Utility.DebugUtilities; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; @@ -384,5 +385,14 @@ namespace NewHorizons.Utility.DebugMenu menu.loadedConfigFiles[filepath] = config; } } + + internal override void PrintNewConfigSection(DebugMenu menu) + { + foreach(var body in _dpp.GetPropsConfigByBody()) + { + var json = string.Join(",\n", body.Value.Select(detail => "\t"+ JsonConvert.SerializeObject(detail, DebugMenu.jsonSettings))); + Logger.Log($"{body.Key.name} ({body.Value.Length})\n[\n{json}\n]"); + } + } } } diff --git a/NewHorizons/Utility/DebugMenu/DebugMenuShipLogs.cs b/NewHorizons/Utility/DebugMenu/DebugMenuShipLogs.cs index 94630fe4..3ce5a468 100644 --- a/NewHorizons/Utility/DebugMenu/DebugMenuShipLogs.cs +++ b/NewHorizons/Utility/DebugMenu/DebugMenuShipLogs.cs @@ -35,19 +35,22 @@ namespace NewHorizons.Utility.DebugMenu { } + private string GetEntryPositionsJSON() + { + return string.Join(",\n", + Resources + .FindObjectsOfTypeAll() + .Select(go => + "{ \"id\": \"" +go.name+ "\", \"position\": {\"x\": "+go.transform.localPosition.x+", \"y\": "+go.transform.localPosition.y+" } " + ) + ); + } + internal override void OnGUI(DebugMenu menu) { if (GUILayout.Button("Print Ship Log Positions")) { - entryPositionsText = String.Join("\n", - Resources - .FindObjectsOfTypeAll() - .ToList() - .Select(go => - ("{ \"id\": \"" +go.name+ "\", \"position\": {\"x\": "+go.transform.localPosition.x+", \"y\": "+go.transform.localPosition.y+" } ") - ) - .ToList() - ); + entryPositionsText = GetEntryPositionsJSON(); } GUILayout.TextArea(entryPositionsText); @@ -67,5 +70,10 @@ namespace NewHorizons.Utility.DebugMenu { return "Ship Log"; } + + internal override void PrintNewConfigSection(DebugMenu menu) + { + Logger.Log(GetEntryPositionsJSON()); + } } } diff --git a/NewHorizons/Utility/DebugMenu/DebugSubmenu.cs b/NewHorizons/Utility/DebugMenu/DebugSubmenu.cs index d49d2daf..85e12e65 100644 --- a/NewHorizons/Utility/DebugMenu/DebugSubmenu.cs +++ b/NewHorizons/Utility/DebugMenu/DebugSubmenu.cs @@ -11,6 +11,7 @@ namespace NewHorizons.Utility.DebugMenu { internal abstract void OnAwake(DebugMenu menu); internal abstract void OnGUI(DebugMenu menu); + internal abstract void PrintNewConfigSection(DebugMenu menu); internal abstract void PreSave(DebugMenu menu); internal abstract void OnInit(DebugMenu menu); internal abstract void LoadConfigFile(DebugMenu menu, PlanetConfig config); @@ -21,6 +22,5 @@ namespace NewHorizons.Utility.DebugMenu internal abstract void GainActive(); internal abstract void LoseActive(); - } } diff --git a/NewHorizons/Utility/DebugUtilities/DebugPropPlacer.cs b/NewHorizons/Utility/DebugUtilities/DebugPropPlacer.cs index b662cbc5..04554fd1 100644 --- a/NewHorizons/Utility/DebugUtilities/DebugPropPlacer.cs +++ b/NewHorizons/Utility/DebugUtilities/DebugPropPlacer.cs @@ -108,6 +108,9 @@ namespace NewHorizons.Utility.DebugUtilities DebugRaycastData data = _rc.Raycast(); PlaceObject(data); + //TODO: use DropItem logic to make props not clip through the ground when placed + //public virtual void DropItem(Vector3 position, Vector3 normal, Transform parent, Sector sector, IItemDropTarget customDropTarget) + if (!hasAddedCurrentObjectToRecentsList) { hasAddedCurrentObjectToRecentsList = true;