コード例 #1
0
        private static RootSchema GetHeroListReference(string description)
        {
            RootSchema schema = new RootSchema(description);

            schema.Ref = "#/definitions/HeroList";
            return(schema);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        private static RootSchema GetCustomSettingsSchema(SchemaGenerate generate)
        {
            RootSchema schema = new RootSchema().InitProperties();

            schema.AdditionalProperties = true;
            schema.Type = SchemaObjectType.Object;
            return(schema);
        }
コード例 #5
0
        protected override RootSchema GetSchema()
        {
            RootSchema schema = new RootSchema();

            schema.Type    = SchemaObjectType.Boolean;
            schema.Default = Default;
            return(schema);
        }
コード例 #6
0
        protected override RootSchema GetSchema()
        {
            RootSchema schema = new RootSchema();

            schema.Type    = SchemaObjectType.String;
            schema.Enum    = Values;
            schema.Default = Values[0];
            return(schema);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
        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);
        }
コード例 #13
0
        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);
        }