using System; using System.Collections.Generic; using System.Runtime.Serialization; using Newtonsoft.Json; namespace VketCloudGUITools.Serialization { /// /// HeliodorのCanvasJSONシリアライズ用 /// UIコンテンツ /// [JsonObject(MissingMemberHandling = MissingMemberHandling.Ignore)] [Serializable] public class VCContentDef { [JsonProperty(Order = 0, DefaultValueHandling = DefaultValueHandling.Ignore)] public string Name; [JsonProperty(Order = 1, DefaultValueHandling = DefaultValueHandling.Ignore)] public string Type; [JsonProperty(Order = 2, DefaultValueHandling = DefaultValueHandling.Ignore)] public string Platform; [JsonProperty(Order = 3, DefaultValueHandling = DefaultValueHandling.Ignore)] public string Language; [JsonProperty(Order = 4, DefaultValueHandling = DefaultValueHandling.Ignore)] public string Portrait; [JsonProperty(Order = 5, DefaultValueHandling = DefaultValueHandling.Include)] public bool RaycastTarget = true; [JsonProperty(Order = 6, DefaultValueHandling = DefaultValueHandling.Ignore)] public bool Show; [JsonProperty(Order = 7, DefaultValueHandling = DefaultValueHandling.Ignore)] public int[] Pos; [JsonProperty(Order = 8, DefaultValueHandling = DefaultValueHandling.Ignore)] public int[] Size; [JsonProperty(Order = 9, DefaultValueHandling = DefaultValueHandling.Include)] public int Z; [JsonProperty(Order = 10, DefaultValueHandling = DefaultValueHandling.Ignore)] public float[] Pivot; [JsonProperty(Order = 11, DefaultValueHandling = DefaultValueHandling.Ignore)] public string Anchor; [JsonProperty(Order = 12, DefaultValueHandling = DefaultValueHandling.Ignore)] public ParamButton ParamButton = null; [JsonProperty(Order = 13, DefaultValueHandling = DefaultValueHandling.Ignore)] public ParamText ParamText = null; [JsonProperty(Order = 14, DefaultValueHandling = DefaultValueHandling.Ignore)] public ParamImage ParamImage = null; [JsonProperty(Order = 15, DefaultValueHandling = DefaultValueHandling.Ignore)] public List Toggle = null; [JsonProperty(Order = 16, DefaultValueHandling = DefaultValueHandling.Ignore)] public List>> GUIAction; [JsonProperty(Order = 17, DefaultValueHandling = DefaultValueHandling.Ignore)] public ParamSlider ParamSlider = null; [JsonProperty(Order = 18, DefaultValueHandling = DefaultValueHandling.Ignore)] public ParamHtml ParamHtml = null; [JsonProperty(Order = 19, DefaultValueHandling = DefaultValueHandling.Ignore, PropertyName = @"//")] public string Comment = null; } [Serializable] [JsonObject] public class VCStateToggleDef { [JsonProperty(Order = 0)] public string Name = string.Empty; [JsonProperty(Order = 1)] public bool State = false; } [Serializable] [JsonObject] public class ParamButton { [JsonProperty(Order = 0)] public string FileName; [JsonProperty(Order = 1)] public string OnCursorFileName; [JsonProperty(Order = 2)] public string DownFileName; [JsonProperty(Order = 3, NullValueHandling = NullValueHandling.Ignore)] public List UVArea; [JsonProperty(Order = 4, NullValueHandling = NullValueHandling.Ignore)] public List ClickAreaSize; [JsonProperty(Order = 5, NullValueHandling = NullValueHandling.Ignore)] public List LTRB; [JsonProperty(Order = 6, NullValueHandling = NullValueHandling.Ignore)] public string ClickAreaFileName; [JsonProperty(Order = 7, NullValueHandling = NullValueHandling.Ignore)] public Flick Flick; [JsonProperty(Order = 8, NullValueHandling = NullValueHandling.Ignore)] public List OnKeyDownMulColor; [JsonProperty(Order = 3, NullValueHandling = NullValueHandling.Ignore)] public List UVAreaRate; } [Serializable] [JsonObject] public class ParamText { [JsonProperty(Order = 0)] public int FontSize; [JsonProperty(Order = 1)] public float[] Color; [JsonProperty(Order = 2)] public string Text; [JsonProperty("Text_en",Order = 3, NullValueHandling = NullValueHandling.Ignore)] public string TextEn; [JsonProperty(Order = 4)] public string Alignment; [JsonProperty(Order = 5)] public string FontFamily; [JsonProperty(Order = 6)] public int CharaSpace; [JsonProperty(Order = 7)] public int LineSpace; [JsonProperty(Order = 8)] public bool OverflowWrap; [JsonProperty(Order = 9)] public bool URLClickable; [JsonProperty(Order = 10)] public List URLColor; } [Serializable] [JsonObject] public class ParamImage { [DataMember(Order = 0)] public string Uri; [JsonProperty(Order = 1, NullValueHandling = NullValueHandling.Ignore)] public List UVArea; [JsonProperty(Order = 2, NullValueHandling = NullValueHandling.Ignore)] public List UVAreaRate; } [Serializable] [JsonObject] public class ParamSlider { [DataMember(Order = 0)] public string Base; [DataMember(Order = 1)] public string Front; [DataMember(Order = 2)] public string OnName; [DataMember(Order = 3)] public int[] OnSize; [DataMember(Order = 4)] public string OffName; [DataMember(Order = 5)] public int[] OffSize; [DataMember(Order = 6)] public string DriveField; } [Serializable] [JsonObject] public class Flick { [JsonProperty(Order = 0)] public int CheckTime = 300; [JsonProperty(Order = 1)] public int LengthThreshold = 32; public bool IsDefaultValue() { return CheckTime == 300 && LengthThreshold == 32; } } [Serializable] public enum ParamTextAlignment { LT, CT, RT, LM, CM, RM, LB, CB, RB, } [Serializable] [JsonObject] public class ParamHtml { [JsonProperty(Order = 0)] public int FontSize; } }