using System;
using System.ComponentModel;
using NewHorizons.External.SerializableData;
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 (.png) 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 (.png/.jpg/.exr) to show when the planet is unexplored in map mode. If empty, a texture will be created and cached based on the revealed sprite.
///
public string outlineSprite;
///
/// Completely remove this planet (and it's children) from map mode.
///
public bool remove;
///
/// The path to the sprite (.png/.jpg/.exr) 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;
///
/// Can this ship log map mode entry be selected
/// Ex) Set to false for stars with no entries on them so they are skipped in navigation
///
[DefaultValue(true)] public bool selectable = true;
}
[JsonObject]
public class ShipLogDetailInfo
{
///
/// Whether to completely hide this detail when the parent AstroBody is unexplored.
///
public bool invisibleWhenHidden;
///
/// The sprite (.png/.jpg/.exr) 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 (.png/.jpg/.exr) 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;
}
}
}