From 417a817f15289604e865af47e71ce93435bd1161 Mon Sep 17 00:00:00 2001 From: Areko Date: Fri, 12 Dec 2014 15:04:48 +0100 Subject: [PATCH 1/3] Use GetRaidBuffInfo() to determine if a Buff is missing or not available --- Broker_ConsolidatedBuffs.lua | 65 +++++++++++++++++++++--------------- 1 file changed, 39 insertions(+), 26 deletions(-) diff --git a/Broker_ConsolidatedBuffs.lua b/Broker_ConsolidatedBuffs.lua index b80e2d2..ac008e7 100644 --- a/Broker_ConsolidatedBuffs.lua +++ b/Broker_ConsolidatedBuffs.lua @@ -19,8 +19,8 @@ local defaults = { -- http://www.wowhead.com/guide=1100/buffs-and-debuffs [1] = { -- Stats [1] = "Interface\\Icons\\spell_nature_regeneration", [2] = { - {LC["DRUID"], CC["DRUID"]}, - {LC["MONK"], CC["MONK"]}, + {LC["DRUID"], CC["DRUID"]}, + {LC["MONK"], CC["MONK"]}, {LC["PALADIN"], CC["PALADIN"]} }, [3] = {LCT["Dog"], LCT["Gorilla"], LCT["Shale Spider"], LCT["Worm"]} @@ -28,8 +28,8 @@ local defaults = { -- http://www.wowhead.com/guide=1100/buffs-and-debuffs [2] = { -- Stamina [1] = "Interface\\Icons\\spell_holy_wordfortitude", [2] = { - {LC["WARRIOR"], CC["WARRIOR"]}, - {LC["PRIEST"], CC["PRIEST"]}, + {LC["WARRIOR"], CC["WARRIOR"]}, + {LC["PRIEST"], CC["PRIEST"]}, {LC["WARLOCK"], CC["WARLOCK"]} }, [3] = {LCT["Bear"], LCT["Goat"], LCT["Rylak"], LCT["Silithid"]} @@ -37,8 +37,8 @@ local defaults = { -- http://www.wowhead.com/guide=1100/buffs-and-debuffs [3] = { --Attack Power [1] = "Interface\\Icons\\ability_warrior_battleshout", [2] = { - {LC["DEATHKNIGHT"], CC["DEATHKNIGHT"]}, - {LC["WARRIOR"], CC["WARRIOR"]}, + {LC["DEATHKNIGHT"], CC["DEATHKNIGHT"]}, + {LC["WARRIOR"], CC["WARRIOR"]}, {LC["HUNTER"], CC["HUNTER"]} }, [3] = {} @@ -46,9 +46,9 @@ local defaults = { -- http://www.wowhead.com/guide=1100/buffs-and-debuffs [4] = { --Haste [1] = "Interface\\Icons\\spell_nature_bloodlust", [2] = { - {LC["DEATHKNIGHT"].." "..STAT_DPS_SHORT, CC["DEATHKNIGHT"]}, - {LC["ROGUE"], CC["ROGUE"]}, - {LC["PRIEST"].." "..LTT["Shadow"], CC["PRIEST"]}, + {LC["DEATHKNIGHT"].." "..STAT_DPS_SHORT, CC["DEATHKNIGHT"]}, + {LC["ROGUE"], CC["ROGUE"]}, + {LC["PRIEST"].." "..LTT["Shadow"], CC["PRIEST"]}, {LC["SHAMAN"], CC["SHAMAN"]} }, [3] = {LCT["Hyena"], LCT["Rylak"], LCT["Sporebat"], LCT["Wasp"]} @@ -56,7 +56,7 @@ local defaults = { -- http://www.wowhead.com/guide=1100/buffs-and-debuffs [5] = { --Spell Power [1] = "Interface\\Icons\\spell_holy_magicalsentry", [2] = { - {LC["MAGE"], CC["MAGE"]}, + {LC["MAGE"], CC["MAGE"]}, {LC["WARLOCK"], CC["WARLOCK"]} }, [3] = {LCT["Serpent"], LCT["Silithid"], LCT["Water Strider"]} @@ -64,8 +64,8 @@ local defaults = { -- http://www.wowhead.com/guide=1100/buffs-and-debuffs [6] = { -- Critical Strike [1] = "Interface\\Icons\\spell_nature_unyeildingstamina", [2] = { - {LC["MAGE"], CC["MAGE"]}, - {LC["DRUID"].." "..LTT["Feral"], CC["DRUID"]}, + {LC["MAGE"], CC["MAGE"]}, + {LC["DRUID"].." "..LTT["Feral"], CC["DRUID"]}, {LC["MONK"].." "..STAT_CATEGORY_MELEE, CC["MONK"]} }, [3] = {LCT["Devilsaur"], LCT["Quilen"], LCT["Raptor"], LCT["Shale Spider"], LCT["Water Strider"], LCT["Wolf"]} @@ -73,9 +73,9 @@ local defaults = { -- http://www.wowhead.com/guide=1100/buffs-and-debuffs [7] = { --Mastery [1] = "Interface\\Icons\\spell_holy_greaterblessingofkings", [2] = { - {LC["DEATHKNIGHT"].." "..LTT["Blood"], CC["DEATHKNIGHT"]}, - {LC["SHAMAN"], CC["SHAMAN"]}, - {LC["DRUID"].." "..LTT["Balance"], CC["DRUID"]}, + {LC["DEATHKNIGHT"].." "..LTT["Blood"], CC["DEATHKNIGHT"]}, + {LC["SHAMAN"], CC["SHAMAN"]}, + {LC["DRUID"].." "..LTT["Balance"], CC["DRUID"]}, {LC["PALADIN"], CC["PALADIN"]} }, [3] = {LCT["Cat"], LCT["Hydra"], LCT["Spirit Beast"], LCT["Tallstrider"]} @@ -83,9 +83,9 @@ local defaults = { -- http://www.wowhead.com/guide=1100/buffs-and-debuffs [8] = { --Multistrike [1] = "Interface\\Icons\\inv_elemental_mote_air01", [2] = { - {LC["ROGUE"], CC["ROGUE"]}, - {LC["PRIEST"].." "..LTT["Shadow"], CC["PRIEST"]}, - {LC["WARLOCK"], CC["WARLOCK"]}, + {LC["ROGUE"], CC["ROGUE"]}, + {LC["PRIEST"].." "..LTT["Shadow"], CC["PRIEST"]}, + {LC["WARLOCK"], CC["WARLOCK"]}, {LC["MONK"].." "..STAT_DPS_SHORT, CC["MONK"]} }, [3] = {LCT["Bat"], LCT["Clefthoof"], LCT["Core Hound"], LCT["Dragonhawk"], LCT["Wind Serpent"]} @@ -93,9 +93,9 @@ local defaults = { -- http://www.wowhead.com/guide=1100/buffs-and-debuffs [9] = { --Versatility [1] = "Interface\\Icons\\spell_holy_mindvision", [2] = { - {LC["DEATHKNIGHT"].." "..STAT_DPS_SHORT, CC["DEATHKNIGHT"]}, + {LC["DEATHKNIGHT"].." "..STAT_DPS_SHORT, CC["DEATHKNIGHT"]}, {LC["WARRIOR"].." "..STAT_DPS_SHORT, CC["WARRIOR"]}, - {LC["DRUID"], CC["DRUID"]}, + {LC["DRUID"], CC["DRUID"]}, {LC["PALADIN"].." "..STAT_DPS_SHORT, CC["PALADIN"]} }, [3] = {LCT["Bird of Prey"], LCT["Boar"], LCT["Clefthoof"], LCT["Porcupine"], LCT["Ravager"], LCT["Stag"], LCT["Worm"]} @@ -124,6 +124,8 @@ local BrokerConsolidatedBuffs = LDB:NewDataObject("Broker_ConsolidatedBuffs", { tooltip:AddSeparator() --tooltip:AddLine(" ") + local buffmask = GetRaidBuffInfo() or 0 + local mask = 1 for i = 1, NUM_LE_RAID_BUFF_TYPES do local name, rank, texture, duration, expiration, spellId, slot = GetRaidBuffTrayAuraInfo(i) local c @@ -131,7 +133,11 @@ local BrokerConsolidatedBuffs = LDB:NewDataObject("Broker_ConsolidatedBuffs", { if name then c = "FF00FF00" else - c = "FFFF0000" + if bit.band(buffmask, mask) > 0 then + c = "FFFF0000" + else + c = "FF888888" + end end local classes = "" @@ -143,7 +149,7 @@ local BrokerConsolidatedBuffs = LDB:NewDataObject("Broker_ConsolidatedBuffs", { pets = pets ..", ".. defaults[i][3][ii] end tooltip:AddLine( - "\124T"..defaults[i][1]..":0\124t \124c"..c.._G["RAID_BUFF_"..i].."\124r", + "\124T"..defaults[i][1]..":0\124t \124c"..c.._G["RAID_BUFF_"..i].."\124r", strsub(classes, 2), strsub(pets, 2) ) @@ -151,6 +157,8 @@ local BrokerConsolidatedBuffs = LDB:NewDataObject("Broker_ConsolidatedBuffs", { --tooltip:AddLine("\124T"..defaults[i][1]..":0\124t \124c"..c.._G["RAID_BUFF_"..i].."\124r "..list) --tooltip:AddLine(" "..list) + + mask = bit.lshift(mask, 1) end tooltip:SmartAnchorTo(self) @@ -164,11 +172,14 @@ local BrokerConsolidatedBuffs = LDB:NewDataObject("Broker_ConsolidatedBuffs", { OnClick = function(button) local missing = "" + local buffmask = GetRaidBuffInfo() or 0 + local mask = 1 for i = 1, NUM_LE_RAID_BUFF_TYPES do - if not GetRaidBuffTrayAuraInfo(i) then + if not GetRaidBuffTrayAuraInfo(i) and bit.band(buffmask, mask) > 0 then missing = missing .. _G["RAID_BUFF_"..i] ..", " end + mask = bit.lshift(mask, 1) end if missing ~= "" then @@ -194,9 +205,11 @@ local function updateBuffs(self, event, unitID) c = c + 1 end end - - BrokerConsolidatedBuffs.text = c.."/"..NUM_LE_RAID_BUFF_TYPES - BrokerConsolidatedBuffs.value = c.."/"..NUM_LE_RAID_BUFF_TYPES -- for ElvUI datatexts + + local buffcount = select(2, GetRaidBuffInfo()) + + BrokerConsolidatedBuffs.text = c.."/"..max(c, buffcount) + BrokerConsolidatedBuffs.value = c.."/"..max(c, buffcount) -- for ElvUI datatexts end end From b403bafc806e48d2063fde6245eeb25927755173 Mon Sep 17 00:00:00 2001 From: Areko Date: Fri, 12 Dec 2014 15:11:58 +0100 Subject: [PATCH 2/3] Remove line-breaks out of the RAID_BUFF_# values when displaying This is a problem at least in the germane client. --- Broker_ConsolidatedBuffs.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Broker_ConsolidatedBuffs.lua b/Broker_ConsolidatedBuffs.lua index ac008e7..f9610db 100644 --- a/Broker_ConsolidatedBuffs.lua +++ b/Broker_ConsolidatedBuffs.lua @@ -149,13 +149,13 @@ local BrokerConsolidatedBuffs = LDB:NewDataObject("Broker_ConsolidatedBuffs", { pets = pets ..", ".. defaults[i][3][ii] end tooltip:AddLine( - "\124T"..defaults[i][1]..":0\124t \124c"..c.._G["RAID_BUFF_"..i].."\124r", + "\124T"..defaults[i][1]..":0\124t \124c"..c.._G["RAID_BUFF_"..i]:gsub("-\n", "").."\124r", strsub(classes, 2), strsub(pets, 2) ) --tooltip:AddLine(" ") - --tooltip:AddLine("\124T"..defaults[i][1]..":0\124t \124c"..c.._G["RAID_BUFF_"..i].."\124r "..list) + --tooltip:AddLine("\124T"..defaults[i][1]..":0\124t \124c"..c.._G["RAID_BUFF_"..i]:gsub("-\n", "").."\124r "..list) --tooltip:AddLine(" "..list) mask = bit.lshift(mask, 1) @@ -177,7 +177,7 @@ local BrokerConsolidatedBuffs = LDB:NewDataObject("Broker_ConsolidatedBuffs", { for i = 1, NUM_LE_RAID_BUFF_TYPES do if not GetRaidBuffTrayAuraInfo(i) and bit.band(buffmask, mask) > 0 then - missing = missing .. _G["RAID_BUFF_"..i] ..", " + missing = missing .. _G["RAID_BUFF_"..i]:gsub("-\n", "") ..", " end mask = bit.lshift(mask, 1) end From 1f15c320f605f8e120523adbf7edb5194d5febb9 Mon Sep 17 00:00:00 2001 From: Areko Date: Fri, 12 Dec 2014 15:17:55 +0100 Subject: [PATCH 3/3] Use upvalues instant of global calls --- Broker_ConsolidatedBuffs.lua | 38 ++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/Broker_ConsolidatedBuffs.lua b/Broker_ConsolidatedBuffs.lua index f9610db..d35b029 100644 --- a/Broker_ConsolidatedBuffs.lua +++ b/Broker_ConsolidatedBuffs.lua @@ -1,4 +1,8 @@ +-- Upvalues +local _G = _G +local bit, strsub, strlen, select, max = bit, strsub, strlen, select, max + local addonName, addonNS = ... local LQT = LibStub('LibQTip-1.0') local LDB = LibStub("LibDataBroker-1.1") @@ -109,8 +113,8 @@ end local BrokerConsolidatedBuffs = LDB:NewDataObject("Broker_ConsolidatedBuffs", { type = "data source", - text = "0/"..NUM_LE_RAID_BUFF_TYPES, - value = "0/"..NUM_LE_RAID_BUFF_TYPES, + text = "0/".._G.NUM_LE_RAID_BUFF_TYPES, + value = "0/".._G.NUM_LE_RAID_BUFF_TYPES, icon = "Interface\\AddOns\\Broker_ConsolidatedBuffs\\BuffConsolidation", -- I can't use the default because is a combination texture :( label = "ConsolidatedBuffs", @@ -118,16 +122,16 @@ local BrokerConsolidatedBuffs = LDB:NewDataObject("Broker_ConsolidatedBuffs", { local tooltip = LQT:Acquire("Broker_ConsolidatedBuffsTooltip", 3, "LEFT", "LEFT", "LEFT") self.tooltip = tooltip - tooltip:AddHeader(CONSOLIDATE_BUFFS_TEXT) + tooltip:AddHeader(_G.CONSOLIDATE_BUFFS_TEXT) tooltip:AddLine(" ") - tooltip:AddHeader(STATISTICS, ALL_CLASSES, PETS)--CONSOLIDATE_BUFFS_TEXT) + tooltip:AddHeader(_G.STATISTICS, _G.ALL_CLASSES, _G.PETS)--CONSOLIDATE_BUFFS_TEXT) tooltip:AddSeparator() --tooltip:AddLine(" ") - local buffmask = GetRaidBuffInfo() or 0 + local buffmask = _G.GetRaidBuffInfo() or 0 local mask = 1 - for i = 1, NUM_LE_RAID_BUFF_TYPES do - local name, rank, texture, duration, expiration, spellId, slot = GetRaidBuffTrayAuraInfo(i) + for i = 1, _G.NUM_LE_RAID_BUFF_TYPES do + local name, rank, texture, duration, expiration, spellId, slot = _G.GetRaidBuffTrayAuraInfo(i) local c if name then @@ -172,11 +176,11 @@ local BrokerConsolidatedBuffs = LDB:NewDataObject("Broker_ConsolidatedBuffs", { OnClick = function(button) local missing = "" - local buffmask = GetRaidBuffInfo() or 0 + local buffmask = _G.GetRaidBuffInfo() or 0 local mask = 1 - for i = 1, NUM_LE_RAID_BUFF_TYPES do - if not GetRaidBuffTrayAuraInfo(i) and bit.band(buffmask, mask) > 0 then + for i = 1, _G.NUM_LE_RAID_BUFF_TYPES do + if not _G.GetRaidBuffTrayAuraInfo(i) and bit.band(buffmask, mask) > 0 then missing = missing .. _G["RAID_BUFF_"..i]:gsub("-\n", "") ..", " end mask = bit.lshift(mask, 1) @@ -184,14 +188,14 @@ local BrokerConsolidatedBuffs = LDB:NewDataObject("Broker_ConsolidatedBuffs", { if missing ~= "" then local channel = "SAY" - if IsInGroup(LE_PARTY_CATEGORY_INSTANCE) then + if _G.IsInGroup(_G.LE_PARTY_CATEGORY_INSTANCE) then channel = "INSTANCE_CHAT" - elseif IsInRaid() then + elseif _G.IsInRaid() then channel = "RAID" - elseif IsInGroup() then + elseif _G.IsInGroup() then channel = "PARTY" end - SendChatMessage(ADDON_MISSING..": "..strsub(missing, 0, strlen(missing)-2), channel) + _G.SendChatMessage(_G.ADDON_MISSING..": "..strsub(missing, 0, strlen(missing)-2), channel) end end }) @@ -200,13 +204,13 @@ local BrokerConsolidatedBuffs = LDB:NewDataObject("Broker_ConsolidatedBuffs", { local function updateBuffs(self, event, unitID) if (unitID == "player" or event == "PLAYER_ENTERING_WORLD") then local c = 0 - for i = 1, NUM_LE_RAID_BUFF_TYPES do - if GetRaidBuffTrayAuraInfo(i) then + for i = 1, _G.NUM_LE_RAID_BUFF_TYPES do + if _G.GetRaidBuffTrayAuraInfo(i) then c = c + 1 end end - local buffcount = select(2, GetRaidBuffInfo()) + local buffcount = select(2, _G.GetRaidBuffInfo()) BrokerConsolidatedBuffs.text = c.."/"..max(c, buffcount) BrokerConsolidatedBuffs.value = c.."/"..max(c, buffcount) -- for ElvUI datatexts