feat(ui): port retail dialog factory lifecycle
Replace the single mutable confirmation service with retail's property-backed DialogFactory model: fresh DAT roots, context ids, queue groups, priority preemption, callback/close-notice ordering, and context cancellation. Route /die, server confirmation aborts, and guarded item use through focused semantic owners. Co-Authored-By: Codex <codex@openai.com>
This commit is contained in:
parent
43f7c7807c
commit
66bdae7a83
22 changed files with 1442 additions and 220 deletions
|
|
@ -505,6 +505,22 @@ public static class GameEvents
|
|||
catch { return null; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 0x0276 CharacterConfirmationDone — server cancellation/completion of the
|
||||
/// outstanding confirmation tuple. Retail dispatches the same type/context
|
||||
/// pair to <c>RecvNotice_AbortConfirmationRequest</c>.
|
||||
/// </summary>
|
||||
public readonly record struct CharacterConfirmationDone(uint Type, uint ContextId);
|
||||
|
||||
public static CharacterConfirmationDone? ParseCharacterConfirmationDone(
|
||||
ReadOnlySpan<byte> payload)
|
||||
{
|
||||
if (payload.Length < 8) return null;
|
||||
return new CharacterConfirmationDone(
|
||||
BinaryPrimitives.ReadUInt32LittleEndian(payload),
|
||||
BinaryPrimitives.ReadUInt32LittleEndian(payload.Slice(4)));
|
||||
}
|
||||
|
||||
// ── Shared string reader (matches LoginRequest.ReadString16L) ───────────
|
||||
|
||||
private static string ReadString16L(ReadOnlySpan<byte> source, ref int pos)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue