ModernUO/Projects/UOContent/Gumps
Kamron Batman 50599e0453
perf: Migrate NPC and Skill UI gumps to DynamicGump/StaticGump (#2414)
## Summary

Migrates five legacy `Gump`-derived UI dialogs in the NPC and Skill domains to the modern `DynamicGump` builder pipeline. All five gumps were chosen as `DynamicGump` rather than `StaticGump<T>` because their layout shape varies per instance, and several of them carry per-instance localization numbers (cliloc IDs) that the static cache cannot bake (see CLAUDE.md gump-system rule and `dev-docs/gump-system.md`).

Per-gump rationale:

- **`TownCrierGump` (`Mobiles/Townfolk/TownCrier.cs`)** - DynamicGump. Announcement count varies, expiration text is rebuilt per render via `ValueStringBuilder`, and one button per entry is emitted in a loop.
- **`ClaimListGump` (`Mobiles/Vendors/NPC/AnimalTrainer.cs`)** - DynamicGump. The pet list and resulting background/alpha-region heights vary per stabling player.
- **`AnimalLoreGump` (`Skills/AnimalLore.cs`)** - DynamicGump. Page count itself varies (3 pages pre-AOS, 5 pages on AOS) and several `AddHtmlLocalized` calls use cliloc IDs computed from per-creature data (loyalty rating `1049595 + c.Loyalty / 10`, food preference, pack instinct), which violates the StaticGump cliloc-bake rule.
- **`DisguiseGump` (`Items/Skill Items/Thief/DisguiseKit.cs`)** - DynamicGump. Page count and entry order shift on `from.Female`, `Body.IsFemale`, and `startAtHair`.
- **`CommentsGump` (`Gumps/CommentsGump.cs`)** - DynamicGump. Comment list and pagination depend on `Account.Comments` size; the title label encodes the variable account username string.

All five are now `Singleton => true`, have `private` constructors, and expose static `DisplayTo(...)` entry points that validate prerequisites before constructing - guaranteeing no empty gumps (CLAUDE.md Sec.13). All internal refresh paths (prompts, `OnDoubleClick`, command handlers, target callbacks) were updated to call `DisplayTo` rather than `new XGump(...)`. Legacy `m_`-prefixed fields renamed to `_camelCase` (CLAUDE.md Sec.12), and `DisguiseEntry`'s `m_`-prefixed public readonly fields converted to PascalCase auto-properties. `OnResponse` signatures updated to `in RelayInfo info`. No external callers needed updating - all `new XGump(...)` sites lived inside the same files.
2026-04-25 19:51:42 -07:00
..
Base fix: Bumps deps. Updates copyrights (#2353) 2026-03-05 19:36:54 -08:00
Go perf: Migrate Travel/Moongate gumps to DynamicGump (#2412) 2026-04-25 17:03:24 -07:00
Guilds chore: Removes dead gump code (#2403) 2026-04-08 08:39:23 -06:00
Houses chore: Removes dead gump code (#2403) 2026-04-08 08:39:23 -06:00
Props feat: Consolidates staff gump layouts (#2404) 2026-04-08 11:42:46 -06:00
AddDoorGump.cs fix: Rewrites AddDoor command, fixes gump and returning to correct page. (#2056) 2025-01-08 10:32:37 -08:00
AdminGump.cs chore: Removes dead gump code (#2403) 2026-04-08 08:39:23 -06:00
BanDurationGump.cs chore: Removes dead gump code (#2403) 2026-04-08 08:39:23 -06:00
BaseConfirmGump.cs fix: Fixes issue with cached static gump strings. Fixes bad gump colors (#1771) 2024-05-10 22:44:16 -07:00
BaseGridGump.cs fix: Consolidates Color/Center html (#1762) 2024-05-07 23:56:32 -07:00
BaseImageTileButtonsGump.cs fix: Optimizes gump relay info (Prep for Static Gumps) (#1698) 2024-03-07 20:54:53 -08:00
ClientGump.cs feat: Adds size/style support to gump builders, optimizes EscapeHtml (#2257) 2025-11-23 11:35:31 -08:00
CommentsGump.cs perf: Migrate NPC and Skill UI gumps to DynamicGump/StaticGump (#2414) 2026-04-25 19:51:42 -07:00
ConfirmBreakCrystalGump.cs Fixes brace style (#248) 2020-09-13 21:49:46 -07:00
ConfirmHeritageGump.cs chore: Removes dead gump code (#2403) 2026-04-08 08:39:23 -06:00
ConfirmReleaseGump.cs feat: Moves gumps out of the core (#1916) 2024-08-09 19:07:32 -07:00
HeritageTokenGump.cs chore: Removes dead gump code (#2403) 2026-04-08 08:39:23 -06:00
NoticeGump.cs fix: Adds static warning/notice gumps. (#1741) 2024-04-26 17:19:16 -07:00
PetResurrectGump.cs feat: Adds size/style support to gump builders, optimizes EscapeHtml (#2257) 2025-11-23 11:35:31 -08:00
PlayerVendorGumps.cs chore: Removes dead gump code (#2403) 2026-04-08 08:39:23 -06:00
PolymorphGump.cs chore: Removes dead gump code (#2403) 2026-04-08 08:39:23 -06:00
ReclaimVendorGump.cs feat: Moves gumps out of the core (#1916) 2024-08-09 19:07:32 -07:00
ResurrectGump.cs fix: Fixes priced healer resurrection when not choosing the correct option (#2276) 2025-11-23 09:58:33 -08:00
RewardGump.cs feat: Adds item graphic size to Bounds.bin and makes item graphic offset available to gumps (#2115) 2025-02-10 19:31:39 -08:00
RunebookGump.cs fix: Actions on gump crash when Runebook has no entries (#1964) 2024-09-27 10:17:22 -07:00
SelectAddonDirectionGump.cs feat: Standardizes South/East selection gumps (#1839) 2025-02-14 00:15:14 -08:00
SkillsGump.cs feat: Consolidates staff gump layouts (#2404) 2026-04-08 11:42:46 -06:00
StaticNoticeGump.cs fix: Adds static warning/notice gumps. (#1741) 2024-04-26 17:19:16 -07:00
StaticWarningGump.cs feat: Adds size/style support to gump builders, optimizes EscapeHtml (#2257) 2025-11-23 11:35:31 -08:00
TithingGump.cs fix: Adds missing string interpolation handler for SetStringSlot (#2123) 2025-02-13 19:30:47 -08:00
ToTAdminGump.cs chore: Removes dead gump code (#2403) 2026-04-08 08:39:23 -06:00
VendorInventoryGump.cs feat: Moves gumps out of the core (#1916) 2024-08-09 19:07:32 -07:00
VendorRentalGumps.cs chore: Removes dead gump code (#2403) 2026-04-08 08:39:23 -06:00
ViewHousesGump.cs feat: Adds size/style support to gump builders, optimizes EscapeHtml (#2257) 2025-11-23 11:35:31 -08:00
VirtualCheckGump.cs fix: Bumps deps. Updates copyrights (#2353) 2026-03-05 19:36:54 -08:00
WarningGump.cs fix: Fixes issue with cached static gump strings. Fixes bad gump colors (#1771) 2024-05-10 22:44:16 -07:00
WhoGump.cs feat: Consolidates staff gump layouts (#2404) 2026-04-08 11:42:46 -06:00
YoungGumps.cs feat: Restyle young player gumps (#1917) 2024-08-10 11:06:18 -07:00