vanilla-wow-addons – Rev 1
?pathlinks?
aUF = AceLibrary("AceAddon-2.0"):new("AceEvent-2.0", "AceHook-2.0", "AceDB-2.0", "AceConsole-2.0")
aUF.Layouts = {}
local L = AceLibrary("AceLocale-2.0"):new("ag_UnitFrames")
local AceOO = AceLibrary("AceOO-2.0")
local print = function(msg) if msg then DEFAULT_CHAT_FRAME:AddMessage(msg) end end
-- SYSTEM
function aUF:OnInitialize()
self:RegisterDB("aUFDB")
self:RegisterDefaults('profile', aUF_DEFAULT_OPTIONS)
self:SetupVariables()
self:UpdateBlizzVisibility()
self:InitMenu()
self:RegisterEvents()
self:LoadStringFormats()
if UnitInRaid("player") == 1 then
self:RAID_ROSTER_UPDATE()
end
aUF:ScheduleRepeatingEvent("agUF_auraPoolSchedule",self.AuraPool, 0.3, self)
end
function aUF:AuraPool()
local n = 0
for k,v in pairs(self.auraUpdatePool) do
if v == true and self.auraUpdates + n < 5 then
self.units[k]:UpdateAuras(true)
n = n + 1
else
break
end
end
aUF.auraUpdates = 0
end
function aUF:Reset()
self:ResetDB("profile")
self:LoadStringFormats()
self:CallUnitMethods("Reset")
self:CallUnitMethods("Reset",nil,nil,nil,"subgroups")
end
function aUF:OnProfileEnable()
self:CallUnitMethods("Reset")
end
-- EVENT REGISTERING
function aUF:RegisterEvents()
self:RegisterEvent("PLAYER_LOGIN")
self:RegisterEvent("PARTY_MEMBERS_CHANGED")
self:RegisterEvent("RAID_ROSTER_UPDATE")
self:RegisterEvent("UNIT_PET","PARTY_MEMBERS_CHANGED")
self:RegisterEvent("PLAYER_TARGET_CHANGED")
self:RegisterEvent("agUF_UpdateGroups")
end
function aUF:SetupVariables()
self.auraUpdates = 0
self.auraUpdatePool = {}
self.feedback = {}
self.imagePath = "Interface\\AddOns\\ag_UnitFrames\\images\\"
self.fontPath = "Interface\\AddOns\\ag_UnitFrames\\fonts\\"
self.wowClasses = {"player","pet","party","partypet","target","targettarget","raid","raidpet"}
-- Which auras can the player see?
self.CanDispel = {
["PRIEST"] = {
["Magic"] = true,
["Disease"] = true,
},
["SHAMAN"] = {
["Poison"] = true,
["Disease"] = true,
},
["PALADIN"] = {
["Magic"] = true,
["Poison"] = true,
["Disease"] = true,
},
["MAGE"] = {
["Curse"] = true,
},
["DRUID"] = {
["Curse"] = true,
["Poison"] = true,
}
}
-- Various constants like colors, textures...
self.DebuffColor = {
["Magic"] = {
r = 1,
g = 0,
b = 0,
},
["Disease"] = {
r = 0.25,
g = 1,
b = 0,
},
["Poison"] = {
r = 0,
g = 0.25,
b = 1,
},
["Curse"] = {
r = 0.75,
g = 0,
b = 0.75,
}
}
self.RepColor = {
[1] = {r = 226/255, g = 45/255, b = 75/255},
[2] = {r = 226/255, g = 45/255, b = 75/255},
[3] = {r = 0.75, g = 0.27, b = 0},
[4] = {r = 1, g = 1, b = 34/255},
[5] = {r = 0.2, g = 0.8, b = 0.15},
[6] = {r = 0.2, g = 0.8, b = 0.15},
[7] = {r = 0.2, g = 0.8, b = 0.15},
[8] = {r = 0.2, g = 0.8, b = 0.15},
}
self.HealthColor = {
r = 0.11,
g = 0.84,
b = 0.3,
}
self.ManaColor = {
[0] = { r = 48/255, g = 113/255, b = 191/255}, -- Mana
[1] = { r = 226/255, g = 45/255, b = 75/255}, -- Rage
[2] = { r = 255/255, g = 210/255, b = 0}, -- Focus
[3] = { r = 255, g = 220/255, b = 25/255}, -- Energy
[4] = { r = 0.00, g = 1.00, b = 1.00} -- Happiness
}
self.Borders = {
["Classic"] = {["texture"] = "Interface\\Tooltips\\UI-Tooltip-Border",["size"] = 16,["insets"] = 5},
["Nurfed"] = {["texture"] = "Interface\\DialogFrame\\UI-DialogBox-Border",["size"] = 16,["insets"] = 5},
["Hidden"] = {["texture"] = "",["size"] = 0,["insets"] = 3},
}
self.Bars = {
["Default"] = self.imagePath.."AceBarFrames.tga",
["Classic"] = "Interface\\TargetingFrame\\UI-StatusBar",
["Smooth"] = self.imagePath.."smooth.tga",
["Bumps"] = self.imagePath.."Bumps.tga",
["Perl"] = self.imagePath.."Perl.tga",
["Gloss"] = self.imagePath.."Gloss.tga",
["Wisps"] = self.imagePath.."Wisps.tga",
["Bars"] = self.imagePath.."Bars.tga",
["Smudge"] = self.imagePath.."Smudge.tga",
["Dabs"] = self.imagePath.."Dabs.tga",
["Rain"] = self.imagePath.."Rain.tga",
["Hatched"] = self.imagePath.."Hatched.tga",
["Cracked"] = self.imagePath.."Cracked.tga",
["Grid"] = self.imagePath.."Grid.tga",
["Button"] = self.imagePath.."Button.tga",
["Skewed"] = self.imagePath.."Skewed.tga",
["Diagonal"] = self.imagePath.."Diagonal.tga",
["Cloud"] = self.imagePath.."Cloud.tga",
["Water"] = self.imagePath.."Water.tga",
["Charcoal"] = self.imagePath.."Charcoal.tga",
["BantoBar"] = self.imagePath.."BantoBar.tga",
}
self.RaidColors = {
["DRUID"] = "|cffff7c0a",
["HUNTER"] = "|cffaad372",
["MAGE"] = "|cff68ccef",
["PALADIN"] = "|cfff48cba",
["PRIEST"] = "|cffffffff",
["ROGUE"] = "|cfffff468",
["SHAMAN"] = "|cfff48cba",
["WARLOCK"] = "|cff9382C9",
["WARRIOR"] = "|cffc69b6d",
}
self.RaidRole = {
["DRUID"] = "healer",
["HUNTER"] = "dps",
["MAGE"] = "dps",
["PALADIN"] = "healer",
["PRIEST"] = "healer",
["ROGUE"] = "dps",
["SHAMAN"] = "healer",
["WARLOCK"] = "dps",
["WARRIOR"] = "tank",
}
self.UnitInformation = {
["name"] = function(u) local type = string.gsub(u, "%d", "") if self.db.profile[type].RaidColorName and UnitIsPlayer(u) then local _,x=UnitClass(u) return string.format("%s%s%s",aUF.RaidColors[x] or "",UnitName(u) or "","|cFFFFFFFF") else return UnitName(u) or "" end end,
["status"] = function (u) if UnitIsDead(u) then return "Dead" elseif UnitIsGhost(u) then return "Ghost" elseif (not UnitIsConnected(u)) then return "Offline" elseif (UnitAffectingCombat(u)) then return "Combat" elseif (u== "player" and IsResting()) then return "Resting" else return "" end end,
["statuscolor"] = function (u) if UnitIsDead(u) then return "|cffff0000" elseif UnitIsGhost(u) then return "|cff9d9d9d" elseif (not UnitIsConnected(u)) then return "|cffff8000" elseif (UnitAffectingCombat(u)) then return "|cffFF0000" elseif (u== "player" and IsResting()) then return WatchDog:GetHex(UnitReactionColor[4]) else return "" end end,
["happycolor"] = function (u) local x=GetPetHappiness() return ( (x==2) and "|cffFFFF00" or (x==1) and "|cffFF0000" or "" ) end,
["aghp"] = function(u) return self:Tag_aghp(u) or "" end,
["agpercenthp"] = function(u) return self:Tag_aghp(u,1) or "" end,
["agmissinghp"] = function(u) return self:Tag_aghp(u,2) or "" end,
["agsmarthp"] = function(u) return self:Tag_aghp(u,3) or "" end,
["agmana"] = function(u) return self:Tag_agmana(u) or "" end,
["agpercentmana"] = function(u) return self:Tag_agmana(u,1) or "" end,
["agmissingmana"] = function(u) return self:Tag_agmana(u,2) or "" end,
["agsmartmana"] = function(u) return self:Tag_agmana(u,3) or "" end,
["agclass"] = function (u) if UnitIsPlayer(u) then return (UnitClass(u) or "Unknown") else return (UnitCreatureFamily(u) or UnitCreatureType(u) or "") end end,
["agrace"] = function (u) if string.find(u,"target") then return UnitRace(u) or "" else return "" end end,
["agtype"] = function (u) if (UnitIsPlusMob(u)) then return aUF:TargetGetMobType(u) or "" else return "" end end,
["curhp"] = function (u) return UnitHealth(u) or 0 end,
["maxhp"] = function (u) return UnitHealthMax(u) or 1 end,
["percenthp"] = function (u) local hpmax = UnitHealthMax(u) return (hpmax ~= 0) and floor((UnitHealth(u) / hpmax) * 100) or 0 end,
["missinghp"] = function (u) return UnitHealthMax(u) - UnitHealth(u) or 0 end,
["curmana"] = function (u) return UnitMana(u) or 1 end,
["maxmana"] = function (u) return UnitManaMax(u) or 0 end,
["percentmana"] = function (u) local mpmax = UnitManaMax(u) return (mpmax ~= 0) and floor((UnitMana(u) / mpmax) * 100) or 0 end,
["missingmana"] = function (u) return UnitHealthMax(u) - UnitHealth(u) or 0 end,
["typemana"] = function (u) local p=UnitPowerType(u) return ( (p==1) and "Rage" or (p==2) and "Focus" or (p==3) and "Energy" or "Mana" ) end,
["level"] = function (u) local x = UnitLevel(u) return ((x>0) and x or "??") end,
["class"] = function (u) return (UnitClass(u) or "Unknown") end,
["creature"] = function (u) return (UnitCreatureFamily(u) or UnitCreatureType(u) or "Unknown") end,
["smartclass"] = function (u) if UnitIsPlayer(u) then return self.UnitInformation["class"](u) else return self.UnitInformation["creature"](u) end end,
["combos"] = function (u) return (GetComboPoints() or 0) end,
["combos2"] = function (u) return string.rep("@", GetComboPoints()) end,
["classification"] = function (u) if UnitClassification(u) == "rare" then return "Rare " elseif UnitClassification(u) == "eliterare" then return "Rare Elite " elseif UnitClassification(u) == "elite" then return "Elite " elseif UnitClassification(u) == "worldboss" then return "Boss " else return "" end end,
["faction"] = function (u) return (UnitFactionGroup(u) or "") end,
["connect"] = function (u) return ( (UnitIsConnected(u)) and "" or "Offline" ) end,
["race"] = function (u) return ( UnitRace(u) or "") end,
["pvp"] = function (u) return ( UnitIsPVP(u) and "PvP" or "" ) end,
["plus"] = function (u) return ( UnitIsPlusMob(u) and "+" or "" ) end,
["sex"] = function (u) local x = UnitSex(u) return ( (x==0) and "Male" or (x==1) and "Female" or "" ) end,
["rested"] = function (u) return (GetRestState()==1 and "Rested" or "") end,
["leader"] = function (u) return (UnitIsPartyLeader(u) and "(L)" or "") end,
["leaderlong"] = function (u) return (UnitIsPartyLeader(u) and "(Leader)" or "") end,
["happynum"] = function (u) return (GetPetHappiness() or 0) end,
["happytext"] = function (u) return ( getglobal("PET_HAPPINESS"..(GetPetHappiness() or 0)) or "" ) end,
["happyicon"] = function (u) local x=GetPetHappiness() return ( (x==3) and ":)" or (x==2) and ":|" or (x==1) and ":(" or "" ) end,
["curxp"] = function (u) return (UnitXP(u) or "") end,
["maxxp"] = function (u) return (UnitXPMax(u) or "") end,
["percentxp"] = function (u) local x=UnitXPMax(u) if (x>0) then return floor( UnitXP(u)/x*100+0.5) else return 0 end end,
["missingxp"] = function (u) return (UnitXPMax(u) - UnitXP(u)) end,
["restedxp"] = function (u) return (GetXPExhaustion() or "") end,
["tappedbyme"] = function (u) if UnitIsTappedByPlayer("target") then return "*" else return "" end end,
["istapped"] = function (u) if UnitIsTapped(u) and (not UnitIsTappedByPlayer("target")) then return "*" else return "" end end,
["pvpranknum"] = function (u) if (UnitPVPRank(u) >= 1) then return ((UnitPVPRank(u)-4) or "") else return "" end end,
["pvprank"] = function (u) if (UnitPVPRank(u) >= 1) then return (GetPVPRankInfo(UnitPVPRank(u), u) or "" ) else return "" end end,
["fkey"] = function (u)
local _,_,fkey = string.find(u, "^party(%d)$")
if u == "player" then
fkey = 0
end
if not fkey then
return ""
else
return "F"..(fkey+1)
end
end,
["white"] = function (u) return "|cFFFFFFFF" end,
["aggro"] = function (u)
local x = (UnitReaction("player",u) or 5)
return self:GiveHex(UnitReactionColor[x].r, UnitReactionColor[x].g, UnitReactionColor[x].b)
end,
["difficulty"] = function (u) if UnitCanAttack("player",u) then local x = (UnitLevel(u)>0) and UnitLevel(u) or 99 local color = GetDifficultyColor(x) return aUF:GiveHex(color.r,color.g,color.b) else return "" end end,
["colormp"] = function (u) local x = ManaBarColor[UnitPowerType(u)] return self:GiveHex(x.r, x.g, x.b) end,
["inmelee"] = function (u) if PlayerFrame.inCombat then return "|cffFF0000" else return "" end end,
["incombat"] = function (u) if UnitAffectingCombat(u) then return "|cffFF0000" else return "" end end,
["raidcolor"] = function (u) local _,x=UnitClass(u) if x and UnitIsPlayer(u) then return (self.RaidColors[x] or "") else return "" end end,
}
self.formats = {
["Health"] = {
["Absolute"] = "[aghp]",
["Difference"] = "[agmissinghp]",
["Percent"] = "[agpercenthp]",
["Smart"] = "[agsmarthp]",
["Hide"] = "",
},
["Mana"] = {
["Absolute"] = "[agmana]",
["Difference"] = "[agmissingmana]",
["Percent"] = "[agpercentmana]",
["Smart"] = "[agsmartmana]",
["Hide"] = "",
},
["Name"] = {
["Default"] = "[name]",
["Hide"] = "",
},
["Class"] = {
["Default"] = "[agtype][difficulty][level][white] [raidcolor][agclass][white] [agrace]",
["Hide"] = "",
}
}
self.HelperFunctions = {}
self.units = {}
self.subgroups = {}
self.changedSubgroups = {}
end
-- EVENTS
function aUF:PLAYER_LOGIN()
aUF:CreateObject("player","player","XP")
aUF:CreateObject("pet","pet","XP")
aUF:CreateObject("target","target","Combo")
aUF:CreateObject("targettarget","targettarget","Metro")
self:PARTY_MEMBERS_CHANGED()
end
function aUF:PLAYER_TARGET_CHANGED()
if self.units.target then
self.units.target:UpdateAll()
end
if self.units.targettarget then
if UnitExists("target") then
self.units.targettarget:Start()
else
self.units.targettarget:Stop()
end
end
end
function aUF:PARTY_MEMBERS_CHANGED()
for i = 1,4 do
if aUF:CheckVisibility("party"..i) == true then
aUF:CreateObject("party"..i)
end
if aUF:CheckVisibility("partypet"..i) == true then
aUF:CreateObject("partypet"..i)
end
end
end
function aUF:RAID_ROSTER_UPDATE()
for i = 1,40 do
if aUF:CheckVisibility("raid"..i) == true then
aUF:CreateObject("raid"..i,"raid"..i,"Raid")
end
end
self:PARTY_MEMBERS_CHANGED()
end
function aUF:agUF_UpdateGroups()
for name in self.changedSubgroups do
if string.find(name,"party") then
self.subgroups[name].raid = false
end
self.subgroups[name]:Update()
end
self.changedSubgroups = {}
end
-- UTILITY FUNCTIONS
function aUF:CreateObject(name,unit,type,db)
if not self.units[name] then
if not unit then
unit = name
end
if not type then
self.units[name] = self.classes.aUFunit:new(name,unit,db)
else
self.units[name] = self.classes["aUFunit"..type]:new(name,unit,db)
end
end
end
function aUF:FindObjects(sortBy,object)
local table = {}
if not object then object = "units" end
if self[object] then
for _,v in self[object] do
if v[sortBy] then
if not table[v[sortBy]] then
table[v[sortBy]] = {}
end
tinsert(table[v[sortBy]],v)
end
end
end
return table
end
function aUF:CallUnitMethods(func,arg,find,type,object)
if not func then return end
if find and type then
if aUF:FindObjects(type)[find] then
for _,unitObject in aUF:FindObjects(type,object)[find] do
if unitObject[func] then
unitObject[func](unitObject,arg)
end
end
end
else
if not object then object = "units" end
if self[object] then
for _,unitObject in self[object] do
unitObject[func](unitObject,arg)
end
end
end
end
function aUF:CheckVisibility(unit)
local _,_,type = string.find(unit, "(%a+)")
-- if self.db.profile[type].AlwaysShow == true then
-- return true
-- end
-- Special cases
-- Hide targettarget if player is targetting self
if unit == "targettarget" then
if UnitName("player") == UnitName("target") then
return false
end
-- Hide partyframes in raid
elseif type == "party" then
if self.db.profile.RaidHideParty == true and UnitInRaid("player") == 1 then
return false
end
elseif type == "partypet" then
if self.db.profile.RaidHideParty == true and UnitInRaid("player") == 1 then
return false
end
local parent = string.gsub(unit,"pet","")
if aUF:CheckVisibility(parent) == false then
return false
end
elseif type == "raidpet" then
local parent = string.gsub(unit,"pet","")
if not aUF:CheckVisibility(parent) then
return false
end
end
if (UnitExists(unit) and not self.db.profile[type].HideFrame == true) then
return true
end
end
function aUF:UtilFactionColors(unit)
local r, g, b = 0,0,0
local a = 0.5
if ( UnitPlayerControlled(unit) ) then
if ( UnitCanAttack(unit, "player") ) then
if ( not UnitCanAttack("player", unit) ) then
r = self.ManaColor[0].r
g = self.ManaColor[0].g
b = self.ManaColor[0].b
else
r = self.ManaColor[1].r
g = self.ManaColor[1].g
b = self.ManaColor[1].b
end
elseif ( UnitCanAttack("player", unit) ) then
r = self.ManaColor[3].r
g = self.ManaColor[3].g
b = self.ManaColor[3].b
elseif ( UnitIsPVP(unit) ) then
r = self.HealthColor.r
g = self.HealthColor.g
b = self.HealthColor.b
else
r = self.ManaColor[0].r
g = self.ManaColor[0].g
b = self.ManaColor[0].b
end
elseif ( UnitIsTapped(unit) and not UnitIsTappedByPlayer(unit) ) or UnitIsDead(unit) then
r = 0.5
g = 0.5
b = 0.5
else
local reaction = UnitReaction(unit, "player")
if ( reaction ) then
if reaction == 5 or reaction == 6 or reaction == 7 then
r = self.HealthColor.r
g = self.HealthColor.g
b = self.HealthColor.b
elseif reaction == 4 then
r = self.ManaColor[3].r
g = self.ManaColor[3].g
b = self.ManaColor[3].b
elseif reaction == 1 or reaction == 2 or reaction == 3 then
r = self.ManaColor[1].r
g = self.ManaColor[1].g
b = self.ManaColor[1].b
else
r = UnitReactionColor[reaction].r
g = UnitReactionColor[reaction].g
b = UnitReactionColor[reaction].b
end
end
end
return {r = r,g = g,b = b}
end
function aUF:GiveHex(r,g,b)
r=r*255
g=g*255
b=b*255
return string.format("|cff%2x%2x%2x", r, g, b) or ""
end
function aUF:GetRaidColors(class)
if self.RaidColors[class] then
return self.RaidColors[class]
else
return "|r"
end
end
function aUF:TargetGetMobType(unit)
local classification = UnitClassification(unit)
if ( classification == "worldboss" ) then
return "Boss "
elseif ( classification == "rareelite" ) then
return "Rare-Elite "
elseif ( classification == "elite" ) then
return "Elite "
elseif ( classification == "rare" ) then
return "Rare "
else
return nil;
end
end
function aUF:UnitDebuff(unit,id,filter)
local aura, count, t = UnitDebuff(unit,id)
local _, eClass = UnitClass("player")
if filter == 1 then
if ( self.CanDispel[eClass] and self.CanDispel[eClass][t] == true or ( eClass == "PRIEST" and aura == "Interface\\Icons\\Spell_Holy_AshesToAshes") ) then
return aura, count or 0, t
end
else
return aura, count or 0, t
end
end
function aUF:FeedbackUpdate()
local maxalpha = 0.6
local found
for objectName,v in self.feedback do
found = true
local unitOjbect = aUF.units[objectName]
local elapsedTime = GetTime() - unitOjbect.feedbackStartTime
if ( elapsedTime < COMBATFEEDBACK_FADEINTIME ) then
local alpha = maxalpha*(elapsedTime / COMBATFEEDBACK_FADEINTIME)
unitOjbect.HitIndicator:SetAlpha(alpha)
elseif ( elapsedTime < (COMBATFEEDBACK_FADEINTIME + COMBATFEEDBACK_HOLDTIME) ) then
unitOjbect.HitIndicator:SetAlpha(maxalpha)
elseif ( elapsedTime < (COMBATFEEDBACK_FADEINTIME + COMBATFEEDBACK_HOLDTIME + COMBATFEEDBACK_FADEOUTTIME) ) then
local alpha = maxalpha - maxalpha*((elapsedTime - COMBATFEEDBACK_HOLDTIME - COMBATFEEDBACK_FADEINTIME) / COMBATFEEDBACK_FADEOUTTIME)
unitOjbect.HitIndicator:SetAlpha(alpha)
else
unitOjbect.HitIndicator:Hide()
aUF.feedback[objectName] = nil
end
end
if not found then
self:CancelScheduledEvent("agUF_CombatSchedule")
end
end
-- Dewdrop stuff
function aUF:CreateMenu()
self.dewdrop = AceLibrary("Dewdrop-2.0")
local unitTable = {}
unitTable.UnitHeader = {
name = L"unitsettings",
type = 'header',
desc = "desc",
order = 1,
}
for order,unit in ipairs(self.wowClasses) do
unitTable[unit] = aUF:CreateDewdrop(unit,(order + 1),true)
end
local agDewdropMenu = {
type= 'group',
args = {
AddonHeader = {
name = L"addonname",
type = 'header',
desc = "desc",
order = 1,
},
Units = {
name = L"units",
type = 'group',
desc = L"UnitDesc",
args = unitTable,
order = 2,
},
Borders = {
name = L"borders",
type = 'text',
desc = L"BordersDesc",
get = function()
return self.db.profile.BorderStyle
end,
set = function(option)
self.db.profile.BorderStyle = option
self:CallUnitMethods("BorderBackground")
self:CallUnitMethods("BorderBackground",nil,nil,nil,"subgroups")
end,
validate = {"Classic", "Nurfed", "Hidden"},
order = 3,
},
FrameColors = {
type= 'group',
name = L"framecolors",
desc = L"framecolorsdesc",
args = {
partybg = {
name = L"partybg",
type = 'color',
desc = L"partybgdesc",
hasAlpha = true,
get = function()
return self.db.profile.PartyFrameColors.r, self.db.profile.PartyFrameColors.g, self.db.profile.PartyFrameColors.b, self.db.profile.PartyFrameColors.a
end,
set = function(r, g, b, a)
self.db.profile.PartyFrameColors.r, self.db.profile.PartyFrameColors.g, self.db.profile.PartyFrameColors.b, self.db.profile.PartyFrameColors.a = r, g, b, a
self:CallUnitMethods("BorderBackground")
self:CallUnitMethods("BorderBackground",nil,nil,nil,"subgroups")
end,
order = 1,
},
targetbg = {
name = L"targetbg",
type = 'color',
desc = L"targetbgdesc",
hasAlpha = true,
get = function()
return self.db.profile.TargetFrameColors.r, self.db.profile.TargetFrameColors.g, self.db.profile.TargetFrameColors.b, self.db.profile.TargetFrameColors.a
end,
set = function(r, g, b, a)
self.db.profile.TargetFrameColors.r, self.db.profile.TargetFrameColors.g, self.db.profile.TargetFrameColors.b, self.db.profile.TargetFrameColors.a = r, g, b, a
self:CallUnitMethods("BorderBackground")
self:CallUnitMethods("BorderBackground",nil,nil,nil,"subgroups")
end,
order = 2,
},
border = {
name = L"bordercolor",
type = 'color',
desc = L"bordercolordesc",
hasAlpha = true,
get = function()
return self.db.profile.FrameBorderColors.r, self.db.profile.FrameBorderColors.g, self.db.profile.FrameBorderColors.b, self.db.profile.FrameBorderColors.a
end,
set = function(r, g, b, a)
self.db.profile.FrameBorderColors.r, self.db.profile.FrameBorderColors.g, self.db.profile.FrameBorderColors.b, self.db.profile.FrameBorderColors.a = r, g, b, a
self:CallUnitMethods("BorderBackground")
self:CallUnitMethods("BorderBackground",nil,nil,nil,"subgroups")
end,
order = 3,
},
},
order = 4,
},
BarColors = {
type= 'group',
args = {
Health = {
name = L"health",
type = 'color',
desc = L"healthDesc",
get = function()
return self.db.profile.HealthColor.r, self.db.profile.HealthColor.g, self.db.profile.HealthColor.b
end,
set = function(r, g, b)
self.db.profile.HealthColor.r, self.db.profile.HealthColor.g, self.db.profile.HealthColor.b = r, g, b
self:CallUnitMethods("StatusBarsColor")
end,
order = 1,
},
Mana = {
name = L"mana",
type = 'color',
desc = L"manaDesc",
get = function()
return self.db.profile.ManaColor[0].r, self.db.profile.ManaColor[0].g, self.db.profile.ManaColor[0].b
end,
set = function(r, g, b)
self.db.profile.ManaColor[0].r, self.db.profile.ManaColor[0].g, self.db.profile.ManaColor[0].b = r, g, b
self:CallUnitMethods("StatusBarsColor")
end,
order = 2,
},
Rage = {
name = L"rage",
type = 'color',
desc = L"rageDesc",
get = function()
return self.db.profile.ManaColor[1].r, self.db.profile.ManaColor[1].g, self.db.profile.ManaColor[1].b
end,
set = function(r, g, b)
self.db.profile.ManaColor[1].r, self.db.profile.ManaColor[1].g, self.db.profile.ManaColor[1].b = r, g, b
self:CallUnitMethods("StatusBarsColor")
end,
order = 3,
},
Energy = {
name = L"energy",
type = 'color',
desc = L"energyDesc",
get = function()
return self.db.profile.ManaColor[3].r, self.db.profile.ManaColor[3].g, self.db.profile.ManaColor[3].b
end,
set = function(r, g, b)
self.db.profile.ManaColor[3].r, self.db.profile.ManaColor[3].g, self.db.profile.ManaColor[3].b = r, g, b
self:CallUnitMethods("StatusBarsColor")
end,
order = 4,
},
PetFocus = {
name = L"petfocus",
type = 'color',
desc = L"petfocusDesc",
get = function()
return self.db.profile.ManaColor[2].r, self.db.profile.ManaColor[2].g, self.db.profile.ManaColor[2].b
end,
set = function(r, g, b)
self.db.profile.ManaColor[2].r, self.db.profile.ManaColor[2].g, self.db.profile.ManaColor[2].b = r, g, b
self:CallUnitMethods("StatusBarsColor")
end,
order = 5,
},
},
order = 5,
name = L"barcolors",
desc = L"barcolorsDesc",
},
BarStyle = {
name = L"barstyle",
type = 'text',
desc = L"BarStyleDesc",
get = function()
return self.db.profile.BarStyle
end,
set = function(option)
self.db.profile.BarStyle = option
self:CallUnitMethods("BarTexture")
end,
validate = {"Classic", "Default","Smooth", "Bars", "Bumps", "Button", "Cloud", "Cracked", "Dabs", "Diagonal", "Gloss", "Grid", "Hatched", "Perl", "Rain", "Skewed", "Smudge", "Water", "Wisps","Charcoal","BantoBar"},
order = 6,
},
ShowPvPIcon = {
name = L"pvpicon",
type = 'toggle',
desc = L"ShowPVPIconDesc",
get = function()
return self.db.profile.ShowPvPIcon
end,
set = function(option)
self.db.profile.ShowPvPIcon = option
self:CallUnitMethods("UpdatePvP",true)
end,
order = 7,
},
ShowGroupIcons = {
name = L"groupicon",
type = 'toggle',
desc = L"ShowGroupIconsDesc",
get = function()
return self.db.profile.ShowGroupIcons
end,
set = function(option)
self.db.profile.ShowGroupIcons = option
self:CallUnitMethods("LabelsCheckLeader")
end,
order = 8,
},
HighlightSelected = {
name = L"highlightselected",
type = 'toggle',
desc = L"HighlightSelectedDesc",
get = function()
return self.db.profile.HighlightSelected
end,
set = function(option)
self.db.profile.HighlightSelected = option
end,
order = 9,
},
Locked = {
name = L"lock",
type = 'toggle',
desc = L"LockedDesc",
get = function()
return self.db.profile.Locked
end,
set = function(option)
self.db.profile.Locked = option
end,
order = 12,
},
}
}
self.dewdrop:InjectAceOptionsTable(self, agDewdropMenu)
return agDewdropMenu
end
function aUF:InitMenu()
if not self.menu then
self.menu = aUF:CreateMenu()
end
local agSlashMenu = {
type = "group",
args = {
config = {
name = L('config'),
desc = L('configdesc'),
type = 'execute',
func = function()
self.dewdrop:Open(UIParent, 'children', function() self.dewdrop:FeedAceOptionsTable(self.menu) end,'cursorX', true, 'cursorY', true)
end,
},
reset = {
name = L('reset'),
desc = L('resetdesc'),
type = 'execute',
func = function()
self:Reset()
end,
}
}
}
self:RegisterChatCommand({ "/aguf", "/ag_unitframes" }, agSlashMenu )
end
function aUF:CreateDewdrop(type,order,mainmenu)
local class = type
local prettyname = L(class)
local strings = {"Health","Mana","Name","Class"}
-- local strings = {"Health","Mana"}
local stringArgs = {}
for k,v in strings do
local name = v
local order = k
local validate
if v == "Health" or v == "Mana" then
validate = {"Absolute", "Difference", "Percent", "Smart","Custom", "Hide"}
else
validate = {"Default","Custom", "Hide"}
end
stringArgs[v] = {
name = name.." Text",
type = 'group',
desc = L"UnitDesc",
order = order,
args = {
StatusTextStyle = {
name = "Style",
type = 'text',
desc = L"StatusTextDesc",
get = function()
return self.db.profile[class][name.."Style"]
end,
set = function(option)
self.db.profile[class][name.."Style"] = option
self:SetStringFormats(class)
self:CallUnitMethods("UpdateTextStrings",nil,class,"type")
end,
validate = validate,
order = 1,
},
HealthCustom = {
name = "Custom",
type = 'text',
desc = L"StatusTextDesc",
get = function()
return self.db.profile[class][name.."Format"]
end,
set = function(option)
self.db.profile[class][name.."Format"] = option
self:SetStringFormats(class)
self:CallUnitMethods("UpdateTextStrings",nil,class,"type")
end,
usage = "",
order = 2,
}
}
}
end
local table = {
name = prettyname,
type = 'group',
desc = prettyname.." Settings",
order = order,
args = {
UnitHeader = {
name = prettyname.." "..L"layoutsettings",
type = 'header',
desc = "desc",
order = 1,
},
FrameStyle = {
name = L"framestyle",
type = 'text',
desc = L"FrameStyleDesc",
validate = {},
get = function()
return self.db.profile[class].FrameStyle
end,
set = function(option)
self.db.profile[class].FrameStyle = option
self:CallUnitMethods("ApplyTheme",nil,class,"type")
self:CallUnitMethods("UpdateName",true,class,"type")
end,
order = 2,
},
Width = {
name = L"widthadjust",
type = 'range',
desc = L"widthadjustDesc",
min = 50,
max = 400,
step = 1,
get = function()
return self.db.profile[class].Width
end,
set = function(option)
self.db.profile[class].Width = option
self:CallUnitMethods("SetWidth",nil,class,"type")
end,
order = 3,
},
StatusTextStyle = {
name = "Status Text",
type = 'group',
desc = L"UnitDesc",
order = 5,
args = stringArgs,
},
Scale = {
name = L"scale",
type = 'range',
desc = L"ScaleDesc",
min = 0.5,
max = 2,
step = 0.01,
isPercent = true,
get = function()
return self.db.profile[class].Scale
end,
set = function(option)
self.db.profile[class].Scale = option
self:CallUnitMethods("LoadScale",nil,class,"type")
self:CallUnitMethods("LoadPosition",nil,class,"type")
end,
order = 7,
},
ClassColorBars = {
name = L"classcolorbar",
type = 'toggle',
desc = L"ClassColorBarsDesc",
get = function()
return self.db.profile[class].ClassColorBars
end,
set = function(option)
self.db.profile[class].ClassColorBars = option
self:CallUnitMethods("StatusBarsColor",nil,class,"type")
end,
order = 20,
},
RaidColorName = {
name = L"raidcolorname",
type = 'toggle',
desc = L"RaidColorNameDesc",
get = function()
return self.db.profile[class].RaidColorName
end,
set = function(option)
self.db.profile[class].RaidColorName = option
self:CallUnitMethods("UpdateTextStrings",nil,class,"type")
end,
order = 21,
},
ShowCombat = {
name = L"showcombat",
type = 'toggle',
desc = L"ShowCombatDesc",
get = function()
return self.db.profile[class].ShowCombat
end,
set = function(option)
self.db.profile[class].ShowCombat = option
end,
order = 23,
},
ShowInCombatIcon = {
name = L"showincombat",
type = 'toggle',
desc = L"ShowInCombatDesc",
get = function ()
return self.db.profile[class].ShowInCombatIcon
end,
set = function(option)
self.db.profile[class].ShowInCombatIcon = option
end,
order = 24,
},
ShowRaidTargetIcon = {
name = L"showraidicon",
type = 'toggle',
desc = L"ShowRaidIconDesc",
get = function ()
return self.db.profile[class].ShowRaidTargetIcon
end,
set = function(option)
self.db.profile[class].ShowRaidTargetIcon = option
self:CallUnitMethods("UpdateRaidTargetIcon",true,class,"type")
end,
order = 25,
},
LongStatusbars = {
name = L"longbars",
type = 'toggle',
desc = L"LongBarsDesc",
get = function()
return self.db.profile[class].LongStatusbars
end,
set = function(option)
self.db.profile[class].LongStatusbars = option
self:CallUnitMethods("ApplyTheme",nil,class,"type")
end,
order = 26,
},
HideMana = {
name = L"hidemana",
type = 'toggle',
desc = L"HideManaDesc",
get = function()
return self.db.profile[class].HideMana
end,
set = function(option)
self.db.profile[class].HideMana = option
self:CallUnitMethods("ApplyTheme",nil,class,"type")
self:CallUnitMethods("UpdateName",true,class,"type")
end,
order = 27,
},
HideFrame = {
name = L"hideframe",
type = 'toggle',
desc = L"HideFrameDesc",
get = function()
return self.db.profile[class].HideFrame
end,
set = function(option)
self.db.profile[class].HideFrame = option
self:RAID_ROSTER_UPDATE()
self:CallUnitMethods("UpdateAll",nil,class,"type")
end,
order = 29,
},
Spacing1 = {
name = " ",
type = 'header',
order = 35,
},
AuraHeader = {
name = L"aurasettings",
type = 'header',
order = 39,
},
AuraStyle = {
name = L"aurastyle",
type = 'text',
desc = L"AuraStyleDesc",
get = function()
return self.db.profile[class].AuraStyle
end,
set = function(option)
self.db.profile[class].AuraStyle = option
self:CallUnitMethods("UpdateAuras",true,class,"type")
self:CallUnitMethods("AuraPosition",true,class,"type")
end,
validate = {OneLine = L"oneline", TwoLines = L"twolines", Hide = L"hide"},
order = 40,
},
AuraPos = {
name = L"aurapos",
type = 'text',
desc = L"AuraPosDesc",
get = function()
return self.db.profile[class].AuraPos
end,
set = function(option)
self.db.profile[class].AuraPos = option
self:CallUnitMethods("UpdateAuras",true,class,"type")
self:CallUnitMethods("AuraPosition",true,class,"type")
end,
validate = {"Right", "Left", "Above", "Below"},
order = 41,
},
DebuffColoring = {
name = L"debuffcoloring",
type = 'toggle',
desc = L"DebuffColoringDesc",
get = function()
return self.db.profile[class].AuraDebuffC
end,
set = function(option)
self.db.profile[class].AuraDebuffC = option
self:CallUnitMethods("UpdateAuras",true,class,"type")
end,
order = 42,
},
AuraFilter = {
name = L"aurafilter",
type = 'toggle',
desc = L"AuraFilterDesc",
get = function()
if self.db.profile[class].AuraFilter == 1 then
return true
else
return false
end
end,
set = function(option)
if option == true then
self.db.profile[class].AuraFilter = 1
else
self.db.profile[class].AuraFilter = 0
end
self:CallUnitMethods("UpdateAuras",true,class,"type")
end,
order = 43,
}
}
}
-- Inject themes from the theme table
local themetable = {}
for k, v in self.Layouts do
tinsert(themetable,k)
end
table.args.FrameStyle.validate = themetable
-- PLAYER/PET
--[[
if class == "player" then
local ShowRestingIcon = {
name = L"showresting",
type = 'toggle',
desc = L"ShowRestingDesc",
get = function()
return self.db.profile[class].ShowRestingIcon
end,
set = function(option)
self.db.profile[class].ShowRestingIcon = option
self:CallUnitMethods("UpdateResting",nil,class,"type")
end,
order = 26,
}
table.args.ShowRestingIcon = ShowRestingIcon
end
]]
if class == "player" or class == "pet" then
local ShowXP = {
name = L"showxp",
type = 'toggle',
desc = L"ShowXPDesc",
get = function()
return self.db.profile[class].ShowXP
end,
set = function(option)
self.db.profile[class].ShowXP = option
self:CallUnitMethods("ApplyTheme",nil,class,"type")
end,
order = 26,
}
table.args.ShowXP = ShowXP
end
if class == "pet" then
local PetGrouping = {
name = L"petgrouping",
type = 'text',
desc = L"PetGroupingDesc",
get = function()
return self.db.profile.PetGrouping
end,
set = function(option)
self.db.profile.PetGrouping = option
self:CallUnitMethods("UpdateAll")
end,
validate = {["withplayer"] = L"withplayer", ["nogroup"] = L"nogroup"},
order = 6,
}
table.args.PetGrouping = PetGrouping
end
if class == "pet" or class == "partypet" or class == "raidpet" then
table.args.RaidColorName = nil
table.args.ClassColorBars = nil
end
-- TARGET
if string.find(class,"target") then
local TargetShowHostile = {
name = L"targetshowhostile",
type = 'toggle',
desc = L"TargetHostileDesc",
get = function()
return self.db.profile.TargetShowHostile
end,
set = function(option)
self.db.profile.TargetShowHostile = option
self:CallUnitMethods("StatusBarsColor",nil,class,"type")
end,
order = 22,
}
table.args.TargetShowHostile = TargetShowHostile
end
-- PARTY
if class == "party" then
local RaidHideParty = {
name = L"raidhideparty",
type = 'toggle',
desc = L"RaidHidePartyDesc",
get = function()
return self.db.profile.RaidHideParty
end,
set = function(option)
self.db.profile.RaidHideParty = option
self:CallUnitMethods("UpdateAll",nil,"party","type")
self:CallUnitMethods("UpdateAll",nil,"partypet","type")
end,
order = 28,
}
table.args.RaidHideParty = RaidHideParty
local PartyGrouping = {
name = L"partygrouping",
type = 'text',
desc = L"PartyGroupingDesc",
get = function()
return self.db.profile.PartyGrouping
end,
set = function(option)
self.db.profile.PartyGrouping = option
self:PARTY_MEMBERS_CHANGED()
self:CallUnitMethods("UpdateAll")
end,
validate = {["withplayer"] = L"withplayer", ["withoutplayer"] = L"withoutplayer", ["nogroup"] = L"nogroup"},
order = 6,
}
table.args.PartyGrouping = PartyGrouping
end
-- RAID
if class == "raid" then
local RaidGrouping = {
name = L"raidgrouping",
type = 'text',
desc = L"RaidGroupingDesc",
get = function()
return self.db.profile.RaidGrouping
end,
set = function(option)
self.db.profile.RaidGrouping = option
self:CallUnitMethods("UpdateAll")
end,
validate = {["bysubgroup"] = L"bysubgroup", ["byclass"] = L"byclass", ["byrole"] = L"byrole", ["nogroup"] = L"nogroup", ["onebiggroup"] = L"onebiggroup"},
order = 6,
}
table.args.RaidGrouping = RaidGrouping
end
if not mainmenu then
table.args.UnitHeader.name = L(class).." "..L"frame"
local EndSpacing = {
name = " ",
type = 'header',
order = 51,
}
table.args.EndSpacing = EndSpacing
end
return table
end
function aUF:LoadStringFormats()
for order,unit in ipairs(self.wowClasses) do
self:SetStringFormats(unit)
end
end
function aUF:SetStringFormats(type)
local db = self.db.profile[type]
local strings = {"Health","Mana","Name","Class"}
if not aUF.HelperFunctions[type] then
aUF.HelperFunctions[type] = {}
end
for k,v in strings do
local format
if db[v.."Style"] == "Custom" then
format = db[v.."Format"]
else
format = self.formats[v][db[v.."Style"]]
end
aUF.HelperFunctions[type][v.."Text"] = self:Parse(format)
end
end
-- Clads code-- Clads code-- Clads code-- Clads code
-- Clads code-- Clads code-- Clads code-- Clads code
-- Code Begins here
local work = {}
local strgsub, strsub, strgfind, strformat, strfind = string.gsub, string.sub, string.gfind, string.format, string.find
function aUF:Parse(format)
if not format then
return nil
end
local formatArgs, formatString = {}
for s,data,e in strgfind(format, "()(%b[])()") do
local tag = strsub(data, 2, -2)
local func = aUF:GetTagFunction(tag)
if func then
table.insert(formatArgs, func)
else
error(strformat("\"%s\" is not a valid format tag.", data))
end
end
formatString = strgsub(format, "%%", "%%%%")
formatString = strgsub(formatString, "%b[]", "%%s")
-- Lets avoid unpacking extra results
local num = table.getn(formatArgs)
local tmp = work[num]
if not tmp then
tmp = {}
work[num] = tmp
end
if num == 0 then
return function(unit, fontstring)
fontstring:SetText(formatString)
end
else
return function(unit, fontstring)
for i,func in ipairs(formatArgs) do
work[i] = func(unit)
end
fontstring:SetText(strformat(formatString, unpack(work)))
end
end
end
local helpers = {}
function aUF:GetTagFunction(tag)
-- Check if this is just a unit tag
if aUF.UnitInformation[tag] then return aUF.UnitInformation[tag] end
local s,e,tag,args = strfind(tag, "^(%a+)%s+(.*)$")
if not tag then
-- Not a pattern we can recognize
return nil
end
-- Bind the unit function to a local for closure purposes
local func = aUF.UnitInformation[tag]
if not func then
-- Not a tag we support
return nil
end
local _,_,width = strfind(args, "^(%d+)$")
if width then
local id = strformat("%s-%d", tag, width)
local hFunc = helpers[id]
if not hFunc then
hFunc = function(unit)
return strsub(func(unit), 1, width)
end
helpers[id] = hFunc
end
return hFunc
end
local _,_,oc,ec = strfind(args, "^(.)(.)$")
if oc then
local id = strformat("%s-%s%s", tag, oc, ec)
local hFunc = helpers[id]
if not hFunc then
hFunc = function(unit)
local t = func(unit)
if t ~= "" then return
strformat("%s%s%s",oc,t,ec)
else
return t
end
end
helpers[id] = hFunc
end
return hFunc
end
end
function aUF:Tag_agmana(unit,flag)
local currValue,maxValue = UnitMana(unit),UnitManaMax(unit)
local perc = currValue/maxValue * 100
local manaDiff = maxValue - currValue
local text = ""
if ( not UnitExists(unit) or UnitIsDead(unit) or UnitIsGhost(unit) or not UnitIsConnected(unit) ) then
return ""
end
if currValue > maxValue then
maxValue = currValue
end
if currValue > 9999 then
currValue = string.format("%.1fk", currValue / 1000)
end
if maxValue > 9999 then
maxValue = string.format("%.1fk", maxValue / 1000)
end
if flag == 1 then
return string.format("%.0f%%", perc)
elseif flag == 2 then
if manaDiff > 9999 then
manaDiff = string.format("%.1fk", manaDiff / 1000)
end
return (currValue.."|cffff7f7f-"..manaDiff.."|r")
elseif flag == 3 then
return currValue
else
return (currValue.."/"..maxValue)
end
return text
end
function aUF:Tag_aghp(unit,flag)
local currValue,maxValue = UnitHealth(unit),UnitHealthMax(unit)
local perc = currValue/maxValue * 100
local text = ""
local MHfound = false
if ( UnitIsDead(unit) ) then
return L("dead")
elseif ( UnitIsGhost(unit) ) then
return L("ghost")
elseif ( not UnitIsConnected(unit) or maxValue == 1 ) then
return L("disc")
end
if (MobHealth3 and not UnitIsFriend("player", unit) ) then
currValue,maxValue,MHfound = MobHealth3:GetUnitHealth(unit, currValue,maxValue)
end
if currValue > maxValue then
maxValue = currValue
end
local hpDiff = maxValue - currValue
if currValue > 9999 then
currValue = string.format("%.1fk", currValue / 1000)
end
if maxValue > 9999 then
maxValue = string.format("%.1fk", maxValue / 1000)
end
if not flag and MHfound and not UnitIsFriend("player", unit) then
return currValue .." (".. perc .."%)"
end
if not (flag == 1) and (MHfound or unit == "pet" or unit == "player" or UnitInParty(unit) or UnitInRaid(unit)) then
if flag == 2 then
if hpDiff > 0 then
if hpDiff > 9999 then
hpDiff = string.format("%.1fk", hpDiff / 1000)
end
return (currValue.."|cffff7f7f-"..hpDiff.."|r")
else
return currValue
end
elseif flag == 3 and hpDiff > 0 then
if hpDiff > 9999 then
hpDiff = string.format("%.1fk", hpDiff / 1000)
end
return "|cffff7f7f-"..hpDiff.."|r"
elseif flag == 3 then
return ""
else
return (currValue.."/"..maxValue)
end
else
return string.format("%.0f%%", perc)
end
return text
end
-- Blizzard hide and show
function aUF:UpdateBlizzVisibility()
if aUF.db.profile.BlizFramesVisibility.HidePlayerFrame == true then
aUF:HideBlizzPlayer()
else
aUF:ShowBlizzPlayer()
end
if aUF.db.profile.BlizFramesVisibility.HidePartyFrame == true then
aUF:HideBlizzParty()
else
aUF:ShowBlizzParty()
end
if aUF.db.profile.BlizFramesVisibility.HideTargetFrame == true then
aUF:HideBlizzTarget()
else
aUF:ShowBlizzTarget()
end
end
function aUF:HideBlizzPlayer()
PlayerFrame:UnregisterEvent("UNIT_LEVEL")
PlayerFrame:UnregisterEvent("UNIT_COMBAT")
PlayerFrame:UnregisterEvent("UNIT_SPELLMISS")
PlayerFrame:UnregisterEvent("UNIT_PVP_UPDATE")
PlayerFrame:UnregisterEvent("UNIT_MAXMANA")
PlayerFrame:UnregisterEvent("PLAYER_ENTER_COMBAT")
PlayerFrame:UnregisterEvent("PLAYER_LEAVE_COMBAT")
PlayerFrame:UnregisterEvent("PLAYER_UPDATE_RESTING")
PlayerFrame:UnregisterEvent("PARTY_MEMBERS_CHANGED")
PlayerFrame:UnregisterEvent("PARTY_LEADER_CHANGED")
PlayerFrame:UnregisterEvent("PARTY_LOOT_METHOD_CHANGED")
PlayerFrame:UnregisterEvent("PLAYER_ENTERING_WORLD")
PlayerFrame:UnregisterEvent("PLAYER_REGEN_DISABLED")
PlayerFrame:UnregisterEvent("PLAYER_REGEN_ENABLED")
PlayerFrameHealthBar:UnregisterEvent("UNIT_HEALTH")
PlayerFrameHealthBar:UnregisterEvent("UNIT_MAXHEALTH")
PlayerFrameManaBar:UnregisterEvent("UNIT_MANA")
PlayerFrameManaBar:UnregisterEvent("UNIT_RAGE")
PlayerFrameManaBar:UnregisterEvent("UNIT_FOCUS")
PlayerFrameManaBar:UnregisterEvent("UNIT_ENERGY")
PlayerFrameManaBar:UnregisterEvent("UNIT_HAPPINESS")
PlayerFrameManaBar:UnregisterEvent("UNIT_MAXMANA")
PlayerFrameManaBar:UnregisterEvent("UNIT_MAXRAGE")
PlayerFrameManaBar:UnregisterEvent("UNIT_MAXFOCUS")
PlayerFrameManaBar:UnregisterEvent("UNIT_MAXENERGY")
PlayerFrameManaBar:UnregisterEvent("UNIT_MAXHAPPINESS")
PlayerFrameManaBar:UnregisterEvent("UNIT_DISPLAYPOWER")
PlayerFrame:UnregisterEvent("UNIT_NAME_UPDATE")
PlayerFrame:UnregisterEvent("UNIT_PORTRAIT_UPDATE")
PlayerFrame:UnregisterEvent("UNIT_DISPLAYPOWER")
PlayerFrame:Hide()
end
function aUF:ShowBlizzPlayer()
PlayerFrame:RegisterEvent("UNIT_LEVEL")
PlayerFrame:RegisterEvent("UNIT_COMBAT")
PlayerFrame:RegisterEvent("UNIT_SPELLMISS")
PlayerFrame:RegisterEvent("UNIT_PVP_UPDATE")
PlayerFrame:RegisterEvent("UNIT_MAXMANA")
PlayerFrame:RegisterEvent("PLAYER_ENTER_COMBAT")
PlayerFrame:RegisterEvent("PLAYER_LEAVE_COMBAT")
PlayerFrame:RegisterEvent("PLAYER_UPDATE_RESTING")
PlayerFrame:RegisterEvent("PARTY_MEMBERS_CHANGED")
PlayerFrame:RegisterEvent("PARTY_LEADER_CHANGED")
PlayerFrame:RegisterEvent("PARTY_LOOT_METHOD_CHANGED")
PlayerFrame:RegisterEvent("PLAYER_ENTERING_WORLD")
PlayerFrame:RegisterEvent("PLAYER_REGEN_DISABLED")
PlayerFrame:RegisterEvent("PLAYER_REGEN_ENABLED")
PlayerFrameHealthBar:RegisterEvent("UNIT_HEALTH")
PlayerFrameHealthBar:RegisterEvent("UNIT_MAXHEALTH")
PlayerFrameManaBar:RegisterEvent("UNIT_MANA")
PlayerFrameManaBar:RegisterEvent("UNIT_RAGE")
PlayerFrameManaBar:RegisterEvent("UNIT_FOCUS")
PlayerFrameManaBar:RegisterEvent("UNIT_ENERGY")
PlayerFrameManaBar:RegisterEvent("UNIT_HAPPINESS")
PlayerFrameManaBar:RegisterEvent("UNIT_MAXMANA")
PlayerFrameManaBar:RegisterEvent("UNIT_MAXRAGE")
PlayerFrameManaBar:RegisterEvent("UNIT_MAXFOCUS")
PlayerFrameManaBar:RegisterEvent("UNIT_MAXENERGY")
PlayerFrameManaBar:RegisterEvent("UNIT_MAXHAPPINESS")
PlayerFrameManaBar:RegisterEvent("UNIT_DISPLAYPOWER")
PlayerFrame:RegisterEvent("UNIT_NAME_UPDATE")
PlayerFrame:RegisterEvent("UNIT_PORTRAIT_UPDATE")
PlayerFrame:RegisterEvent("UNIT_DISPLAYPOWER")
PlayerFrame:Show()
end
function aUF:HideBlizzParty()
self:Hook("RaidOptionsFrame_UpdatePartyFrames", function() end)
for i=1,4 do
local frame = getglobal("PartyMemberFrame"..i)
frame:UnregisterAllEvents()
frame:Hide()
end
end
function aUF:ShowBlizzParty()
self:Unhook("RaidOptionsFrame_UpdatePartyFrames")
for i=1,4 do
local frame = getglobal("PartyMemberFrame"..i)
frame:RegisterEvent("PARTY_MEMBERS_CHANGED")
frame:RegisterEvent("PARTY_LEADER_CHANGED")
frame:RegisterEvent("PARTY_MEMBER_ENABLE")
frame:RegisterEvent("PARTY_MEMBER_DISABLE")
frame:RegisterEvent("PARTY_LOOT_METHOD_CHANGED")
frame:RegisterEvent("UNIT_PVP_UPDATE")
frame:RegisterEvent("UNIT_AURA")
frame:RegisterEvent("UNIT_PET")
frame:RegisterEvent("VARIABLES_LOADED")
frame:RegisterEvent("UNIT_NAME_UPDATE")
frame:RegisterEvent("UNIT_PORTRAIT_UPDATE")
frame:RegisterEvent("UNIT_DISPLAYPOWER")
UnitFrame_OnEvent("PARTY_MEMBERS_CHANGED")
PartyMemberFrame_UpdateMember()
end
end
function aUF:HideBlizzTarget()
TargetFrame:UnregisterEvent("PLAYER_TARGET_CHANGED")
TargetFrame:UnregisterEvent("UNIT_HEALTH")
TargetFrame:UnregisterEvent("UNIT_LEVEL")
TargetFrame:UnregisterEvent("UNIT_FACTION")
TargetFrame:UnregisterEvent("UNIT_CLASSIFICATION_CHANGED")
TargetFrame:UnregisterEvent("UNIT_AURA")
TargetFrame:UnregisterEvent("PLAYER_FLAGS_CHANGED")
TargetFrame:UnregisterEvent("PARTY_MEMBERS_CHANGED")
TargetFrame:Hide()
ComboFrame:UnregisterEvent("PLAYER_TARGET_CHANGED")
ComboFrame:UnregisterEvent("PLAYER_COMBO_POINTS")
end
function aUF:ShowBlizzTarget()
TargetFrame:RegisterEvent("PLAYER_TARGET_CHANGED")
TargetFrame:RegisterEvent("UNIT_HEALTH")
TargetFrame:RegisterEvent("UNIT_LEVEL")
TargetFrame:RegisterEvent("UNIT_FACTION")
TargetFrame:RegisterEvent("UNIT_CLASSIFICATION_CHANGED")
TargetFrame:RegisterEvent("UNIT_AURA")
TargetFrame:RegisterEvent("PLAYER_FLAGS_CHANGED")
TargetFrame:RegisterEvent("PARTY_MEMBERS_CHANGED")
TargetFrame:Show()
ComboFrame:RegisterEvent("PLAYER_TARGET_CHANGED")
ComboFrame:RegisterEvent("PLAYER_COMBO_POINTS")
end
function aUF:tonum(val, base)
return tonumber((val or 0), base) or 0
end
function aUF:round(num)
return floor(aUF:tonum(num)+.5)
end