diff --git a/NewHorizons/Builder/General/SpawnPointBuilder.cs b/NewHorizons/Builder/General/SpawnPointBuilder.cs index 6150de08..7c1421eb 100644 --- a/NewHorizons/Builder/General/SpawnPointBuilder.cs +++ b/NewHorizons/Builder/General/SpawnPointBuilder.cs @@ -14,34 +14,10 @@ namespace NewHorizons.Builder.General { SpawnPoint playerSpawn = null; - var playerSpawnInfo = module.playerSpawn; - var shipSpawnInfo = module.shipSpawn; - - // Backwards compatibility -#pragma warning disable 612, 618 - if (playerSpawnInfo == null && module.playerSpawnPoint != null) + if (!Main.Instance.IsWarpingFromVessel && !Main.Instance.IsWarpingFromShip && module.playerSpawn != null) { - playerSpawnInfo = new SpawnModule.PlayerSpawnPoint() - { - position = module.playerSpawnPoint, - rotation = module.playerSpawnRotation, - startWithSuit = module.startWithSuit, - }; - } - if (shipSpawnInfo == null && module.shipSpawnPoint != null) - { - shipSpawnInfo = new SpawnModule.ShipSpawnPoint() - { - position = module.shipSpawnPoint, - rotation = module.shipSpawnRotation, - }; - } -#pragma warning restore 612, 618 - - if (!Main.Instance.IsWarpingFromVessel && !Main.Instance.IsWarpingFromShip && playerSpawnInfo != null) - { - bool alignToBody = playerSpawnInfo.rotation == null; - GameObject spawnGO = GeneralPropBuilder.MakeNew("PlayerSpawnPoint", planetGO.transform, playerSpawnInfo, alignToBody); + bool alignToBody = module.playerSpawn.rotation == null; + GameObject spawnGO = GeneralPropBuilder.MakeNew("PlayerSpawnPoint", planetGO.transform, module.playerSpawn, alignToBody); spawnGO.layer = 8; playerSpawn = spawnGO.AddComponent(); @@ -49,10 +25,10 @@ namespace NewHorizons.Builder.General spawnGO.transform.position += spawnGO.transform.up * 4f; } - if (shipSpawnInfo != null) + if (module.shipSpawn != null) { - bool alignToBody = shipSpawnInfo.rotation == null; - GameObject spawnGO = GeneralPropBuilder.MakeNew("ShipSpawnPoint", planetGO.transform, shipSpawnInfo, alignToBody); + bool alignToBody = module.shipSpawn.rotation == null; + GameObject spawnGO = GeneralPropBuilder.MakeNew("ShipSpawnPoint", planetGO.transform, module.shipSpawn, alignToBody); spawnGO.layer = 8; var spawnPoint = spawnGO.AddComponent(); @@ -89,7 +65,7 @@ namespace NewHorizons.Builder.General } } - if ((Main.Instance.IsWarpingFromVessel || (!Main.Instance.IsWarpingFromShip && (playerSpawnInfo?.startWithSuit ?? false))) && !suitUpQueued) + if ((Main.Instance.IsWarpingFromVessel || (!Main.Instance.IsWarpingFromShip && (module.playerSpawn?.startWithSuit ?? false))) && !suitUpQueued) { suitUpQueued = true; Delay.RunWhen(() => Main.IsSystemReady, () => SuitUp()); diff --git a/NewHorizons/Builder/Props/DialogueBuilder.cs b/NewHorizons/Builder/Props/DialogueBuilder.cs index da435726..f81d8ac2 100644 --- a/NewHorizons/Builder/Props/DialogueBuilder.cs +++ b/NewHorizons/Builder/Props/DialogueBuilder.cs @@ -24,21 +24,8 @@ namespace NewHorizons.Builder.Props RemoteDialogueTrigger remoteTrigger = null; if (info.remoteTrigger != null) { - remoteTrigger = MakeRemoteDialogueTrigger(go, sector, info, info.remoteTrigger, dialogue); + remoteTrigger = MakeRemoteDialogueTrigger(go, sector, info, dialogue); } - // Backwards compatibility -#pragma warning disable 612, 618 - if (remoteTrigger == null && (info.remoteTriggerPosition != null || info.remoteTriggerRadius != 0)) - { - var remoteInfo = new PropModule.DialogueInfo.RemoteTriggerInfo - { - position = info.remoteTriggerPosition, - radius = info.remoteTriggerRadius, - prereqCondition = info.remoteTriggerPrereqCondition, - }; - remoteTrigger = MakeRemoteDialogueTrigger(go, sector, info, remoteInfo, dialogue); - } -#pragma warning restore 612, 618 // Make the character look at the player // Useful for dialogue replacement @@ -51,9 +38,9 @@ namespace NewHorizons.Builder.Props return (dialogue, remoteTrigger); } - private static RemoteDialogueTrigger MakeRemoteDialogueTrigger(GameObject planetGO, Sector sector, PropModule.DialogueInfo info, PropModule.DialogueInfo.RemoteTriggerInfo remoteTriggerInfo, CharacterDialogueTree dialogue) + private static RemoteDialogueTrigger MakeRemoteDialogueTrigger(GameObject planetGO, Sector sector, PropModule.DialogueInfo info, CharacterDialogueTree dialogue) { - var conversationTrigger = GeneralPropBuilder.MakeNew("ConversationTrigger", sector?.transform ?? planetGO.transform, remoteTriggerInfo, defaultPosition: info.position, defaultParentPath: info.pathToAnimController); + var conversationTrigger = GeneralPropBuilder.MakeNew("ConversationTrigger", sector?.transform ?? planetGO.transform, info.remoteTrigger, defaultPosition: info.position, defaultParentPath: info.pathToAnimController); var remoteDialogueTrigger = conversationTrigger.AddComponent(); var sphereCollider = conversationTrigger.AddComponent(); @@ -67,7 +54,7 @@ namespace NewHorizons.Builder.Props dialogue = dialogue, prereqConditionType = RemoteDialogueTrigger.MultiConditionType.AND, // Base game never uses more than one condition anyone so we'll keep it simple - prereqConditions = string.IsNullOrEmpty(remoteTriggerInfo.prereqCondition) ? new string[]{ } : new string[] { remoteTriggerInfo.prereqCondition }, + prereqConditions = string.IsNullOrEmpty(info.remoteTrigger.prereqCondition) ? new string[]{ } : new string[] { info.remoteTrigger.prereqCondition }, // Just set your enter conditions in XML instead of complicating it with this onTriggerEnterConditions = new string[]{ } } @@ -75,7 +62,7 @@ namespace NewHorizons.Builder.Props remoteDialogueTrigger._activatedDialogues = new bool[1]; remoteDialogueTrigger._deactivateTriggerPostConversation = true; - sphereCollider.radius = remoteTriggerInfo.radius == 0 ? info.radius : remoteTriggerInfo.radius; + sphereCollider.radius = info.remoteTrigger.radius == 0 ? info.radius : info.remoteTrigger.radius; conversationTrigger.SetActive(true); diff --git a/NewHorizons/External/Configs/PlanetConfig.cs b/NewHorizons/External/Configs/PlanetConfig.cs index 20ca31da..3330a4ad 100644 --- a/NewHorizons/External/Configs/PlanetConfig.cs +++ b/NewHorizons/External/Configs/PlanetConfig.cs @@ -1,3 +1,4 @@ +using Epic.OnlineServices.Presence; using NewHorizons.External.Modules; using NewHorizons.External.Modules.VariableSize; using Newtonsoft.Json; @@ -465,6 +466,42 @@ namespace NewHorizons.External.Configs { ShockEffect = new ShockEffectModule() { hasSupernovaShockEffect = true }; } + + // Spawn points reorganized to use GenericPropInfo + if (Spawn.playerSpawn == null && Spawn.playerSpawnPoint != null) + { + Spawn.playerSpawn = new SpawnModule.PlayerSpawnPoint() + { + position = Spawn.playerSpawnPoint, + rotation = Spawn.playerSpawnRotation, + startWithSuit = Spawn.startWithSuit, + }; + } + if (Spawn.shipSpawn == null && Spawn.shipSpawnPoint != null) + { + Spawn.shipSpawn = new SpawnModule.ShipSpawnPoint() + { + position = Spawn.shipSpawnPoint, + rotation = Spawn.shipSpawnRotation, + }; + } + + // Remote dialogue trigger reorganized to use GenericPropInfo + if (Props.dialogue != null) + { + foreach (var dialogue in Props.dialogue) + { + if (dialogue.remoteTrigger == null && (dialogue.remoteTriggerPosition != null || dialogue.remoteTriggerRadius != 0)) + { + dialogue.remoteTrigger = new PropModule.DialogueInfo.RemoteTriggerInfo + { + position = dialogue.remoteTriggerPosition, + radius = dialogue.remoteTriggerRadius, + prereqCondition = dialogue.remoteTriggerPrereqCondition, + }; + } + } + } } } } \ No newline at end of file