refactor(protocol): cliloc-style message catalog for gameplay cues (#59) #72
No reviewers
Labels
No labels
alpha:wave-0
alpha:wave-1
alpha:wave-2
alpha:wave-3
area:assets
area:combat
area:ecology
area:infra
area:render
area:scripting
area:ui
area:world
enhancement
epic
migration
post-alpha
roadmap
tech-debt
type:bug
type:chore
type:design
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
marco/IsoMmo!72
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/cliloc-message-catalog"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Server sends a message id + args; the client owns the strings and formats them (UO cliloc-style, but a typed
SystemMessageIdenum, not magic numbers). Closes #59 for the gameplay cues.What changed
SystemMessageId(Shared/Protocol) + aSystemNotice(Id, Args)server→client message.SystemMessageCatalog(Client.Core, unit-tested) maps an id → template and fills the args;GameScreenrenders aSystemNoticethrough it into the journal.SpellCastResult.Messageis now aSystemMessageId(CantCastWhileDead, SpellNotImplemented, InvalidTarget, NotEnoughMana, OutOfRange, NoLineOfSight);WorldTick+ the cast handler build it viaGameNotices.SkillIncreased(args: skill, gained, now).SystemMessagestays for genuinely dynamic/admin text (GM command feedback, targeting errors) — a later pass can catalogue those too.Presentation copy for gameplay cues now lives in one client table (localization-ready), out of the server game logic — ready for slice 2's many new cues (invalid-combo, timeout, disrupted, …).
just lint→ 0 warnings.just test→ full suite green (Client.Core 53 incl. 4 new catalog tests, GameServer 145).Definition of Done
SystemNotice(id, args), not text.Formatcovers everySystemMessageId(test-enforced).SpellSystem/WorldTick/the cast handler.Note: GM command feedback + targeting errors stay freeform for now (admin, dynamic) — cataloguing them is an easy follow-up.