// #nullable enable namespace GFramework.Game.Config.Generated; /// /// Auto-generated config type for schema file 'monster.schema.json'. /// Represents one monster entry generated from schema metadata. /// /// /// Constraints: minProperties = 4, maxProperties = 8. /// public sealed partial class MonsterConfig { /// /// Unique monster identifier. /// /// /// Schema property path: 'id'. /// public int Id { get; set; } /// /// Localized monster display name. /// /// /// Schema property path: 'name'. /// Display title: 'Monster Name'. /// Allowed values: Slime, Goblin. /// Constraints: minLength = 3, maxLength = 16, pattern = '^[A-Z][a-z]+$'. /// Generated default initializer: = "Slime"; /// public string Name { get; set; } = "Slime"; /// /// Gets or sets the value mapped from schema property path 'hp'. /// /// /// Schema property path: 'hp'. /// Constraints: const = 10, minimum = 1, exclusiveMinimum = 0, maximum = 999, exclusiveMaximum = 1000, multipleOf = 5. /// Generated default initializer: = 10; /// public int? Hp { get; set; } = 10; /// /// Referenced drop ids. /// /// /// Schema property path: 'dropItems'. /// Allowed values: potion, slime_gel. /// Constraints: minItems = 1, maxItems = 3, uniqueItems = true, contains = string (const = "potion"), minContains = 1, maxContains = 2. /// References config table: 'item'. /// Item constraints: minLength = 3, maxLength = 12. /// Generated default initializer: = new string[] { "potion" }; /// public global::System.Collections.Generic.IReadOnlyList DropItems { get; set; } = new string[] { "potion" }; /// /// Reward payload. /// /// /// Schema property path: 'reward'. /// Generated default initializer: = new(); /// public RewardConfig Reward { get; set; } = new(); /// /// Encounter phases. /// /// /// Schema property path: 'phases'. /// Generated default initializer: = global::System.Array.Empty<PhasesItemConfig>(); /// public global::System.Collections.Generic.IReadOnlyList Phases { get; set; } = global::System.Array.Empty(); /// /// Auto-generated nested config type for schema property path 'reward'. /// Reward payload. /// /// /// Constraints: minProperties = 2, maxProperties = 2, dependentRequired = { currency => [gold] }, dependentSchemas = { currency => object (required = [gold]) }, allOf = [ object (required = [gold]) ], if/then/else = if object; properties = { currency: string (const = "gem") }; then object (required = [gold]); properties = { gold: integer }; else object (required = [currency]); properties = { currency: string }. /// public sealed partial class RewardConfig { /// /// Gets or sets the value mapped from schema property path 'reward.gold'. /// /// /// Schema property path: 'reward.gold'. /// Constraints: minimum = 0. /// Generated default initializer: = 10; /// public int Gold { get; set; } = 10; /// /// Gets or sets the value mapped from schema property path 'reward.currency'. /// /// /// Schema property path: 'reward.currency'. /// Allowed values: coin, gem. /// Generated default initializer: = string.Empty; /// public string Currency { get; set; } = string.Empty; } /// /// Auto-generated nested config type for schema property path 'phases[]'. /// This nested type is generated so object-valued schema fields remain strongly typed in consumer code. /// public sealed partial class PhasesItemConfig { /// /// Gets or sets the value mapped from schema property path 'phases[].wave'. /// /// /// Schema property path: 'phases[].wave'. /// public int Wave { get; set; } /// /// Monster reference id. /// /// /// Schema property path: 'phases[].monsterId'. /// Constraints: minLength = 2, maxLength = 32. /// References config table: 'monster'. /// Generated default initializer: = string.Empty; /// public string MonsterId { get; set; } = string.Empty; } }