ModernUO/Projects
Kamron Batman 3c9434a52a refactor(spawners): non-nullable SpawnerDto; write homeRange for square bounds
Drop nullable DTO types in favor of WhenWritingDefault + sentinels (ModernUO avoids
nullable). guid/location/map/count/minDelay/maxDelay/entries are mandatory (force-written
via [JsonIgnore(Never)]); optional fields omit at their default. spawnPositionMode/
maxSpawnAttempts map their non-CLR-default "omit" value onto the default in ToDto.

Reintroduce compact homeRange: ToDto writes homeRange (the radius) only when SpawnBounds is
EXACTLY what that radius reconstructs (square, centered, standard z/depth) so the round-trip
is lossless; otherwise it writes spawnBounds. homeRange uses a -1 "absent" sentinel and a
ShouldSerialize(hr >= 0) since 0 is a valid radius WhenWritingDefault cannot emit.
JsonPropertyOrder preserves the on-disk field order.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 18:32:11 -07:00
..
Application feat(build-tool): add application icon and refresh MUO.ico (#2487) 2026-06-14 11:59:54 -07:00
BuildTool feat(build-tool): add application icon and refresh MUO.ico (#2487) 2026-06-14 11:59:54 -07:00
Logger fix: Fixes publishing with build tool (#2398) 2026-04-04 00:35:39 -07:00
Server refactor(json): delete DynamicJson; spawners use SpawnerDto exclusively 2026-06-25 16:27:54 -07:00
Server.Tests feat(json): add reusable JsonDiscoverableType opt-in marker attribute 2026-06-25 10:17:28 -07:00
UOContent refactor(spawners): non-nullable SpawnerDto; write homeRange for square bounds 2026-06-25 18:32:11 -07:00
UOContent.Tests refactor(spawners): non-nullable SpawnerDto; write homeRange for square bounds 2026-06-25 18:32:11 -07:00