mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
feat: implement spell queue window (400ms pre-cast)
When castSpell() is called while a timed cast is in progress and castTimeRemaining <= 0.4s, store the spell in queuedSpellId_ instead of silently dropping it. handleSpellGo() fires the queued spell immediately after clearing the cast state, matching the ~400ms spell queue window in Blizzlike WoW clients. Queue is cleared on all cancel/interrupt paths: cancelCast(), handleCastFailed(), SMSG_CAST_RESULT failure, SMSG_SPELL_FAILED, world-teardown, and worldport ACK. Channeled casts never queue (cancelling a channel should remain explicit).
This commit is contained in:
parent
0f8852d290
commit
4907f4124b
2 changed files with 38 additions and 3 deletions
|
|
@ -2725,6 +2725,9 @@ private:
|
|||
// Repeat-craft queue: re-cast the same profession spell N more times after current cast finishes
|
||||
uint32_t craftQueueSpellId_ = 0;
|
||||
int craftQueueRemaining_ = 0;
|
||||
// Spell queue: next spell to cast within the 400ms window before current cast ends
|
||||
uint32_t queuedSpellId_ = 0;
|
||||
uint64_t queuedSpellTarget_ = 0;
|
||||
// Per-unit cast state (keyed by GUID, populated from SMSG_SPELL_START)
|
||||
std::unordered_map<uint64_t, UnitCastState> unitCastStates_;
|
||||
uint64_t pendingGameObjectInteractGuid_ = 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue