using NewHorizons.External.Modules.VariableSize;
using NewHorizons.External.SerializableData;
using NewHorizons.External.SerializableEnums;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
using System.ComponentModel;
using System.Runtime.Serialization;
namespace NewHorizons.External.Modules
{
[JsonObject]
public class ParticleFieldModule
{
///
/// Particle type for this vection field.
///
public ParticleFieldType type;
///
/// What the particle field activates based on.
///
[DefaultValue("player")] public FollowTarget followTarget = FollowTarget.Player;
///
/// Density by height curve. Determines how many particles are emitted at different heights.
/// Defaults to a curve based on minimum and maximum heights of various other modules.
///
public HeightDensityPair[] densityByHeightCurve;
///
/// An optional rename of this object
///
public string rename;
[JsonObject]
public class HeightDensityPair
{
///
/// A specific radius
///
public float height;
///
/// The particle count for this radius.
///
public float density;
}
[JsonConverter(typeof(StringEnumConverter))]
public enum ParticleFieldType
{
[EnumMember(Value = @"rain")] Rain,
[EnumMember(Value = @"snowflakesHeavy")] SnowflakesHeavy,
[EnumMember(Value = @"snowflakesLight")] SnowflakesLight,
[EnumMember(Value = @"embers")] Embers,
[EnumMember(Value = @"clouds")] Clouds,
[EnumMember(Value = @"leaves")] Leaves,
[EnumMember(Value = @"bubbles")] Bubbles,
[EnumMember(Value = @"fog")] Fog,
[EnumMember(Value = @"crystalMotes")] CrystalMotes,
[EnumMember(Value = @"rockMotes")] RockMotes,
[EnumMember(Value = @"iceMotes")] IceMotes,
[EnumMember(Value = @"sandMotes")] SandMotes,
[EnumMember(Value = @"crawlies")] Crawlies,
[EnumMember(Value = @"fireflies")] Fireflies,
[EnumMember(Value = @"plankton")] Plankton,
[EnumMember(Value = @"pollen")] Pollen,
[EnumMember(Value = @"current")] Current
}
[JsonConverter(typeof(StringEnumConverter))]
public enum FollowTarget
{
[EnumMember(Value = @"player")] Player,
[EnumMember(Value = @"probe")] Probe
}
}
}