mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
Better handling of vessel spawn flags
This commit is contained in:
parent
ced1c5e308
commit
357b4463f0
@ -27,6 +27,21 @@ namespace NewHorizons.Handlers
|
|||||||
VesselPrefab = Main.NHPrivateAssetBundle.LoadAsset<GameObject>("Vessel_Body");
|
VesselPrefab = Main.NHPrivateAssetBundle.LoadAsset<GameObject>("Vessel_Body");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool IsVesselPresent()
|
||||||
|
{
|
||||||
|
var vesselConfig = SystemDict[Instance.CurrentStarSystem].Config?.Vessel;
|
||||||
|
var isDefaultSolarSystem = Instance.CurrentStarSystem == "SolarSystem";
|
||||||
|
var vesselIsPresent = vesselConfig?.alwaysPresent ?? isDefaultSolarSystem;
|
||||||
|
return Instance.IsWarpingFromVessel || vesselIsPresent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool ShouldSpawnAtVessel()
|
||||||
|
{
|
||||||
|
var vesselConfig = SystemDict[Instance.CurrentStarSystem].Config?.Vessel;
|
||||||
|
var shouldSpawnOnVessel = IsVesselPresent() && (vesselConfig?.spawnOnVessel ?? false);
|
||||||
|
return Instance.IsWarpingFromVessel || (IsVesselPresent() && shouldSpawnOnVessel);
|
||||||
|
}
|
||||||
|
|
||||||
public static void LoadVessel()
|
public static void LoadVessel()
|
||||||
{
|
{
|
||||||
var system = SystemDict[Instance.CurrentStarSystem];
|
var system = SystemDict[Instance.CurrentStarSystem];
|
||||||
@ -36,9 +51,7 @@ namespace NewHorizons.Handlers
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var vesselIsPresent = system.Config?.Vessel?.alwaysPresent ?? false;
|
if (IsVesselPresent())
|
||||||
|
|
||||||
if (Instance.IsWarpingFromVessel || vesselIsPresent)
|
|
||||||
_vesselSpawnPoint = Instance.CurrentStarSystem == "SolarSystem" ? UpdateVessel() : CreateVessel();
|
_vesselSpawnPoint = Instance.CurrentStarSystem == "SolarSystem" ? UpdateVessel() : CreateVessel();
|
||||||
else
|
else
|
||||||
_vesselSpawnPoint = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension").GetComponentInChildren<SpawnPoint>();
|
_vesselSpawnPoint = SearchUtilities.Find("DB_VesselDimension_Body/Sector_VesselDimension").GetComponentInChildren<SpawnPoint>();
|
||||||
|
|||||||
@ -146,7 +146,8 @@ namespace NewHorizons
|
|||||||
x = new int[5]{ 0,3,2,1,5 },
|
x = new int[5]{ 0,3,2,1,5 },
|
||||||
y = new int[5]{ 4,5,3,2,1 },
|
y = new int[5]{ 4,5,3,2,1 },
|
||||||
z = new int[5]{ 4,1,2,5,0 }
|
z = new int[5]{ 4,1,2,5,0 }
|
||||||
}
|
},
|
||||||
|
alwaysPresent = true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -364,6 +365,10 @@ namespace NewHorizons
|
|||||||
|
|
||||||
NewHorizonsData.Load();
|
NewHorizonsData.Load();
|
||||||
|
|
||||||
|
// If the vessel is forcing the player to spawn there, allow it to override
|
||||||
|
IsWarpingFromVessel = VesselWarpHandler.ShouldSpawnAtVessel();
|
||||||
|
Logger.LogWarning("Spawning from vessel: " + IsWarpingFromVessel);
|
||||||
|
|
||||||
// Some builders have to be reset each loop
|
// Some builders have to be reset each loop
|
||||||
SignalBuilder.Init();
|
SignalBuilder.Init();
|
||||||
BrambleDimensionBuilder.Init();
|
BrambleDimensionBuilder.Init();
|
||||||
@ -400,11 +405,8 @@ namespace NewHorizons
|
|||||||
}
|
}
|
||||||
if (HasWarpDrive == true) EnableWarpDrive();
|
if (HasWarpDrive == true) EnableWarpDrive();
|
||||||
|
|
||||||
var vesselIsPresent = SystemDict[CurrentStarSystem].Config?.Vessel?.alwaysPresent ?? false;
|
|
||||||
var shouldSpawnOnVessel = vesselIsPresent && (SystemDict[CurrentStarSystem].Config?.Vessel?.spawnOnVessel ?? false);
|
|
||||||
|
|
||||||
var shouldWarpInFromShip = IsWarpingFromShip && _shipWarpController != null;
|
var shouldWarpInFromShip = IsWarpingFromShip && _shipWarpController != null;
|
||||||
var shouldWarpInFromVessel = (IsWarpingFromVessel || shouldSpawnOnVessel) && VesselWarpHandler.VesselSpawnPoint != null;
|
var shouldWarpInFromVessel = IsWarpingFromVessel && VesselWarpHandler.VesselSpawnPoint != null;
|
||||||
Delay.RunWhen(() => IsSystemReady, () => OnSystemReady(shouldWarpInFromShip, shouldWarpInFromVessel));
|
Delay.RunWhen(() => IsSystemReady, () => OnSystemReady(shouldWarpInFromShip, shouldWarpInFromVessel));
|
||||||
|
|
||||||
IsWarpingFromShip = false;
|
IsWarpingFromShip = false;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user