comparison MultiCastButton.lua @ 282:7a9e82c0df15

Show empty totem buttons in config mode when character doesn't have totems
author Flick
date Wed, 11 May 2011 17:21:04 -0700
parents 4e325f1ea6e1
children 276165a0e860
comparison
equal deleted inserted replaced
281:2098dba4baf5 282:7a9e82c0df15
323 323
324 ReAction.Button.MultiCast = MultiCast 324 ReAction.Button.MultiCast = MultiCast
325 ReAction:RegisterBarType(MultiCast) 325 ReAction:RegisterBarType(MultiCast)
326 326
327 function MultiCast:New( btnConfig, bar, idx ) 327 function MultiCast:New( btnConfig, bar, idx )
328 local maxIndex = bar.nTotemSlots or 0 328 if idx < 1 or idx > NUM_MULTI_CAST_BUTTONS_PER_PAGE + 2 then
329 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))
330 maxIndex = maxIndex + 1 330 error(nil)
331 end
332 if bar.recallSlot then
333 maxIndex = maxIndex + 1
334 end
335
336 if not bar.hasMulticast or idx > maxIndex then
337 return false
338 end
339
340 if idx < 1 then
341 error("invalid index")
342 end 331 end
343 332
344 self = Super.New(self, btnConfig, bar, idx, "SecureActionButtonTemplate, ActionButtonTemplate" ) 333 self = Super.New(self, btnConfig, bar, idx, "SecureActionButtonTemplate, ActionButtonTemplate" )
334
335 if not bar.hasMulticast or idx > bar.maxIndex then
336 -- Not enough multicast capability to use this button
337 self:Refresh()
338 return self
339 end
345 340
346 local barFrame = bar:GetFrame() 341 local barFrame = bar:GetFrame()
347 local f = self:GetFrame() 342 local f = self:GetFrame()
348 343
349 -- attributes 344 -- attributes
447 end 442 end
448 443
449 function MultiCast:Refresh() 444 function MultiCast:Refresh()
450 Super.Refresh(self) 445 Super.Refresh(self)
451 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
452 end 454 end
453 455
454 function MultiCast:ShowGrid( show ) 456 function MultiCast:ShowGrid( show )
455 end 457 end
456 458
609 frame.icon:SetTexCoord(0,1,0,1) 611 frame.icon:SetTexCoord(0,1,0,1)
610 end 612 end
611 end 613 end
612 614
613 function MultiCast:SetupBar( bar ) 615 function MultiCast:SetupBar( bar )
614 Super.SetupBar(self,bar)
615
616 local slot = 0 616 local slot = 0
617 local nTotemSlots = 0 617 local nTotemSlots = 0
618 local summonSlot = nil 618 local summonSlot = nil
619 local recallSlot = nil 619 local recallSlot = nil
620 620
639 if spell and IsSpellKnown(spell) then 639 if spell and IsSpellKnown(spell) then
640 recallSlot = slot 640 recallSlot = slot
641 end 641 end
642 end 642 end
643 643
644 if nTotemSlots == 0 then 644 local maxIndex = nTotemSlots
645 bar.hasMulticast = false -- no multicast capability 645 if summonSlot then
646 return 646 maxIndex = maxIndex + 1
647 end 647 end
648 648 if recallSlot then
649 bar.hasMulticast = true 649 maxIndex = maxIndex + 1
650 end
651
652 bar.hasMulticast = nTotemSlots > 0
650 bar.summonSlot = summonSlot 653 bar.summonSlot = summonSlot
651 bar.recallSlot = recallSlot 654 bar.recallSlot = recallSlot
652 bar.nTotemSlots = nTotemSlots 655 bar.nTotemSlots = nTotemSlots
653 656 bar.maxIndex = maxIndex
657
658 if bar.hasMulticast == false then
659 Super.SetupBar(self,bar)
660 return -- no multicast capability
661 end
654 662
655 local f = bar:GetFrame() 663 local f = bar:GetFrame()
656 664
657 -- init bar secure environment 665 -- init bar secure environment
658 f:SetAttribute("lastSummon", bar:GetConfig().lastSummon) 666 f:SetAttribute("lastSummon", bar:GetConfig().lastSummon)
769 end 777 end
770 end) 778 end)
771 f.events_registered = true 779 f.events_registered = true
772 end 780 end
773 781
774
775 f:Execute(_bar_init) 782 f:Execute(_bar_init)
776 end 783
777 784 Super.SetupBar(self,bar) -- create buttons after this is done
785 end
786