using NewHorizons.Utility;
using System.ComponentModel;
using System.Runtime.Serialization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace NewHorizons.External.Props
{
[JsonObject]
public class NomaiTextInfo : GeneralPointPropInfo
{
[JsonConverter(typeof(StringEnumConverter))]
public enum NomaiTextType
{
[EnumMember(Value = @"wall")] Wall = 0,
[EnumMember(Value = @"scroll")] Scroll = 1,
[EnumMember(Value = @"computer")] Computer = 2,
[EnumMember(Value = @"cairn")] Cairn = 3,
[EnumMember(Value = @"recorder")] Recorder = 4,
[EnumMember(Value = @"preCrashRecorder")] PreCrashRecorder = 5,
[EnumMember(Value = @"preCrashComputer")] PreCrashComputer = 6,
[EnumMember(Value = @"trailmarker")] Trailmarker = 7,
[EnumMember(Value = @"cairnVariant")] CairnVariant = 8,
}
[JsonConverter(typeof(StringEnumConverter))]
public enum NomaiTextLocation
{
[EnumMember(Value = @"unspecified")] UNSPECIFIED = 0,
[EnumMember(Value = @"a")] A = 1,
[EnumMember(Value = @"b")] B = 2
}
///
/// Additional information about each arc in the text
///
public NomaiTextArcInfo[] arcInfo;
///
/// The normal vector for this object. Used for writing on walls and positioning computers.
///
public MVector3 normal;
///
/// The euler angle rotation of this object. Not required if setting the normal. Computers and cairns will orient
/// themselves to the surface of the planet automatically.
///
public MVector3 rotation;
///
/// The random seed used to pick what the text arcs will look like.
///
public int seed; // For randomizing arcs
///
/// The type of object this is.
///
[DefaultValue("wall")] public NomaiTextType type = NomaiTextType.Wall;
///
/// The location of this object.
///
[DefaultValue("unspecified")] public NomaiTextLocation location = NomaiTextLocation.UNSPECIFIED;
///
/// The relative path to the xml file for this object.
///
public string xmlFile;
}
}