using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; namespace Generator { public class SteamApiDefinition { public class TypeDef { [JsonProperty( PropertyName = "typedef" )] public string Name { get; set; } [JsonProperty( PropertyName = "type" )] public string Type { get; set; } } public List typedefs { get; set; } public class EnumDef { public class EnumValue { [JsonProperty( PropertyName = "name" )] public string Name { get; set; } [JsonProperty( PropertyName = "value" )] public string Value { get; set; } } [JsonProperty( PropertyName = "enumname" )] public string Name { get; set; } [JsonProperty( PropertyName = "values" )] public EnumValue[] Values { get; set; } } public EnumDef[] enums { get; set; } public class StructDef { public class StructFields { [JsonProperty( PropertyName = "fieldname" )] public string Name { get; set; } [JsonProperty( PropertyName = "fieldtype" )] public string Type { get; set; } } [JsonProperty( PropertyName = "struct" )] public string Name { get; set; } [JsonProperty( PropertyName = "fields" )] public StructFields[] Fields { get; set; } public string CallbackId { get; set; } public bool IsCallResult { get; set; } public bool IsPack4OnWindows { get { // 4/8 packing is irrevant to these classes if ( Name.Contains( "MatchMakingKeyValuePair_t" ) ) return true; if ( Fields.Any( x => x.Type.Contains( "CSteamID" ) ) ) return true; return false; } } } public List structs { get; set; } public class MethodDef { public class ParamType { [JsonProperty( PropertyName = "paramname" )] public string Name { get; set; } [JsonProperty( PropertyName = "paramtype" )] public string Type { get; set; } } [JsonProperty( PropertyName = "classname" )] public string ClassName { get; set; } [JsonProperty( PropertyName = "methodname" )] public string Name { get; set; } [JsonProperty( PropertyName = "returntype" )] public string ReturnType { get; set; } [JsonProperty( PropertyName = "params" )] public ParamType[] Params { get; set; } [JsonProperty( PropertyName = "callresult" )] public string CallResult { get; set; } public bool NeedsSelfPointer = true; } public List methods { get; set; } public Dictionary CallbackIds { get; internal set; } public Dictionary Defines { get; internal set; } } }