From b77f7c1c50aeb6b4e3c60c8968f9a47c9ae8d96e Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Thu, 25 Jun 2026 22:58:04 -0700 Subject: [PATCH] style(spawners): one attribute per line on SpawnerDto properties Co-Authored-By: Claude Opus 4.8 (1M context) --- .../Engines/Spawners/Json/SpawnerDto.cs | 85 ++++++++++++++----- 1 file changed, 65 insertions(+), 20 deletions(-) diff --git a/Projects/UOContent/Engines/Spawners/Json/SpawnerDto.cs b/Projects/UOContent/Engines/Spawners/Json/SpawnerDto.cs index 1e9e6c198..bd8b67256 100644 --- a/Projects/UOContent/Engines/Spawners/Json/SpawnerDto.cs +++ b/Projects/UOContent/Engines/Spawners/Json/SpawnerDto.cs @@ -33,43 +33,73 @@ namespace Server.Engines.Spawners; public abstract record SpawnerDto { // --- Mandatory: always written (overrides the options' WhenWritingDefault) --- - [JsonPropertyName("guid")][JsonPropertyOrder(0)][JsonIgnore(Condition = JsonIgnoreCondition.Never)] + [JsonPropertyName("guid")] + [JsonPropertyOrder(0)] + [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public Guid Guid { get; init; } - [JsonPropertyName("name")][JsonPropertyOrder(1)] + [JsonPropertyName("name")] + [JsonPropertyOrder(1)] public string Name { get; init; } - [JsonPropertyName("location")][JsonPropertyOrder(2)][JsonIgnore(Condition = JsonIgnoreCondition.Never)] + [JsonPropertyName("location")] + [JsonPropertyOrder(2)] + [JsonIgnore(Condition = JsonIgnoreCondition.Never)] [JsonConverter(typeof(Point3DArrayConverter))] public Point3D Location { get; init; } - [JsonPropertyName("map")][JsonPropertyOrder(3)][JsonIgnore(Condition = JsonIgnoreCondition.Never)] + [JsonPropertyName("map")] + [JsonPropertyOrder(3)] + [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public Map Map { get; init; } - [JsonPropertyName("count")][JsonPropertyOrder(4)][JsonIgnore(Condition = JsonIgnoreCondition.Never)] + [JsonPropertyName("count")] + [JsonPropertyOrder(4)] + [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public int Count { get; init; } - [JsonPropertyName("minDelay")][JsonPropertyOrder(5)][JsonIgnore(Condition = JsonIgnoreCondition.Never)] + [JsonPropertyName("minDelay")] + [JsonPropertyOrder(5)] + [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public TimeSpan MinDelay { get; init; } - [JsonPropertyName("maxDelay")][JsonPropertyOrder(6)][JsonIgnore(Condition = JsonIgnoreCondition.Never)] + [JsonPropertyName("maxDelay")] + [JsonPropertyOrder(6)] + [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public TimeSpan MaxDelay { get; init; } // --- Optional: omitted at default via WhenWritingDefault (spawnBounds/region are on subtypes, order 8) --- - [JsonPropertyName("team")][JsonPropertyOrder(7)] public int Team { get; init; } - [JsonPropertyName("walkingRange")][JsonPropertyOrder(9)] public int WalkingRange { get; init; } + [JsonPropertyName("team")] + [JsonPropertyOrder(7)] + public int Team { get; init; } - [JsonPropertyName("entries")][JsonPropertyOrder(10)][JsonIgnore(Condition = JsonIgnoreCondition.Never)] + [JsonPropertyName("walkingRange")] + [JsonPropertyOrder(9)] + public int WalkingRange { get; init; } + + [JsonPropertyName("entries")] + [JsonPropertyOrder(10)] + [JsonIgnore(Condition = JsonIgnoreCondition.Never)] public List Entries { get; init; } - [JsonPropertyName("spawnLocationIsHome")][JsonPropertyOrder(11)] public bool SpawnLocationIsHome { get; init; } - [JsonPropertyName("spawnPositionMode")][JsonPropertyOrder(12)] public SpawnPositionMode SpawnPositionMode { get; init; } - [JsonPropertyName("maxSpawnAttempts")][JsonPropertyOrder(13)] public int MaxSpawnAttempts { get; init; } + [JsonPropertyName("spawnLocationIsHome")] + [JsonPropertyOrder(11)] + public bool SpawnLocationIsHome { get; init; } + + [JsonPropertyName("spawnPositionMode")] + [JsonPropertyOrder(12)] + public SpawnPositionMode SpawnPositionMode { get; init; } + + [JsonPropertyName("maxSpawnAttempts")] + [JsonPropertyOrder(13)] + public int MaxSpawnAttempts { get; init; } // Compact square-bounds form. -1 = "not a homeRange square" (use spawnBounds instead). Written // only when >= 0 (SpawnerJsonSerializer sets ShouldSerialize: hr >= 0, since 0 is a valid radius // that WhenWritingDefault cannot emit). On read it reconstructs SpawnBounds in ApplyDto. - [JsonPropertyName("homeRange")][JsonPropertyOrder(8)] public int HomeRange { get; init; } = -1; + [JsonPropertyName("homeRange")] + [JsonPropertyOrder(8)] + public int HomeRange { get; init; } = -1; /// Constructs the empty concrete spawner Item for this DTO. protected abstract BaseSpawner CreateEmpty(); @@ -96,7 +126,9 @@ public abstract record SpawnerDto [JsonDiscoverableType("Spawner")] public sealed record SpawnerDataDto : SpawnerDto { - [JsonPropertyName("spawnBounds")][JsonPropertyOrder(8)] public Rectangle3D SpawnBounds { get; init; } + [JsonPropertyName("spawnBounds")] + [JsonPropertyOrder(8)] + public Rectangle3D SpawnBounds { get; init; } protected override BaseSpawner CreateEmpty() => new Spawner(); @@ -123,7 +155,9 @@ public sealed record SpawnerDataDto : SpawnerDto [JsonDiscoverableType("RegionSpawner")] public sealed record RegionSpawnerDto : SpawnerDto { - [JsonPropertyName("region")][JsonPropertyOrder(8)] public string Region { get; init; } + [JsonPropertyName("region")] + [JsonPropertyOrder(8)] + public string Region { get; init; } protected override BaseSpawner CreateEmpty() => new RegionSpawner(); @@ -146,10 +180,21 @@ public sealed record RegionSpawnerDto : SpawnerDto [JsonDiscoverableType("ProximitySpawner")] public sealed record ProximitySpawnerDto : SpawnerDto { - [JsonPropertyName("spawnBounds")][JsonPropertyOrder(8)] public Rectangle3D SpawnBounds { get; init; } - [JsonPropertyName("triggerRange")][JsonPropertyOrder(14)] public int TriggerRange { get; init; } - [JsonPropertyName("spawnMessage")][JsonPropertyOrder(15)] public TextDefinition SpawnMessage { get; init; } - [JsonPropertyName("instant")][JsonPropertyOrder(16)] public bool Instant { get; init; } + [JsonPropertyName("spawnBounds")] + [JsonPropertyOrder(8)] + public Rectangle3D SpawnBounds { get; init; } + + [JsonPropertyName("triggerRange")] + [JsonPropertyOrder(14)] + public int TriggerRange { get; init; } + + [JsonPropertyName("spawnMessage")] + [JsonPropertyOrder(15)] + public TextDefinition SpawnMessage { get; init; } + + [JsonPropertyName("instant")] + [JsonPropertyOrder(16)] + public bool Instant { get; init; } protected override BaseSpawner CreateEmpty() => new ProximitySpawner();