Mercurial > wow > reaction
comparison ActionButton.lua @ 297:f7a5676c9517
5.04 updates:
- refresh button checked state and cooldown in C-code
- display count for actions with charges
- update action button events
- pet action buttons - filter UNIT_AURA events by 'pet' type
author | Flick |
---|---|
date | Wed, 14 Nov 2012 16:34:14 -0800 |
parents | 0cb6a9944497 |
children | e337b39dc491 |
comparison
equal
deleted
inserted
replaced
296:08a1fbc9ee9b | 297:f7a5676c9517 |
---|---|
145 -- | 145 -- |
146 -- private | 146 -- private |
147 -- | 147 -- |
148 local eventList = { | 148 local eventList = { |
149 "PLAYER_ENTERING_WORLD", | 149 "PLAYER_ENTERING_WORLD", |
150 "ACTIONBAR_PAGE_CHANGED", | |
151 "ACTIONBAR_SLOT_CHANGED", | 150 "ACTIONBAR_SLOT_CHANGED", |
152 "UPDATE_BINDINGS", | 151 "UPDATE_BINDINGS", |
153 "ACTIONBAR_UPDATE_STATE", | |
154 "ACTIONBAR_UPDATE_USABLE", | 152 "ACTIONBAR_UPDATE_USABLE", |
155 "ACTIONBAR_UPDATE_COOLDOWN", | |
156 "UNIT_INVENTORY_CHANGED", | 153 "UNIT_INVENTORY_CHANGED", |
157 "LEARNED_SPELL_IN_TAB", | 154 "LEARNED_SPELL_IN_TAB", |
158 "UPDATE_INVENTORY_ALERTS", | 155 "UPDATE_INVENTORY_ALERTS", |
159 "PLAYER_TARGET_CHANGED", | 156 "PLAYER_TARGET_CHANGED", |
160 "TRADE_SKILL_SHOW", | 157 "TRADE_SKILL_SHOW", |
165 "START_AUTOREPEAT_SPELL", | 162 "START_AUTOREPEAT_SPELL", |
166 "STOP_AUTOREPEAT_SPELL", | 163 "STOP_AUTOREPEAT_SPELL", |
167 "UNIT_ENTERED_VEHICLE", | 164 "UNIT_ENTERED_VEHICLE", |
168 "UNIT_EXITED_VEHICLE", | 165 "UNIT_EXITED_VEHICLE", |
169 "COMPANION_UPDATE", | 166 "COMPANION_UPDATE", |
167 "UPDATE_SHAPESHIFT_FORM", | |
168 "SPELL_UPDATE_CHARGES", | |
169 "UPDATE_SUMMONPETS_ACTION", | |
170 } | 170 } |
171 | 171 |
172 -- | 172 -- |
173 -- Action Button class | 173 -- Action Button class |
174 -- | 174 -- |
343 self:UpdateMacroText() | 343 self:UpdateMacroText() |
344 self:UpdateCount() | 344 self:UpdateCount() |
345 self:UpdateTooltip() | 345 self:UpdateTooltip() |
346 self:UpdateCheckedState() | 346 self:UpdateCheckedState() |
347 self:UpdateUsable() | 347 self:UpdateUsable() |
348 self:UpdateCooldown() | |
349 self:UpdateFlash() | 348 self:UpdateFlash() |
350 end | 349 end |
351 | 350 |
352 function Action:UpdateAction() | 351 function Action:UpdateAction() |
353 local action = self:GetActionID() | 352 local action = self:GetActionID() |
354 if action ~= self.actionID then | 353 if action ~= self.actionID then |
355 self.actionID = action | 354 self.actionID = action |
355 | |
356 -- update checked state and cooldown in C-code | |
357 local f = self:GetFrame() | |
358 SetActionUIButton(f, action, f.cooldown) | |
359 | |
356 self:UpdateAll() | 360 self:UpdateAll() |
357 end | 361 end |
358 end | 362 end |
359 | 363 |
360 function Action:UpdateShowGrid() | 364 function Action:UpdateShowGrid() |
393 if tLeft then | 397 if tLeft then |
394 icon:SetTexCoord(tLeft,tRight,tTop,tBottom) | 398 icon:SetTexCoord(tLeft,tRight,tTop,tBottom) |
395 end | 399 end |
396 icon:Show() | 400 icon:Show() |
397 self.rangeTimer = -1 | 401 self.rangeTimer = -1 |
398 f:SetNormalTexture("Interface\\Buttons\\UI-Quickslot2") | |
399 else | 402 else |
400 icon:Hide() | 403 icon:Hide() |
401 self.frames.cooldown:Hide() | 404 self.frames.cooldown:Hide() |
402 self.rangeTimer = nil | 405 self.rangeTimer = nil |
403 f:SetNormalTexture("Interface\\Buttons\\UI-Quickslot") | |
404 end | 406 end |
405 end | 407 end |
406 | 408 |
407 function Action:GetIconTexture() | 409 function Action:GetIconTexture() |
408 return GetActionTexture(self.actionID) | 410 return GetActionTexture(self.actionID) |
420 end | 422 end |
421 end | 423 end |
422 | 424 |
423 function Action:UpdateMacroText() | 425 function Action:UpdateMacroText() |
424 local action = self.actionID | 426 local action = self.actionID |
425 if not IsConsumableAction(action) and not IsStackableAction(action) then | 427 if not IsConsumableAction(action) and |
428 not IsStackableAction(action) and | |
429 (IsItemAction(action) or GetActionCount(action) == 0) then | |
426 self.frames.name:SetText(GetActionText(action)) | 430 self.frames.name:SetText(GetActionText(action)) |
427 else | 431 else |
428 self.frames.name:SetText("") | 432 self.frames.name:SetText("") |
429 end | 433 end |
430 end | 434 end |
431 | 435 |
432 function Action:UpdateCount() | 436 function Action:UpdateCount() |
433 local action = self.actionID | 437 local action = self.actionID |
434 if IsConsumableAction(action) or IsStackableAction(action) then | 438 local count = GetActionCount(action) or 0 |
435 self.frames.count:SetText(GetActionCount(action)) | 439 if IsConsumableAction(action) or IsStackableAction(action) or (not IsItemAction(action) and count > 0) then |
436 else | 440 if count > 9999 then |
437 self.frames.count:SetText("") | 441 self.frames.count:SetText("*") |
442 else | |
443 self.frames.count:SetText(count) | |
444 end | |
445 else | |
446 local charges, maxCharges, chargeStart, chargeDuration = GetActionCharges(action) | |
447 charges = tonumber(charges) or 0 | |
448 maxCharges = tonumber(maxCharges) or 0 | |
449 if maxCharges > 1 then | |
450 self.frames.count:SetText(charges) | |
451 else | |
452 self.frames.count:SetText("") | |
453 end | |
438 end | 454 end |
439 end | 455 end |
440 | 456 |
441 function Action:UpdateTooltip() | 457 function Action:UpdateTooltip() |
442 local f = self:GetFrame() | 458 local f = self:GetFrame() |
501 return IsUsableAction(self.actionID) | 517 return IsUsableAction(self.actionID) |
502 end | 518 end |
503 | 519 |
504 function Action:GetInRange() | 520 function Action:GetInRange() |
505 return IsActionInRange(self.actionID) == 0 | 521 return IsActionInRange(self.actionID) == 0 |
506 end | |
507 | |
508 function Action:UpdateCooldown() | |
509 CooldownFrame_SetTimer(self.frames.cooldown, self:GetCooldown()) | |
510 end | 522 end |
511 | 523 |
512 function Action:GetCooldown() | 524 function Action:GetCooldown() |
513 return GetActionCooldown(self.actionID) | 525 return GetActionCooldown(self.actionID) |
514 end | 526 end |
721 | 733 |
722 function Action:PLAYER_ENTERING_WORLD() | 734 function Action:PLAYER_ENTERING_WORLD() |
723 self:UpdateAction() | 735 self:UpdateAction() |
724 end | 736 end |
725 | 737 |
726 function Action:ACTIONBAR_PAGE_CHANGED() | |
727 self:UpdateAction() | |
728 end | |
729 | |
730 function Action:UPDATE_BONUS_ACTIONBAR() | |
731 self:UpdateAction() | |
732 end | |
733 | |
734 function Action:UPDATE_BINDINGS() | 738 function Action:UPDATE_BINDINGS() |
735 self:UpdateHotkey() | 739 self:UpdateHotkey() |
736 end | 740 end |
737 | 741 |
738 function Action:PLAYER_TARGET_CHANGED() | 742 function Action:PLAYER_TARGET_CHANGED() |
739 self.rangeTimer = -1 | 743 self.rangeTimer = -1 |
740 end | |
741 | |
742 function Action:ACTIONBAR_UPDATE_STATE() | |
743 self:UpdateCheckedState() | |
744 end | 744 end |
745 | 745 |
746 function Action:TRADE_SKILL_SHOW() | 746 function Action:TRADE_SKILL_SHOW() |
747 self:UpdateCheckedState() | 747 self:UpdateCheckedState() |
748 end | 748 end |
764 | 764 |
765 function Action:ACTIONBAR_UPDATE_USABLE() | 765 function Action:ACTIONBAR_UPDATE_USABLE() |
766 self:UpdateUsable() | 766 self:UpdateUsable() |
767 end | 767 end |
768 | 768 |
769 function Action:ACTIONBAR_UPDATE_COOLDOWN() | 769 function Action:SPELL_UPDATE_CHARGES() |
770 self:UpdateCooldown() | 770 self:UpdateCount() |
771 end | 771 end |
772 | 772 |
773 function Action:PLAYER_ENTER_COMBAT() | 773 function Action:PLAYER_ENTER_COMBAT() |
774 if IsAttackAction(self.actionID) then | 774 if IsAttackAction(self.actionID) then |
775 self:SetFlash(true) | 775 self:SetFlash(true) |
792 if not IsAttackAction(self.actionID) then | 792 if not IsAttackAction(self.actionID) then |
793 self:SetFlash(false) | 793 self:SetFlash(false) |
794 end | 794 end |
795 end | 795 end |
796 | 796 |
797 function Action:UPDATE_SHAPESHIFT_FORM() | |
798 self:UpdateIcon() | |
799 end | |
800 | |
797 function Action:UNIT_INVENTORY_CHANGED(unit) | 801 function Action:UNIT_INVENTORY_CHANGED(unit) |
798 if unit == "player" then | 802 if unit == "player" then |
799 self:UpdateTooltip() | 803 self:UpdateTooltip() |
800 end | 804 end |
801 end | 805 end |
802 | 806 |
803 function Action:LEARNED_SPELL_IN_TAB() | 807 function Action:LEARNED_SPELL_IN_TAB() |
804 self:UpdateTooltip() | 808 self:UpdateTooltip() |
805 end | 809 end |
810 | |
811 function Action:UPDATE_SUMMONPETS_ACTION() | |
812 self:UpdateIcon() | |
813 end |