using NewHorizons.External.SerializableData; using NewHorizons.Handlers; using Newtonsoft.Json; using System; namespace NewHorizons.External.Modules { [JsonObject] public class SpawnModule { /// /// If you want the player to spawn on the new body, set a value for this. /// public PlayerSpawnPoint playerSpawn; /// /// Required for the system to be accessible by warp drive. /// public ShipSpawnPoint shipSpawn; [Obsolete("playerSpawnPoint is deprecated. Use playerSpawn.position instead")] public MVector3 playerSpawnPoint; [Obsolete("playerSpawnRotation is deprecated. Use playerSpawn.rotation instead")] public MVector3 playerSpawnRotation; [Obsolete("shipSpawnPoint is deprecated. Use shipSpawn.position instead")] public MVector3 shipSpawnPoint; [Obsolete("shipSpawnRotation is deprecated. Use shipSpawn.rotation instead")] public MVector3 shipSpawnRotation; [Obsolete("startWithSuit is deprecated. Use playerSpawn.startWithSuit instead")] public bool startWithSuit; [JsonObject] public class SpawnPoint : GeneralPropInfo { /// /// Offsets the player/ship by this local vector when spawning. Used to prevent spawning in the floor. Optional: defaults to (0, 4, 0). /// public MVector3 offset; /// /// Whether this planet's spawn point is the one the player/ship will initially spawn at, if multiple spawn points exist. /// Do not use at the same time as makeDefaultIfFactRevealed or makeDefaultIfPersistentCondition /// Spawns unlocked with this have lowest priority /// public bool isDefault; /// /// If the given ship log fact is revealed, this spawn point will be used /// Do not use at the same time as isDefault or makeDefaultIfPersistentCondition /// Spawns unlocked with this have highest priority /// public string makeDefaultIfFactRevealed; /// /// If the given persistent condition is true, this spawn point will be used /// Do not use at the same time as isDefault or makeDefaultIfFactRevealed /// Spawns unlocked with this have second highest priority /// public string makeDefaultIfPersistentCondition; public int GetPriority() { if (!string.IsNullOrEmpty(makeDefaultIfFactRevealed) && ShipLogHandler.KnowsFact(makeDefaultIfFactRevealed)) { return 2; } if (!string.IsNullOrEmpty(makeDefaultIfPersistentCondition) && PlayerData.GetPersistentCondition(makeDefaultIfPersistentCondition)) { return 1; } if (isDefault) { return 0; } else { return -1; } } } [JsonObject] public class PlayerSpawnPoint : SpawnPoint { /// /// If you spawn on a planet with no oxygen, you probably want to set this to true ;;) /// public bool startWithSuit; } [JsonObject] public class ShipSpawnPoint : SpawnPoint { } } }