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:
Erik 2026-07-13 16:30:05 +02:00
parent 43f7c7807c
commit 66bdae7a83
22 changed files with 1442 additions and 220 deletions

View file

@ -288,6 +288,21 @@ public sealed class ItemInteractionController : IDisposable
public bool AcquireSelfTarget()
=> IsTargetModeActive && AcquireTarget(_playerGuid());
/// <summary>
/// Completes the positive branch of retail
/// <c>ClientUISystem::UsageCallback @ 0x00565B20</c>. Confirmation policy has
/// already consumed the original activation, so acceptance sends the retained
/// object id and enters the same busy state as an ordinary use.
/// </summary>
public bool ExecuteConfirmedUse(uint objectId)
{
if (objectId == 0u || _sendUse is null)
return false;
_sendUse(objectId);
_busyCount++;
return true;
}
public void CancelTargetMode()
{
if (!IsAnyTargetModeActive) return;