Move backwards compatibility fixes to Migrate methods

This commit is contained in:
Joshua Thome 2023-03-18 11:09:05 -05:00
parent 1c0466f04f
commit 1c3c085967
3 changed files with 49 additions and 49 deletions

View File

@ -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<SpawnPoint>();
@ -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<SpawnPoint>();
@ -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());

View File

@ -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<RemoteDialogueTrigger>();
var sphereCollider = conversationTrigger.AddComponent<SphereCollider>();
@ -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);

View File

@ -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,
};
}
}
}
}
}
}