private static RootSchema GetHeroListReference(string description) { RootSchema schema = new RootSchema(description); schema.Ref = "#/definitions/HeroList"; return(schema); }
public override RootSchema GetSchema(SchemaGenerate generate) { RootSchema schema = base.GetSchema(generate); schema.AdditionalProperties = false; // Get the mode's maps. string[] modeMaps = LobbyMap.AllMaps.Where(map => map.GameModes.Any(mode => mode.ToLower() == ModeName.ToLower())).Select(map => map.Name).ToArray(); if (modeMaps.Length == 0) { return(schema); } // Create the map schema. RootSchema maps = new RootSchema { Type = SchemaObjectType.Array, UniqueItems = true, Items = new RootSchema() { Type = SchemaObjectType.String, Enum = modeMaps } }; // Add the map schema to the list of definitions. generate.Definitions.Add(ModeName + " Maps", maps); // Add the map schema reference to the current schema. schema.Properties.Add("Enabled Maps", GetMapReference("An array of enabled maps for the '" + ModeName + "' mode.")); schema.Properties.Add("Disabled Maps", GetMapReference("An array of disabled maps for the '" + ModeName + "' mode.")); return(schema); }
public static void GenerateSchema() { // Initialize the root. RootSchema root = new RootSchema().InitDefinitions().InitProperties(); root.Schema = "http://json-schema.org/draft-04/schema#"; root.Type = SchemaObjectType.Object; root.Title = "JSON schema for OSTW lobby setting files."; root.AdditionalProperties = false; SchemaGenerate generate = new SchemaGenerate(root.Definitions); root.Properties.Add("Lobby", GetLobby(generate)); root.Properties.Add("Modes", GetModes(generate)); root.Definitions.Add("HeroList", GetHeroList(generate)); // Get the hero settings. RootSchema heroesRoot = new RootSchema("Hero settings.").InitProperties(); root.Properties.Add("Heroes", heroesRoot); heroesRoot.Properties.Add("General", GetHeroListReference("The list of hero settings that affects both teams.")); heroesRoot.Properties.Add("Team 1", GetHeroListReference("The list of hero settings that affects team 1.")); heroesRoot.Properties.Add("Team 2", GetHeroListReference("The list of hero settings that affects team 2.")); heroesRoot.AdditionalProperties = false; // Get the result. string result = JsonConvert.SerializeObject(root, new JsonSerializerSettings() { DefaultValueHandling = DefaultValueHandling.Ignore, Formatting = Formatting.Indented }); Program.WorkshopCodeResult(result); }
private static RootSchema GetCustomSettingsSchema(SchemaGenerate generate) { RootSchema schema = new RootSchema().InitProperties(); schema.AdditionalProperties = true; schema.Type = SchemaObjectType.Object; return(schema); }
protected override RootSchema GetSchema() { RootSchema schema = new RootSchema(); schema.Type = SchemaObjectType.Boolean; schema.Default = Default; return(schema); }
protected override RootSchema GetSchema() { RootSchema schema = new RootSchema(); schema.Type = SchemaObjectType.String; schema.Enum = Values; schema.Default = Values[0]; return(schema); }
public virtual RootSchema GetSchema(SchemaGenerate generate) { RootSchema schema = new RootSchema(Title).InitProperties(); schema.AdditionalProperties = false; foreach (var value in this) { schema.Properties.Add(value.Name, value.GetSchema(generate)); } return(schema); }
private static RootSchema GetModes(SchemaGenerate generate) { RootSchema schema = new RootSchema().InitProperties(); schema.AdditionalProperties = false; foreach (var mode in ModeSettingCollection.AllModeSettings) { schema.Properties.Add(mode.ModeName, mode.GetSchema(generate)); } return(schema); }
private static RootSchema GetLobby(SchemaGenerate generate) { RootSchema schema = new RootSchema().InitProperties(); schema.AdditionalProperties = false; foreach (var lobbySetting in LobbySettings) { schema.Properties.Add(lobbySetting.Name, lobbySetting.GetSchema(generate)); } return(schema); }
public static void GenerateSchema() { // Initialize the root. RootSchema root = new RootSchema().InitDefinitions().InitProperties(); root.Schema = "http://json-schema.org/draft-04/schema#"; root.Type = SchemaObjectType.Object; root.Title = "JSON schema for OSTW lobby setting files."; root.AdditionalProperties = false; SchemaGenerate generate = new SchemaGenerate(root.Definitions); root.Properties.Add("Lobby", GetLobby(generate)); // Add 'Lobby' property. root.Properties.Add("Modes", GetModes(generate)); // Add 'Modes' property. root.Definitions.Add("HeroList", GetHeroList(generate)); // Get the hero settings. RootSchema heroesRoot = new RootSchema("Hero settings.").InitProperties(); root.Properties.Add("Heroes", heroesRoot); // Add 'Heroes' property. // Add team properties to heroes. heroesRoot.Properties.Add("General", GetHeroListReference("The list of hero settings that affects both teams.")); heroesRoot.Properties.Add("Team 1", GetHeroListReference("The list of hero settings that affects team 1.")); heroesRoot.Properties.Add("Team 2", GetHeroListReference("The list of hero settings that affects team 2.")); heroesRoot.AdditionalProperties = false; // Add 'Description' property. root.Properties.Add("Description", new RootSchema("The description of the custom game.") { Type = SchemaObjectType.String }); // Add 'Mode Name' property root.Properties.Add("Mode Name", new RootSchema("The name of the custom game mode.") { Type = SchemaObjectType.String }); // Add 'Workshop' property. root.Properties.Add("Workshop", GetCustomSettingsSchema(generate)); // Add 'Extensions' property. root.Properties.Add("Extensions", ExtensionInfo.GetSchema()); // Get the result. string result = JsonConvert.SerializeObject(root, new JsonSerializerSettings() { DefaultValueHandling = DefaultValueHandling.Ignore, Formatting = Formatting.Indented }); Program.WorkshopCodeResult(result); }
public RootSchema GetSchema(SchemaGenerate generate) { if (Reference == null) { RootSchema definition = GetSchema(); generate.Definitions.Add(ReferenceName, definition); Reference = new RootSchema(); Reference.Ref = "#/definitions/" + ReferenceName; } return(Reference); }
protected override RootSchema GetSchema() { RootSchema schema = new RootSchema(); if (Integer) { schema.Type = SchemaObjectType.Integer; } else { schema.Type = SchemaObjectType.Number; } schema.Minimum = Min; schema.Maximum = Max; schema.Default = Default; return(schema); }
private static RootSchema GetHeroList(SchemaGenerate generate) { RootSchema schema = new RootSchema().InitProperties(); schema.AdditionalProperties = false; List <string> heroNames = new List <string>(); foreach (var heroSettings in HeroSettingCollection.AllHeroSettings) { schema.Properties.Add(heroSettings.HeroName, heroSettings.GetSchema(generate)); heroNames.Add(heroSettings.HeroName); } // Create the map schema. RootSchema heroes = new RootSchema { Type = SchemaObjectType.Array, UniqueItems = true, Items = new RootSchema() { Type = SchemaObjectType.String, Enum = heroNames.ToArray() } }; // Add the map schema to the list of definitions. generate.Definitions.Add("All Heroes", heroes); RootSchema allHeroesReference = new RootSchema() { Ref = "#/definitions/All Heroes" }; // Add the map schema reference to the current schema. schema.Properties.Add("Enabled Heroes", allHeroesReference); schema.Properties.Add("Disabled Heroes", allHeroesReference); return(schema); }