From af79e9d1d74a94cfb5bc8c899a063aaaf70944d2 Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Sat, 17 Jun 2023 00:55:09 -0400 Subject: [PATCH] Add ember twin cairn variant for #591 --- NewHorizons/Builder/Props/NomaiTextBuilder.cs | 34 +++++++++++-------- .../TranslatorText/TranslatorTextBuilder.cs | 27 +++++++++------ NewHorizons/External/Configs/PlanetConfig.cs | 28 +++++++++++++++ .../Props/TranslatorText/NomaiTextType.cs | 31 +++++++++++------ NewHorizons/Schemas/body_schema.json | 22 ++++++------ SchemaExporter/SchemaExporter.cs | 4 +++ 6 files changed, 101 insertions(+), 45 deletions(-) diff --git a/NewHorizons/Builder/Props/NomaiTextBuilder.cs b/NewHorizons/Builder/Props/NomaiTextBuilder.cs index a613b6a4..9dfe17bd 100644 --- a/NewHorizons/Builder/Props/NomaiTextBuilder.cs +++ b/NewHorizons/Builder/Props/NomaiTextBuilder.cs @@ -29,8 +29,9 @@ namespace NewHorizons.Builder.Props private static GameObject _scrollPrefab; private static GameObject _computerPrefab; private static GameObject _preCrashComputerPrefab; - private static GameObject _cairnPrefab; - private static GameObject _cairnVariantPrefab; + private static GameObject _cairnBHPrefab; + private static GameObject _cairnTHPrefab; + private static GameObject _cairnCTPrefab; private static GameObject _recorderPrefab; private static GameObject _preCrashRecorderPrefab; private static GameObject _trailmarkerPrefab; @@ -121,16 +122,22 @@ namespace NewHorizons.Builder.Props _preCrashComputerPrefab.transform.rotation = Quaternion.identity; } - if (_cairnPrefab == null) + if (_cairnBHPrefab == null) { - _cairnPrefab = SearchUtilities.Find("BrittleHollow_Body/Sector_BH/Sector_Crossroads/Interactables_Crossroads/Trailmarkers/Prefab_NOM_BH_Cairn_Arc (1)").InstantiateInactive().Rename("Prefab_NOM_Cairn").DontDestroyOnLoad(); - _cairnPrefab.transform.rotation = Quaternion.identity; + _cairnBHPrefab = SearchUtilities.Find("BrittleHollow_Body/Sector_BH/Sector_Crossroads/Interactables_Crossroads/Trailmarkers/Prefab_NOM_BH_Cairn_Arc (1)").InstantiateInactive().Rename("Prefab_NOM_BH_Cairn").DontDestroyOnLoad(); + _cairnBHPrefab.transform.rotation = Quaternion.identity; } - if (_cairnVariantPrefab == null) + if (_cairnTHPrefab == null) { - _cairnVariantPrefab = SearchUtilities.Find("TimberHearth_Body/Sector_TH/Sector_NomaiMines/Interactables_NomaiMines/Prefab_NOM_TH_Cairn_Arc").InstantiateInactive().Rename("Prefab_NOM_Cairn").DontDestroyOnLoad(); - _cairnVariantPrefab.transform.rotation = Quaternion.identity; + _cairnTHPrefab = SearchUtilities.Find("TimberHearth_Body/Sector_TH/Sector_NomaiMines/Interactables_NomaiMines/Prefab_NOM_TH_Cairn_Arc").InstantiateInactive().Rename("Prefab_NOM_TH_Cairn").DontDestroyOnLoad(); + _cairnTHPrefab.transform.rotation = Quaternion.identity; + } + + if (_cairnCTPrefab == null) + { + _cairnCTPrefab = SearchUtilities.Find("CaveTwin_Body/Sector_CaveTwin/Sector_NorthHemisphere/Sector_NorthSurface/Sector_TimeLoopExperiment/Interactables_TimeLoopExperiment/Prefab_NOM_CT_Cairn_Arc").InstantiateInactive().Rename("Prefab_NOM_CT_Cairn").DontDestroyOnLoad(); + _cairnCTPrefab.transform.rotation = Quaternion.identity; } if (_recorderPrefab == null) @@ -410,19 +417,16 @@ namespace NewHorizons.Builder.Props return computerObject; } - case NomaiTextType.Cairn: - case NomaiTextType.CairnVariant: + case NomaiTextType.CairnBrittleHollow: + case NomaiTextType.CairnTimberHearth: + case NomaiTextType.CairnEmberTwin: { - var cairnObject = (info.type == NomaiTextType.CairnVariant ? _cairnVariantPrefab : _cairnPrefab).InstantiateInactive(); + var cairnObject = (info.type == NomaiTextType.CairnTimberHearth ? _cairnTHPrefab : (info.type == NomaiTextType.CairnEmberTwin ? _cairnCTPrefab : _cairnBHPrefab)).InstantiateInactive(); if (!string.IsNullOrEmpty(info.rename)) { cairnObject.name = info.rename; } - else - { - cairnObject.name = _cairnPrefab.name; - } cairnObject.transform.parent = sector?.transform ?? planetGO.transform; diff --git a/NewHorizons/Builder/Props/TranslatorText/TranslatorTextBuilder.cs b/NewHorizons/Builder/Props/TranslatorText/TranslatorTextBuilder.cs index 1fd23ee2..862257ed 100644 --- a/NewHorizons/Builder/Props/TranslatorText/TranslatorTextBuilder.cs +++ b/NewHorizons/Builder/Props/TranslatorText/TranslatorTextBuilder.cs @@ -27,8 +27,9 @@ namespace NewHorizons.Builder.Props.TranslatorText private static GameObject _scrollPrefab; public static GameObject ComputerPrefab { get; private set; } private static GameObject _preCrashComputerPrefab; - private static GameObject _cairnPrefab; - private static GameObject _cairnVariantPrefab; + private static GameObject _cairnBHPrefab; + private static GameObject _cairnTHPrefab; + private static GameObject _cairnCTPrefab; private static GameObject _recorderPrefab; private static GameObject _preCrashRecorderPrefab; private static GameObject _trailmarkerPrefab; @@ -93,14 +94,19 @@ namespace NewHorizons.Builder.Props.TranslatorText _preCrashComputerPrefab = SearchUtilities.Find("BrittleHollow_Body/Sector_BH/Sector_EscapePodCrashSite/Sector_CrashFragment/EscapePod_Socket/Interactibles_EscapePod/Prefab_NOM_Vessel_Computer").InstantiateInactive().Rename("Prefab_NOM_Vessel_Computer").DontDestroyOnLoad(); } - if (_cairnPrefab == null) + if (_cairnBHPrefab == null) { - _cairnPrefab = SearchUtilities.Find("BrittleHollow_Body/Sector_BH/Sector_Crossroads/Interactables_Crossroads/Trailmarkers/Prefab_NOM_BH_Cairn_Arc (1)").InstantiateInactive().Rename("Prefab_NOM_Cairn").DontDestroyOnLoad(); + _cairnBHPrefab = SearchUtilities.Find("BrittleHollow_Body/Sector_BH/Sector_Crossroads/Interactables_Crossroads/Trailmarkers/Prefab_NOM_BH_Cairn_Arc (1)").InstantiateInactive().Rename("Prefab_NOM_BH_Cairn").DontDestroyOnLoad(); } - if (_cairnVariantPrefab == null) + if (_cairnTHPrefab == null) { - _cairnVariantPrefab = SearchUtilities.Find("TimberHearth_Body/Sector_TH/Sector_NomaiMines/Interactables_NomaiMines/Prefab_NOM_TH_Cairn_Arc").InstantiateInactive().Rename("Prefab_NOM_Cairn").DontDestroyOnLoad(); + _cairnTHPrefab = SearchUtilities.Find("TimberHearth_Body/Sector_TH/Sector_NomaiMines/Interactables_NomaiMines/Prefab_NOM_TH_Cairn_Arc").InstantiateInactive().Rename("Prefab_NOM_TH_Cairn").DontDestroyOnLoad(); + } + + if (_cairnCTPrefab == null) + { + _cairnCTPrefab = SearchUtilities.Find("CaveTwin_Body/Sector_CaveTwin/Sector_NorthHemisphere/Sector_NorthSurface/Sector_TimeLoopExperiment/Interactables_TimeLoopExperiment/Prefab_NOM_CT_Cairn_Arc").InstantiateInactive().Rename("Prefab_NOM_CT_Cairn").DontDestroyOnLoad(); } if (_recorderPrefab == null) @@ -269,11 +275,12 @@ namespace NewHorizons.Builder.Props.TranslatorText return computerObject; } - case NomaiTextType.Cairn: - case NomaiTextType.CairnVariant: + case NomaiTextType.CairnBrittleHollow: + case NomaiTextType.CairnTimberHearth: + case NomaiTextType.CairnEmberTwin: { - var cairnPrefab = info.type == NomaiTextType.CairnVariant ? _cairnVariantPrefab : _cairnPrefab; - var cairnObject = GeneralPropBuilder.MakeFromPrefab(cairnPrefab, _cairnPrefab.name, planetGO, sector, info); + var cairnPrefab = info.type == NomaiTextType.CairnTimberHearth ? _cairnTHPrefab : (info.type == NomaiTextType.CairnEmberTwin ? _cairnCTPrefab : _cairnBHPrefab); + var cairnObject = GeneralPropBuilder.MakeFromPrefab(cairnPrefab, cairnPrefab.name, planetGO, sector, info); // Idk do we have to set it active before finding things? cairnObject.SetActive(true); diff --git a/NewHorizons/External/Configs/PlanetConfig.cs b/NewHorizons/External/Configs/PlanetConfig.cs index 4d76aede..260896b3 100644 --- a/NewHorizons/External/Configs/PlanetConfig.cs +++ b/NewHorizons/External/Configs/PlanetConfig.cs @@ -579,6 +579,34 @@ namespace NewHorizons.External.Configs } } } + if (Props?.nomaiText != null) + { + foreach (var nomaiText in Props.nomaiText) + { + if (nomaiText.type == Modules.TranslatorText.NomaiTextType.Cairn) + { + nomaiText.type = Modules.TranslatorText.NomaiTextType.CairnBrittleHollow; + } + else if (nomaiText.type == Modules.TranslatorText.NomaiTextType.CairnVariant) + { + nomaiText.type = Modules.TranslatorText.NomaiTextType.CairnTimberHearth; + } + } + } + if (Props?.translatorText != null) + { + foreach (var translatorText in Props.translatorText) + { + if (translatorText.type == Modules.TranslatorText.NomaiTextType.Cairn) + { + translatorText.type = Modules.TranslatorText.NomaiTextType.CairnBrittleHollow; + } + else if (translatorText.type == Modules.TranslatorText.NomaiTextType.CairnVariant) + { + translatorText.type = Modules.TranslatorText.NomaiTextType.CairnTimberHearth; + } + } + } if (Base.hasCometTail) { diff --git a/NewHorizons/External/Modules/Props/TranslatorText/NomaiTextType.cs b/NewHorizons/External/Modules/Props/TranslatorText/NomaiTextType.cs index 4d75a178..fc6023f1 100644 --- a/NewHorizons/External/Modules/Props/TranslatorText/NomaiTextType.cs +++ b/NewHorizons/External/Modules/Props/TranslatorText/NomaiTextType.cs @@ -1,5 +1,6 @@ using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using System; using System.Runtime.Serialization; namespace NewHorizons.External.Modules.TranslatorText @@ -7,24 +8,34 @@ namespace NewHorizons.External.Modules.TranslatorText [JsonConverter(typeof(StringEnumConverter))] public enum NomaiTextType { - [EnumMember(Value = @"wall")] Wall = 0, + [EnumMember(Value = @"wall")] Wall, - [EnumMember(Value = @"scroll")] Scroll = 1, + [EnumMember(Value = @"scroll")] Scroll, - [EnumMember(Value = @"computer")] Computer = 2, + [EnumMember(Value = @"whiteboard")] Whiteboard, - [EnumMember(Value = @"cairn")] Cairn = 3, + [EnumMember(Value = @"computer")] Computer, - [EnumMember(Value = @"recorder")] Recorder = 4, + [EnumMember(Value = @"preCrashComputer")] PreCrashComputer, - [EnumMember(Value = @"preCrashRecorder")] PreCrashRecorder = 5, + [EnumMember(Value = @"recorder")] Recorder, - [EnumMember(Value = @"preCrashComputer")] PreCrashComputer = 6, + [EnumMember(Value = @"preCrashRecorder")] PreCrashRecorder, - [EnumMember(Value = @"trailmarker")] Trailmarker = 7, + [EnumMember(Value = @"cairnBH")] CairnBrittleHollow, - [EnumMember(Value = @"cairnVariant")] CairnVariant = 8, + [EnumMember(Value = @"cairnTH")] CairnTimberHearth, - [EnumMember(Value = @"whiteboard")] Whiteboard = 9, + [EnumMember(Value = @"cairnCT")] CairnEmberTwin, + + [EnumMember(Value = @"trailmarker")] Trailmarker, + + #region Obsolete + + [Obsolete("Please use CairnBrittleHollow instead")][EnumMember(Value = @"cairn")] Cairn, + + [Obsolete("Please use CairnTimberHearth instead")][EnumMember(Value = @"cairnVariant")] CairnVariant, + + #endregion } } diff --git a/NewHorizons/Schemas/body_schema.json b/NewHorizons/Schemas/body_schema.json index a45b559d..c63a8f12 100644 --- a/NewHorizons/Schemas/body_schema.json +++ b/NewHorizons/Schemas/body_schema.json @@ -1636,26 +1636,28 @@ "x-enumNames": [ "Wall", "Scroll", + "Whiteboard", "Computer", - "Cairn", + "PreCrashComputer", "Recorder", "PreCrashRecorder", - "PreCrashComputer", - "Trailmarker", - "CairnVariant", - "Whiteboard" + "CairnBrittleHollow", + "CairnTimberHearth", + "CairnEmberTwin", + "Trailmarker" ], "enum": [ "wall", "scroll", + "whiteboard", "computer", - "cairn", + "preCrashComputer", "recorder", "preCrashRecorder", - "preCrashComputer", - "trailmarker", - "cairnVariant", - "whiteboard" + "cairnBH", + "cairnTH", + "cairnCT", + "trailmarker" ] }, "NomaiTextLocation": { diff --git a/SchemaExporter/SchemaExporter.cs b/SchemaExporter/SchemaExporter.cs index c2e94e25..557679ac 100644 --- a/SchemaExporter/SchemaExporter.cs +++ b/SchemaExporter/SchemaExporter.cs @@ -82,6 +82,10 @@ public static class SchemaExporter { case "Celestial Body Schema": schema.Definitions["OrbitModule"].Properties["semiMajorAxis"].Default = 5000f; + schema.Definitions["NomaiTextType"].Enumeration.Remove("cairn"); + schema.Definitions["NomaiTextType"].EnumerationNames.Remove("Cairn"); + schema.Definitions["NomaiTextType"].Enumeration.Remove("cairnVariant"); + schema.Definitions["NomaiTextType"].EnumerationNames.Remove("CairnVariant"); break; case "Star System Schema": schema.Definitions["NomaiCoordinates"].Properties["x"].UniqueItems = true;