fix(ui): select and examine favorite spells like retail

This commit is contained in:
Erik 2026-07-24 06:47:54 +02:00
parent 043ab10b3c
commit 3e31b0ac70
23 changed files with 974 additions and 34 deletions

View file

@ -553,6 +553,31 @@ public sealed class ItemInteractionController : IDisposable
return true;
}
/// <summary>
/// Releases only the object-appraisal transaction before the local spell
/// examination subview takes ownership of the shared floaty window.
///
/// Retail <c>gmExaminationUI::ExamineSpell @ 0x004B6900</c> decrements the
/// appraisal busy reference when a response is pending, clears both pending
/// and current object ids, and sends <c>CM_Item::Event_Appraise(0)</c>. It
/// does not clear unrelated use/inventory busy references.
/// </summary>
public void CancelObjectAppraisalForSpell()
{
if (_awaitingAppraisalId == 0u && _currentAppraisalId == 0u)
return;
if (_awaitingAppraisalId != 0u)
{
_awaitingAppraisalId = 0u;
if (_busyCount > 0)
_busyCount--;
}
_currentAppraisalId = 0u;
_sendExamine?.Invoke(0u);
StateChanged?.Invoke();
}
/// <summary>
/// Projects retail <c>gmToolbarUI::HandleSelectionChanged @ 0x004BF380</c>
/// from the live selected object's public description. This is deliberately