using System;
using System.ComponentModel;
using System.Runtime.Serialization;
using NewHorizons.External.SerializableData;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace NewHorizons.External.Modules
{
[JsonConverter(typeof(StringEnumConverter))]
public enum GravityFallOff
{
[EnumMember(Value = @"linear")] Linear = 0,
[EnumMember(Value = @"inverseSquared")]
InverseSquared = 1
}
[JsonObject]
public class BaseModule
{
///
/// Set this to true if you are replacing the sun with a different body. Only one object in a star system should ever
/// have this set to true.
///
public bool centerOfSolarSystem;
///
/// How gravity falls off with distance. Most planets use linear but the sun and some moons use inverseSquared.
///
[DefaultValue("linear")] public GravityFallOff gravityFallOff = GravityFallOff.Linear;
///
/// Radius of a simple sphere used as the ground for the planet. If you want to use more complex terrain, leave this as
/// 0.
///
public float groundSize;
///
/// If the body should have a marker on the map screen.
///
public bool hasMapMarker;
///
/// Can this planet survive entering a star?
///
public bool invulnerableToSun;
///
/// Do we show the minimap when walking around this planet?
///
[DefaultValue(true)] public bool showMinimap = true;
///
/// An override for the radius of the planet's gravitational sphere of influence. Optional
///
public float soiOverride;
///
/// The acceleration due to gravity felt as the surfaceSize. Timber Hearth has 12 for reference
///
public float surfaceGravity;
///
/// A scale height used for a number of things. Should be the approximate radius of the body.
///
public float surfaceSize;
///
/// Optional. You can force this planet's gravity to be felt over other gravity/zero-gravity sources by increasing this number.
///
public int gravityVolumePriority;
#region Obsolete
[Obsolete("IsSatellite is deprecated, please use ShowMinimap instead")]
public bool isSatellite;
[Obsolete("BlackHoleSize is deprecated, please use SingularityModule instead")]
public float blackHoleSize;
[Obsolete("LavaSize is deprecated, please use LavaModule instead")]
public float lavaSize;
[Obsolete("WaterTint is deprecated, please use WaterModule instead")]
public float waterSize;
[Obsolete("WaterTint is deprecated, please use WaterModule instead")]
public MColor waterTint;
[Obsolete("HasAmbientLight is deprecated, please use AmbientLightModule instead")]
public bool hasAmbientLight;
[Obsolete("AmbientLight is deprecated, please use AmbientLightModule instead")]
public float ambientLight;
[Obsolete("HasReferenceFrame is deprecated, please use ReferenceModule instead")]
[DefaultValue(true)] public bool hasReferenceFrame = true;
[Obsolete("CloakRadius is deprecated, please use CloakModule instead")]
public float cloakRadius;
[Obsolete("SphereOfInfluence is deprecated, please use soiOverride instead")]
public float sphereOfInfluence;
[Obsolete("zeroGravityRadius is deprecated, please use Volumes->ZeroGravityVolumes instead")]
public float zeroGravityRadius;
[Obsolete("hasCometTail is deprecated, please use CometTail instead")]
public bool hasCometTail;
[Obsolete("cometTailRotation is deprecated, please use CometTail->rotationOverride instead")]
public MVector3 cometTailRotation;
#endregion Obsolete
}
}