using System; using System.ComponentModel; using NewHorizons.Utility; using Newtonsoft.Json; namespace NewHorizons.External.Modules { [JsonObject] public class ShipLogModule { [Obsolete("curiosities is deprecated, please use curiosities in the star system config instead")] public CuriosityColorInfo[] curiosities; [Obsolete("entryPositions is deprecated, please use entryPositions in the star system config instead")] public EntryPositionInfo[] entryPositions; [Obsolete("initialReveal is deprecated, please use initialReveal in the star system config instead")] public string[] initialReveal; /// /// Describe what this planet looks and like in map mode /// public MapModeInfo mapMode; /// /// A path to the folder where entry sprites are stored. /// public string spriteFolder; /// /// The relative path to the xml file to load ship log entries from. /// public string xmlFile; [JsonObject] public class MapModeInfo { /// /// Place non-selectable objects in map mode (like sand funnels). /// public ShipLogDetailInfo[] details; /// /// Hide the planet completely if unexplored instead of showing an outline. /// public bool invisibleWhenHidden; /// /// Specify where this planet is in terms of navigation. /// public MVector2 manualNavigationPosition; /// /// Manually place this planet at the specified position. /// public MVector2 manualPosition; /// /// Extra distance to apply to this object in map mode. /// public float offset; /// /// The path to the sprite to show when the planet is unexplored in map mode. /// public string outlineSprite; /// /// Completely remove this planet (and it's children) from map mode. /// public bool remove; /// /// The path to the sprite to show when the planet is revealed in map mode. /// public string revealedSprite; /// /// Scale to apply to the planet in map mode. /// [DefaultValue(1f)] public float scale = 1f; } [JsonObject] public class ShipLogDetailInfo { /// /// Whether to completely hide this detail when the parent AstroBody is unexplored. /// public bool invisibleWhenHidden; /// /// The sprite to show when the parent AstroBody is rumored/unexplored. /// public string outlineSprite; /// /// The position (relative to the parent) to place the detail. /// public MVector2 position; /// /// The sprite to show when the parent AstroBody is revealed. /// public string revealedSprite; /// /// The angle in degrees to rotate the detail. /// public float rotation; /// /// The amount to scale the x and y-axis of the detail by. /// public MVector2 scale; } [JsonObject] public class CuriosityColorInfo { /// /// The color to apply to entries with this curiosity. /// public MColor color; /// /// The color to apply to highlighted entries with this curiosity. /// public MColor highlightColor; /// /// The ID of the curiosity to apply the color to. /// public string id; } [JsonObject] public class EntryPositionInfo { /// /// The name of the entry to apply the position to. /// public string id; /// /// Position of the entry /// public MVector2 position; } } }