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 |
