Mercurial > wow > reaction
comparison MultiCastButton.lua @ 286:77609bfa804e stable
Merge 1.1 beta 8 to stable
| author | Flick |
|---|---|
| date | Sat, 11 Jun 2011 10:57:00 -0700 |
| parents | 7a9e82c0df15 |
| children | 276165a0e860 |
comparison
equal
deleted
inserted
replaced
| 272:71d1a5e47e72 | 286:77609bfa804e |
|---|---|
| 1 local addonName, addonTable = ... | 1 local _, ns = ... |
| 2 local ReAction = addonTable.ReAction | 2 local ReAction = ns.ReAction |
| 3 local L = ReAction.L | 3 local L = ReAction.L |
| 4 local _G = _G | 4 local _G = _G |
| 5 local CreateFrame = CreateFrame | 5 local CreateFrame = CreateFrame |
| 6 local format = string.format | 6 local format = string.format |
| 7 local unpack = unpack | 7 local unpack = unpack |
| 19 local GetActionCooldown = GetActionCooldown | 19 local GetActionCooldown = GetActionCooldown |
| 20 local GetSpellTexture = GetSpellTexture | 20 local GetSpellTexture = GetSpellTexture |
| 21 local GetActionTexture = GetActionTexture | 21 local GetActionTexture = GetActionTexture |
| 22 local GetMultiCastTotemSpells = GetMultiCastTotemSpells | 22 local GetMultiCastTotemSpells = GetMultiCastTotemSpells |
| 23 | 23 |
| 24 --@do-not-package@ | |
| 24 --[[ | 25 --[[ |
| 25 Blizzard Constants: | 26 Blizzard Constants: |
| 26 - NUM_MULTI_CAST_BUTTONS_PER_PAGE = 4 | 27 - NUM_MULTI_CAST_BUTTONS_PER_PAGE = 4 |
| 27 - NUM_MULTI_CAST_PAGES = 3 | 28 - NUM_MULTI_CAST_PAGES = 3 |
| 28 - SHAMAN_TOTEM_PRIORITIES = { } -- sets the order of the totems | 29 - SHAMAN_TOTEM_PRIORITIES = { } -- sets the order of the totems |
| 88 - The default UI has Call of the Elements always selected on UI load. This module remembers the last | 89 - The default UI has Call of the Elements always selected on UI load. This module remembers the last |
| 89 selected one and restores it. | 90 selected one and restores it. |
| 90 | 91 |
| 91 | 92 |
| 92 ]]-- | 93 ]]-- |
| 93 | 94 --@end-do-not-package@ |
| 94 | 95 |
| 95 -- | 96 -- |
| 96 -- Secure snippets | 97 -- Secure snippets |
| 97 -- | 98 -- |
| 98 | 99 |
| 322 | 323 |
| 323 ReAction.Button.MultiCast = MultiCast | 324 ReAction.Button.MultiCast = MultiCast |
| 324 ReAction:RegisterBarType(MultiCast) | 325 ReAction:RegisterBarType(MultiCast) |
| 325 | 326 |
| 326 function MultiCast:New( btnConfig, bar, idx ) | 327 function MultiCast:New( btnConfig, bar, idx ) |
| 327 local maxIndex = bar.nTotemSlots or 0 | 328 if idx < 1 or idx > NUM_MULTI_CAST_BUTTONS_PER_PAGE + 2 then |
| 328 if bar.summonSlot then | 329 ReAction:UserError(L["All %s buttons are in use for this bar, cannot create any more buttons"]:format(self.barType)) |
| 329 maxIndex = maxIndex + 1 | 330 error(nil) |
| 330 end | 331 end |
| 331 if bar.recallSlot then | 332 |
| 332 maxIndex = maxIndex + 1 | 333 self = Super.New(self, btnConfig, bar, idx, "SecureActionButtonTemplate, ActionButtonTemplate" ) |
| 333 end | 334 |
| 334 | 335 if not bar.hasMulticast or idx > bar.maxIndex then |
| 335 if not bar.hasMulticast or idx > maxIndex then | 336 -- Not enough multicast capability to use this button |
| 336 return false | 337 self:Refresh() |
| 337 end | 338 return self |
| 338 | 339 end |
| 339 if idx < 1 then | |
| 340 error("invalid index") | |
| 341 end | |
| 342 | |
| 343 local name = format("ReAction_%s_Totem_%d",bar:GetName(),idx) | |
| 344 | |
| 345 self = Super.New(self, name, btnConfig, bar, idx, "SecureActionButtonTemplate, ActionButtonTemplate" ) | |
| 346 | 340 |
| 347 local barFrame = bar:GetFrame() | 341 local barFrame = bar:GetFrame() |
| 348 local f = self:GetFrame() | 342 local f = self:GetFrame() |
| 349 | 343 |
| 350 -- attributes | 344 -- attributes |
| 448 end | 442 end |
| 449 | 443 |
| 450 function MultiCast:Refresh() | 444 function MultiCast:Refresh() |
| 451 Super.Refresh(self) | 445 Super.Refresh(self) |
| 452 self:UpdateAction() | 446 self:UpdateAction() |
| 447 | |
| 448 local bar = self.bar | |
| 449 if bar.hasMulticast == true and self.idx <= bar.maxIndex or ReAction:GetConfigMode() then | |
| 450 self:GetFrame():Show() | |
| 451 else | |
| 452 self:GetFrame():Hide() | |
| 453 end | |
| 453 end | 454 end |
| 454 | 455 |
| 455 function MultiCast:ShowGrid( show ) | 456 function MultiCast:ShowGrid( show ) |
| 456 end | 457 end |
| 457 | 458 |
| 610 frame.icon:SetTexCoord(0,1,0,1) | 611 frame.icon:SetTexCoord(0,1,0,1) |
| 611 end | 612 end |
| 612 end | 613 end |
| 613 | 614 |
| 614 function MultiCast:SetupBar( bar ) | 615 function MultiCast:SetupBar( bar ) |
| 615 Super.SetupBar(self,bar) | |
| 616 | |
| 617 local slot = 0 | 616 local slot = 0 |
| 618 local nTotemSlots = 0 | 617 local nTotemSlots = 0 |
| 619 local summonSlot = nil | 618 local summonSlot = nil |
| 620 local recallSlot = nil | 619 local recallSlot = nil |
| 621 | 620 |
| 640 if spell and IsSpellKnown(spell) then | 639 if spell and IsSpellKnown(spell) then |
| 641 recallSlot = slot | 640 recallSlot = slot |
| 642 end | 641 end |
| 643 end | 642 end |
| 644 | 643 |
| 645 if nTotemSlots == 0 then | 644 local maxIndex = nTotemSlots |
| 646 bar.hasMulticast = false -- no multicast capability | 645 if summonSlot then |
| 647 return | 646 maxIndex = maxIndex + 1 |
| 648 end | 647 end |
| 649 | 648 if recallSlot then |
| 650 bar.hasMulticast = true | 649 maxIndex = maxIndex + 1 |
| 650 end | |
| 651 | |
| 652 bar.hasMulticast = nTotemSlots > 0 | |
| 651 bar.summonSlot = summonSlot | 653 bar.summonSlot = summonSlot |
| 652 bar.recallSlot = recallSlot | 654 bar.recallSlot = recallSlot |
| 653 bar.nTotemSlots = nTotemSlots | 655 bar.nTotemSlots = nTotemSlots |
| 654 | 656 bar.maxIndex = maxIndex |
| 657 | |
| 658 if bar.hasMulticast == false then | |
| 659 Super.SetupBar(self,bar) | |
| 660 return -- no multicast capability | |
| 661 end | |
| 655 | 662 |
| 656 local f = bar:GetFrame() | 663 local f = bar:GetFrame() |
| 657 | 664 |
| 658 -- init bar secure environment | 665 -- init bar secure environment |
| 659 f:SetAttribute("lastSummon", bar:GetConfig().lastSummon) | 666 f:SetAttribute("lastSummon", bar:GetConfig().lastSummon) |
| 770 end | 777 end |
| 771 end) | 778 end) |
| 772 f.events_registered = true | 779 f.events_registered = true |
| 773 end | 780 end |
| 774 | 781 |
| 775 | |
| 776 f:Execute(_bar_init) | 782 f:Execute(_bar_init) |
| 777 end | 783 |
| 778 | 784 Super.SetupBar(self,bar) -- create buttons after this is done |
| 785 end | |
| 786 |
