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;
}
}