WoWInterface SVN oUF_Smee2

[/] [trunk/] [oUF_Smee2/] [core.lua] - Blame information for rev 9

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 jadakren-72706
local _G = getfenv(0)
2 jadakren-72706
local _,playerClass = UnitClass("player")
3 jadakren-72706
local tinsert = table.insert
4 jadakren-72706
local layoutName = "oUF_Smee2"
5 jadakren-72706
_G[layoutName] = LibStub("AceAddon-3.0"):NewAddon(layoutName,"AceConsole-3.0")
6 jadakren-72706
local addon = _G[layoutName];
7 6 jadakren-72706
        addon.LSM = LibStub("LibSharedMedia-3.0")
8 jadakren-72706
        addon.build = {}
9 jadakren-72706
        addon.build.version, addon.build.build, addon.build.date, addon.build.tocversion = GetBuildInfo()
10 4 jadakren-72706
 
11 6 jadakren-72706
 
12 4 jadakren-72706
---------------
13 6 jadakren-72706
--      LDB      --
14 4 jadakren-72706
---------------
15 jadakren-72706
local LDB = LibStub:GetLibrary("LibDataBroker-1.1"):NewDataObject(layoutName, {
16 jadakren-72706
        label = "|cFF006699oUF|r_|cFFFF3300Smee|r",
17 jadakren-72706
        type = "launcher",
18 jadakren-72706
        icon = "Interface\\Icons\\Spell_Nature_StormReach",
19 jadakren-72706
})
20 jadakren-72706
 
21 jadakren-72706
 
22 jadakren-72706
function LDB.OnClick(self, button)
23 jadakren-72706
        if button == "RightButton" then
24 jadakren-72706
                addon:OpenConfig()
25 jadakren-72706
        else
26 jadakren-72706
                if addon.db.profile.enabled then
27 jadakren-72706
                        if IsAltKeyDown() then
28 jadakren-72706
                                if IsControlKeyDown() then
29 jadakren-72706
                                        addon:ToggleDebug()
30 jadakren-72706
                                end
31 jadakren-72706
                        elseif IsShiftKeyDown()  then
32 jadakren-72706
--                              addon:DoSomething()
33 jadakren-72706
                        end
34 jadakren-72706
                else
35 jadakren-72706
                        --addon:ToggleActive(true)
36 jadakren-72706
                end
37 jadakren-72706
        end
38 jadakren-72706
end
39 jadakren-72706
 
40 jadakren-72706
function addon:ToggleDebug()
41 jadakren-72706
        self.enabledDebugMessages=not self.enabledDebugMessages
42 jadakren-72706
        self:Print("Debug messages : "..(self.enabledDebugMessages and "ON" or "OFF"))
43 jadakren-72706
end
44 jadakren-72706
 
45 jadakren-72706
function LDB.OnTooltipShow(tt)
46 jadakren-72706
        tt:AddLine(layoutName)
47 jadakren-72706
        tt:AddLine("Debugging "..(addon.enabledDebugMessages and "en" or "dis").."abled.")
48 jadakren-72706
        tt:AddLine("--")
49 jadakren-72706
        tt:AddLine("Ctrl + Alt + Left Click : Toggle Debug Messages")
50 jadakren-72706
        tt:AddLine("Right Click : Open Config")
51 jadakren-72706
end
52 jadakren-72706
 
53 jadakren-72706
local function dummy(arg) end
54 jadakren-72706
local function GetClassColor(unit)
55 jadakren-72706
        local _,unitClass = UnitClass(unit)
56 jadakren-72706
        return unpack(addon.db.profile.colors.class[unitClass])
57 jadakren-72706
end
58 jadakren-72706
local function menu(self)
59 jadakren-72706
        local unit,cunit = self.unit:sub(1, -2), self.unit:gsub("(.)", string.upper, 1)
60 jadakren-72706
        if(unit == "party" or unit == "partypet") then
61 jadakren-72706
                ToggleDropDownMenu(1, nil, _G["PartyMemberFrame"..self.id.."DropDown"], "cursor", 0, 0)
62 jadakren-72706
        elseif(_G[cunit.."FrameDropDown"]) then
63 jadakren-72706
                ToggleDropDownMenu(1, nil, _G[cunit.."FrameDropDown"], "cursor", 0, 0)
64 jadakren-72706
        end
65 jadakren-72706
end
66 jadakren-72706
 
67 jadakren-72706
----------------------
68 jadakren-72706
-- helper functions --
69 jadakren-72706
----------------------
70 jadakren-72706
local function round(num, idp)
71 jadakren-72706
  if idp and idp>0 then  return math.floor(num * mult + 0.5) / (10^idp)  end
72 jadakren-72706
  return math.floor(num + 0.5)
73 jadakren-72706
end
74 jadakren-72706
local function numberize(val)
75 jadakren-72706
        if(val >= 1e3) then return ("%.1fk"):format(val / 1e3)
76 jadakren-72706
        elseif (val >= 1e6) then return ("%.1fm"):format(val / 1e6)
77 jadakren-72706
        else return val
78 jadakren-72706
        end
79 jadakren-72706
end
80 jadakren-72706
function Hex(r, g, b)
81 jadakren-72706
        if type(r) == "table" then
82 jadakren-72706
                if r.r then r, g, b = r.r, r.g, r.b else r, g, b = unpack(r) end
83 jadakren-72706
        end
84 jadakren-72706
        return string.format("|cff%02x%02x%02x", r*255, g*255, b*255)
85 jadakren-72706
end
86 jadakren-72706
local function GetDifficultyColor(level)
87 jadakren-72706
        if level == '??' then return  .69,.31,.31
88 jadakren-72706
        else
89 jadakren-72706
        local levelDiff = UnitLevel('target') - UnitLevel('player')
90 jadakren-72706
                if levelDiff >= 5 then
91 jadakren-72706
                        return .69,.31,.31
92 jadakren-72706
                elseif levelDiff >= 3 then
93 jadakren-72706
                        return .71,.43,.27
94 jadakren-72706
                elseif levelDiff >= -2 then
95 jadakren-72706
                        return .84,.75,.65
96 jadakren-72706
                elseif -levelDiff <= GetQuestGreenRange() then
97 jadakren-72706
                        return .33,.59,.33
98 jadakren-72706
                else
99 jadakren-72706
                        return  .55,.57,.61
100 jadakren-72706
                end
101 jadakren-72706
        end
102 jadakren-72706
end
103 jadakren-72706
local function GetFormattedTime(s)
104 jadakren-72706
        local auraDb = addon.db.profile.auras.timers
105 jadakren-72706
        local DAY,HOUR,MINUTE,SHORT = auraDb.values.DAY,auraDb.values.HOUR,auraDb.values.MINUTE,auraDb.values.SHORT
106 jadakren-72706
        if s >= DAY then
107 jadakren-72706
                return format('%dd', floor(s/DAY + 0.5)), s % DAY
108 jadakren-72706
        elseif s >= HOUR then
109 jadakren-72706
                return format('%dh', floor(s/HOUR + 0.5)), s % HOUR
110 jadakren-72706
        elseif s >= MINUTE then
111 jadakren-72706
                if s <= MINUTE*3 and auraDb.UsingMMSS then
112 jadakren-72706
                        return format('%d:%02d', floor(s/60), s % MINUTE), s - floor(s)
113 jadakren-72706
                end
114 jadakren-72706
                return format('%dm', floor(s/MINUTE + 0.5)), s % MINUTE
115 jadakren-72706
        elseif s > 2 then
116 jadakren-72706
                return floor(s + 0.5), s - floor(s)
117 jadakren-72706
        end
118 jadakren-72706
        return format("%0.1f", s), 0.1
119 jadakren-72706
end
120 jadakren-72706
local function GetFormattedFont(s)
121 jadakren-72706
        local auraDb = addon.db.profile.auras.timers
122 jadakren-72706
        local DAY,HOUR,MINUTE,SHORT = auraDb.values.DAY,auraDb.values.HOUR,auraDb.values.MINUTE,auraDb.values.SHORT
123 jadakren-72706
        if s > DAY then
124 jadakren-72706
                style = auraDb.cooldownTimerStyle.days
125 jadakren-72706
        elseif s > HOUR then
126 jadakren-72706
                style = auraDb.cooldownTimerStyle.hrs
127 jadakren-72706
        elseif s > MINUTE then
128 jadakren-72706
                style = auraDb.cooldownTimerStyle.mins
129 jadakren-72706
        elseif s > SHORT then
130 jadakren-72706
                style = auraDb.cooldownTimerStyle.secs
131 jadakren-72706
        else
132 jadakren-72706
                style = auraDb.cooldownTimerStyle.short
133 jadakren-72706
        end
134 jadakren-72706
        return style.s, style.r, style.g, style.b
135 jadakren-72706
end
136 jadakren-72706
 
137 jadakren-72706
------------------
138 jadakren-72706
-- UPDATE HOOKS --
139 jadakren-72706
------------------
140 jadakren-72706
local function updateBanzai(self, unit, aggro)
141 jadakren-72706
        if self.unit ~= unit then return end
142 jadakren-72706
        if aggro == 1 then self.BanzaiIndicator:Show()
143 jadakren-72706
        else self.BanzaiIndicator:Hide() end
144 jadakren-72706
end
145 jadakren-72706
 
146 jadakren-72706
local function UpdateThreat(self, event, unit)
147 jadakren-72706
        if((not unit) or (not event)) or (UnitIsGhost(unit) or UnitIsDead(unit) or (not UnitIsConnected(unit))) then return end
148 jadakren-72706
        if unit == "player" or unit:gmatch("raid")() or unit:gmatch("party")() or unit:gmatch("pet")() or unit:gmatch("focus")() or unit:gmatch("target")() then
149 jadakren-72706
           unitTarget = unit.."target"
150 jadakren-72706
        else
151 jadakren-72706
           unitTarget = unit.."-target"
152 jadakren-72706
    end
153 jadakren-72706
        local unitTarget = (unit =='player' and "target" or unit.."target")
154 jadakren-72706
 
155 jadakren-72706
        local isTanking, status, threatpct, rawthreatpct, threatvalue = UnitDetailedThreatSituation(unit, unitTarget);
156 jadakren-72706
        if not(rawthreatpct == nil) then
157 jadakren-72706
                self.Threat:SetText( Hex(GetThreatStatusColor(status)) .. string.format("%.0f", rawthreatpct ) .. "|r" )
158 jadakren-72706
        else
159 jadakren-72706
                self.Threat:SetText('')
160 jadakren-72706
        end
161 jadakren-72706
end
162 jadakren-72706
 
163 jadakren-72706
local function PostUpdateHealth(self, event, unit, bar, min, max)
164 jadakren-72706
  bar:SetStatusBarColor(0.25, 0.25, 0.25)      -- Default statusbar color
165 jadakren-72706
  if (UnitIsTapped(unit) and not UnitIsTappedByPlayer(unit) or not UnitIsConnected(unit)) then
166 jadakren-72706
    color = self.colors.tapped
167 jadakren-72706
  else
168 jadakren-72706
    bar:SetStatusBarColor(.25,.25,.35)      -- Default statusbar color
169 jadakren-72706
  end
170 jadakren-72706
end
171 jadakren-72706
 
172 jadakren-72706
local function PostUpdatePower(self, event, unit, bar, min, max)
173 jadakren-72706
        if (UnitIsGhost(unit) or UnitIsDead(unit) or not UnitIsConnected(unit)) then
174 jadakren-72706
                bar:SetValue(0)
175 jadakren-72706
        end
176 jadakren-72706
end
177 jadakren-72706
 
178 jadakren-72706
--[[----------------------------------------
179 jadakren-72706
        AURA UPDATE HOOKS
180 jadakren-72706
----------------------------------------]]--
181 jadakren-72706
 
182 jadakren-72706
local function SetAuraPosition(self, icons, x)
183 jadakren-72706
        addon:Debug("Repositioning auras.")
184 jadakren-72706
        if(icons and x > 0) then
185 jadakren-72706
                local col,row = 0,0
186 jadakren-72706
                local spacing = icons.spacing or 0
187 jadakren-72706
                local size = (icons.size or 16) + spacing
188 jadakren-72706
                local anchor = icons.initialAnchor or "BOTTOMLEFT"
189 jadakren-72706
                local growthx = (icons["growth-x"] == "LEFT" and -1) or 1
190 jadakren-72706
                local growthy = (icons["growth-y"] == "DOWN" and -1) or 1
191 jadakren-72706
                local cols = icons.Colomns
192 jadakren-72706
--              local rows = icons.Rows  -- Right now only horizontally conditioned aura frames are supported
193 jadakren-72706
 
194 jadakren-72706
                for i = 1, x do
195 jadakren-72706
                        local button = icons[i]
196 jadakren-72706
                        if(button and button:IsShown()) then
197 jadakren-72706
                                if(icons.gap and button.debuff) then
198 jadakren-72706
                                        if(col > 0) then col = col + 1 end
199 jadakren-72706
                                        icons.gap = false
200 jadakren-72706
                                end
201 jadakren-72706
                                if(col >= cols) then col,row = 0, row + 1 end
202 jadakren-72706
                                local anchorFrom,anchorObj,anchorTo
203 jadakren-72706
                                local vert = icons["growth-y"] == 'UP' and 'BOTTOM' or 'TOP'
204 jadakren-72706
                                if growthx < 0 then -- <<<<
205 jadakren-72706
                                        anchorFrom,anchorObj,anchorTo,anchorX,anchorY = vert.."RIGHT",icons[i-1],vert.."LEFT",-spacing, 0
206 jadakren-72706
                                        if i == 1 or col == 0 then anchorObj,anchorTo,anchorY =  icons,vert.."RIGHT", (row * size * growthy) end
207 jadakren-72706
                                else -- >>>>
208 jadakren-72706
                                        anchorFrom,anchorObj,anchorTo,anchorX,anchorY = vert.."LEFT",icons[i-1],vert.."RIGHT",spacing,0
209 jadakren-72706
                                        if i == 1 or col == 0 then anchorObj,anchorTo,anchorY = icons,vert.."LEFT", (row * size * growthy) end
210 jadakren-72706
                                end
211 jadakren-72706
                                addon:Debug("placing aura[".. i.."]"..anchorFrom..":"..tostring(anchorObj)..":"..anchorTo..":"..anchorX..":"..anchorY..".")
212 jadakren-72706
                                button:SetWidth(icons.size)
213 jadakren-72706
                                button:SetHeight(icons.size)
214 jadakren-72706
                                button:ClearAllPoints()
215 jadakren-72706
                                button:SetPoint(anchorFrom, anchorObj, anchorTo, anchorX, anchorY)
216 jadakren-72706
                                col = col + 1
217 jadakren-72706
                        end
218 jadakren-72706
                end
219 jadakren-72706
        end
220 jadakren-72706
end
221 jadakren-72706
 
222 jadakren-72706
local function PreUpdateAura(event, unit)
223 jadakren-72706
end
224 jadakren-72706
 
225 jadakren-72706
local function PostUpdateAuraIcon(self,icons, unit, icon, index, offset, filter, isDebuff)
226 jadakren-72706
--      print(self.unit,icons, unit, icon, index, offset, filter, isDebuff)
227 jadakren-72706
--      if(index > icons.num)then icons[index]:Hide() end
228 jadakren-72706
end
229 jadakren-72706
 
230 jadakren-72706
local function updateAuraIcon(self,event)
231 jadakren-72706
        local db = addon.db.profile
232 jadakren-72706
        local name,size,outline = (addon.LSM:Fetch('font',db.auras.font.name) or self.db.profile.fonts.default), db.auras.font.size, db.auras.font.outline
233 jadakren-72706
        self.count:SetFont(name,size,outline)
234 jadakren-72706
        if(self.duration~=nil and self.timeLeft~=nil) then
235 jadakren-72706
                if(db.auras.timers.enabled)then
236 jadakren-72706
                        self.remaining:Show()
237 jadakren-72706
                        self.overlay:Show()
238 jadakren-72706
                        if(self.duration > 0 or self.timeLeft > 0) then
239 jadakren-72706
                                self.overlay:SetParent(self.cd)
240 jadakren-72706
                                local timeLeft = self.timeLeft - GetTime()
241 jadakren-72706
                                local multiplier, r, g, b = GetFormattedFont(timeLeft)
242 jadakren-72706
                                self.overlay:SetVertexColor(r,g,b,1)
243 jadakren-72706
                                self.remaining:SetText(GetFormattedTime(timeLeft))
244 jadakren-72706
                                self.remaining:SetFont(name,(db.auras.timers.useEnlargedFonts and size * multiplier or size),outline)
245 jadakren-72706
                                self.remaining:SetTextColor(r,g,b)
246 jadakren-72706
                        end
247 jadakren-72706
                else
248 jadakren-72706
                        self.remaining:Hide()
249 jadakren-72706
                        self.overlay:Hide()
250 jadakren-72706
                end
251 jadakren-72706
        end
252 jadakren-72706
        if(addon.build.tocversion >= 30100)then
253 jadakren-72706
                self:SetScale((self.owner == 'player' ) and self:GetParent().playerSize  or 1)
254 jadakren-72706
                local frameUnit = self.parent:GetParent().unit
255 jadakren-72706
                if frameUnit and self.owner then
256 jadakren-72706
                        local frameOwner, buffOwner = UnitGUID(frameUnit),UnitGUID(self.owner)
257 jadakren-72706
                        if frameUnit ~='player' and buffOwner == frameOwner then self.ownership:Show() else self.ownership:Hide() end
258 jadakren-72706
                end
259 jadakren-72706
        else
260 jadakren-72706
                self:SetScale(self.isPlayer and self:GetParent().playerSize  or 1)
261 jadakren-72706
        end
262 jadakren-72706
end
263 jadakren-72706
 
264 jadakren-72706
local function PostCreateAuraIcon(self, button, icons, index, debuff)
265 jadakren-72706
        local db = addon.db.profile
266 jadakren-72706
        local fontPath = addon.LSM:Fetch('font',db.auras.font.name) or self.db.profile.fonts.default
267 jadakren-72706
 
268 jadakren-72706
        button.cd:SetReverse()
269 jadakren-72706
        button.overlay:SetTexture(self.textures.border)
270 jadakren-72706
        button.overlay:SetTexCoord(0, 1, 0, 1)
271 jadakren-72706
        button.overlay.Hide = function(self) self:SetVertexColor(0.25, 0.25, 0.25) end
272 jadakren-72706
 
273 jadakren-72706
        local ownership = button:CreateTexture(nil, "OVERLAY")
274 jadakren-72706
                        ownership:SetTexture(self.textures.border)
275 jadakren-72706
                        ownership:SetPoint("TOPLEFT", button,"TOPLEFT", -2,2)
276 jadakren-72706
                        ownership:SetPoint("BOTTOMRIGHT", button,"BOTTOMRIGHT",2,-2)
277 jadakren-72706
                        ownership:SetTexCoord(0, 1, 0, 1)
278 jadakren-72706
                        ownership:Hide()
279 jadakren-72706
        button.ownership = ownership
280 jadakren-72706
 
281 jadakren-72706
        button.count:SetParent(button.cd)
282 jadakren-72706
        button.count:SetFont(fontPath, db.frames.font.size, db.frames.font.outline)
283 jadakren-72706
        button.count:SetPoint("CENTER",button,"BOTTOM",0,-2)
284 jadakren-72706
 
285 jadakren-72706
        if (not debuff and self.unit =="player") then
286 jadakren-72706
                button:SetScript('OnMouseUp', function(self, mouseButton)
287 jadakren-72706
                        if mouseButton == 'RightButton' then
288 jadakren-72706
                                CancelUnitBuff('player', index)
289 jadakren-72706
                        end
290 jadakren-72706
                end)
291 jadakren-72706
        end
292 jadakren-72706
 
293 jadakren-72706
        local remaining = button.cd:CreateFontString(nil, "OVERLAY")
294 jadakren-72706
                remaining:SetFont(fontPath, db.auras.font.size, db.auras.font.outline)
295 jadakren-72706
                remaining:SetPoint("CENTER", button, 4, 4)
296 jadakren-72706
                remaining:SetJustifyH("CENTER")
297 jadakren-72706
        button.remaining = remaining
298 jadakren-72706
        button:SetScript('OnUpdate', updateAuraIcon)
299 jadakren-72706
end
300 jadakren-72706
 
301 jadakren-72706
------------
302 jadakren-72706
-- makers --
303 jadakren-72706
------------
304 jadakren-72706
function addon:makeAuraFrame(obj,auraTypes)
305 jadakren-72706
        for _,auraType in pairs(auraTypes)do
306 jadakren-72706
                local db =  obj.db[auraType]
307 jadakren-72706
                local auraFrame = CreateFrame("Frame", nil, obj)
308 jadakren-72706
                        auraFrame.size = db.size * 1.1
309 jadakren-72706
                        auraFrame.playerSize = db.playerSize
310 jadakren-72706
                        auraFrame:SetHeight(auraFrame.size)
311 jadakren-72706
                        auraFrame:SetWidth(auraFrame.size * db.Colomns)
312 jadakren-72706
                        auraFrame:SetPoint(db.anchorFromPoint,obj.elements[db.anchorTo],db.anchorToPoint,db.anchorX,db.anchorY)
313 jadakren-72706
                        auraFrame.spacing=db.spacing
314 jadakren-72706
                        auraFrame.num = db.count
315 jadakren-72706
                        auraFrame.Colomns = db.Colomns
316 jadakren-72706
                        auraFrame.rows = db.rows
317 jadakren-72706
                        auraFrame["growth-x"] = db["growth-x"]
318 jadakren-72706
                        auraFrame["growth-y"] = db["growth-y"]
319 jadakren-72706
                        auraFrame.filter = db.filter
320 jadakren-72706
                        auraFrame.onlyShowPlayer = db.onlyShowPlayer or nil
321 jadakren-72706
                        db.setup = false;
322 jadakren-72706
                obj[auraType] = auraFrame;
323 jadakren-72706
        end
324 jadakren-72706
end
325 jadakren-72706
 
326 jadakren-72706
 
327 jadakren-72706
function makeComboPoints(self,anchorFrom,anchorTo,aX,aY)
328 jadakren-72706
        local db = addon.db.profile.frames.font
329 jadakren-72706
        local fontPath = addon.LSM:Fetch('font',db.name) or self.db.profile.fonts.default
330 jadakren-72706
 
331 jadakren-72706
        local cpoints = self:CreateFontString(nil, "OVERLAY")
332 jadakren-72706
                          cpoints:SetPoint(anchorFrom, self, anchorTo, aX,aY)
333 jadakren-72706
                          cpoints:SetFont(fontPath, db.size, db.outline)
334 jadakren-72706
                          cpoints:SetTextColor(1,1,1)
335 jadakren-72706
                          cpoints:SetJustifyH("CENTER")
336 jadakren-72706
        self.CPoints = cpoints
337 jadakren-72706
        self.FontObjects["ComboPoints"] =  {
338 jadakren-72706
                        name = "Combo Points",
339 jadakren-72706
                        object = self.CPoints
340 jadakren-72706
                }
341 jadakren-72706
end
342 jadakren-72706
 
343 jadakren-72706
function makeCombatFeedbackText(self)
344 jadakren-72706
        if not IsAddOnLoaded("oUF_CombatFeedback") then return end
345 jadakren-72706
        local db = addon.db.profile.fonts
346 jadakren-72706
        local healthBar = self.bars.Health
347 jadakren-72706
        self.CombatFeedbackText = healthBar:CreateFontString(nil, "OVERLAY")
348 jadakren-72706
        self.CombatFeedbackText:SetPoint("CENTER", healthBar, "CENTER", 0, 0)
349 jadakren-72706
        self.CombatFeedbackText:SetFont(db['default'].name, db['default'].size, db['default'].outline)
350 jadakren-72706
        self.CombatFeedbackText.maxAlpha = .8
351 jadakren-72706
 
352 jadakren-72706
        self.FontObjects["CombatFeedbackText"] ={
353 jadakren-72706
                name = "Combat Feedback Text",
354 jadakren-72706
                object =  self.CombatFeedbackText
355 jadakren-72706
        }
356 jadakren-72706
end
357 jadakren-72706
 
358 jadakren-72706
 
359 jadakren-72706
function makeCastBar(self)
360 jadakren-72706
        local db = addon.db.profile
361 jadakren-72706
        local bar = CreateFrame("StatusBar", nil, self)
362 jadakren-72706
        bar:SetBackdrop(self.db.bars.Castbar.Backdrop)
363 jadakren-72706
        bar:SetBackdropColor(unpack(self.db.bars.Castbar.BackdropColor))
364 jadakren-72706
        bar:SetStatusBarTexture(self.textures.statusbar)
365 jadakren-72706
        bar:SetStatusBarColor(unpack(self.db.bars.Castbar.StatusBarColor))
366 jadakren-72706
        bar.reverse = self.db.bars.Castbar.reverse
367 jadakren-72706
 
368 jadakren-72706
        bar.bg = bar:CreateTexture(nil, "BORDER")
369 jadakren-72706
        bar.bg:SetAllPoints(bar)
370 jadakren-72706
        bar.bg:SetTexture(unpack(self.db.bars.Castbar.bgColor))
371 jadakren-72706
        self.elements["Castbar"] = bar
372 jadakren-72706
        bar.elements={
373 jadakren-72706
                ['parent'] = self,
374 jadakren-72706
                ['self'] = bar,
375 jadakren-72706
                ['Castbar'] = bar,
376 jadakren-72706
        }
377 jadakren-72706
 
378 jadakren-72706
        self.db.bars.Castbar.Text.anchorTo = "Castbar"
379 jadakren-72706
        bar.Text = addon:makeFontObject(bar,"Cast Name",self.db.bars.Castbar.Text)
380 jadakren-72706
        self.FontObjects['CastName']= {
381 jadakren-72706
                name = "Cast Name",
382 jadakren-72706
                object = bar.Text
383 jadakren-72706
        }
384 jadakren-72706
        self.db.bars.Castbar.Time.anchorTo = "Castbar"
385 jadakren-72706
        bar.Time = addon:makeFontObject(bar,"Cast Time",self.db.bars.Castbar.Time)
386 jadakren-72706
        self.FontObjects["CastTime"] = {
387 jadakren-72706
                name = "Cast Time",
388 jadakren-72706
                object = bar.Time
389 jadakren-72706
        }
390 jadakren-72706
 
391 jadakren-72706
        bar.CustomTimeText = function(self, duration)
392 jadakren-72706
                if self.casting then
393 jadakren-72706
                        self.Time:SetFormattedText("%.1f", self.max - duration)
394 jadakren-72706
                elseif self.channeling then
395 jadakren-72706
                        self.Time:SetFormattedText("%.1f", duration)
396 jadakren-72706
                end
397 jadakren-72706
        end
398 jadakren-72706
 
399 jadakren-72706
        if self.unit == "player" and self.db.bars.Castbar.SafeZone.enabled == true then
400 jadakren-72706
                bar.SafeZone = bar:CreateTexture(nil,"ARTWORK")
401 jadakren-72706
                bar.SafeZone:SetTexture(self.textures.statusbar)
402 jadakren-72706
                bar.SafeZone:SetVertexColor(unpack(self.db.bars.Castbar.SafeZone.colour))
403 jadakren-72706
                bar.SafeZone:SetPoint("TOPRIGHT")
404 jadakren-72706
                bar.SafeZone:SetPoint("BOTTOMRIGHT")
405 jadakren-72706
                bar.accurate=true
406 jadakren-72706
        end
407 jadakren-72706
 
408 jadakren-72706
        bar:ClearAllPoints()
409 jadakren-72706
        bar:SetPoint(self.db.bars.Castbar.anchorFromPoint,self,self.db.bars.Castbar.anchorToPoint,self.db.bars.Castbar.anchorX,self.db.bars.Castbar.anchorY)
410 jadakren-72706
 
411 jadakren-72706
        bar:SetHeight(self.db.bars.Castbar.height)
412 jadakren-72706
        bar:SetWidth(self.db.bars.Castbar.width)
413 jadakren-72706
 
414 jadakren-72706
        self.bars.Castbar = bar;
415 jadakren-72706
        self.Castbar = bar;
416 jadakren-72706
end
417 jadakren-72706
 
418 jadakren-72706
function RunePostUpdate(self,settings)
419 jadakren-72706
        local runeBar = self:GetParent();
420 jadakren-72706
        self:SetWidth(runeBar:GetWidth() / 100 *  settings.width)
421 jadakren-72706
        self:SetHeight(runeBar:GetHeight() / 100 *  settings.height)
422 jadakren-72706
end
423 jadakren-72706
 
424 jadakren-72706
function addon:makeRuneBar(frame)
425 jadakren-72706
        if frame.unitClass ~= "DEATHKNIGHT" then return end
426 jadakren-72706
        if not IsAddOnLoaded("oUF_SmeeRunes") then
427 jadakren-72706
                self:Error("oUF_SmeeRunes not loaded")
428 jadakren-72706
                return
429 jadakren-72706
        end
430 jadakren-72706
 
431 jadakren-72706
        local db = addon.db.profile
432 jadakren-72706
        local settings = frame.db.bars.RuneBar
433 jadakren-72706
 
434 jadakren-72706
        local rune, runeBarHeight,runeBarWidth=_,(frame.db.height/100) * settings.height, (frame.db.width/100) * settings.width
435 jadakren-72706
        local runebar = CreateFrame('Frame', nil, frame)
436 jadakren-72706
 
437 jadakren-72706
        runebar:SetParent(frame)
438 jadakren-72706
        runebar:SetBackdrop(frame.textures.background)
439 jadakren-72706
        runebar:SetBackdropColor(unpack(db.colors.backdropColors))
440 jadakren-72706
        runebar:SetHeight(runeBarHeight)
441 jadakren-72706
        runebar:SetWidth(runeBarWidth)
442 jadakren-72706
        runebar:SetPoint(settings.anchorFromPoint,frame,settings.anchorToPoint,settings.anchorX,settings.anchorY)
443 jadakren-72706
        runebar.bars = {}
444 jadakren-72706
        runebar.runeMapping = {
445 jadakren-72706
                [1] = "BLOOD",
446 jadakren-72706
                [2] = "UNHOLY",
447 jadakren-72706
                [3] = "FROST",
448 jadakren-72706
                [4] = "DEATH",
449 jadakren-72706
        }
450 jadakren-72706
        runebar:Show()
451 jadakren-72706
        runebar.colors=db.colors.runes
452 jadakren-72706
        runebar.OnSizeChange = function()
453 jadakren-72706
                for index,bar in pairs(runebar.bars) do
454 jadakren-72706
                        bar:RunePostUpdate(settings.runes[index])
455 jadakren-72706
                end
456 jadakren-72706
        end
457 jadakren-72706
 
458 jadakren-72706
        runebar.SetChildOrientation = function(value)
459 jadakren-72706
                for index,bar in pairs(runebar.bars) do
460 jadakren-72706
                        bar:SetOrientation(value)
461 jadakren-72706
                end
462 jadakren-72706
        end
463 jadakren-72706
 
464 jadakren-72706
        for i = 1, 6 do
465 jadakren-72706
                rune = CreateFrame('StatusBar', nil, runebar)
466 jadakren-72706
                local runeSetting = settings.runes[i]
467 jadakren-72706
                local anchor = runebar.bars[runeSetting.anchorTo] or runebar
468 jadakren-72706
                rune:SetPoint(runeSetting.anchorFromPoint, anchor, runeSetting.anchorToPoint,runeSetting.x,runeSetting.y)
469 jadakren-72706
                rune.index=i
470 jadakren-72706
                rune:SetStatusBarTexture(frame.textures.statusbar)
471 jadakren-72706
                rune:SetStatusBarColor(unpack(db.colors.runes[GetRuneType(i)]))
472 jadakren-72706
                rune:SetOrientation(settings.orientation)
473 jadakren-72706
                rune:SetBackdrop(frame.textures.background)
474 jadakren-72706
                rune:SetBackdropColor(0, 0, 0,0.2)
475 jadakren-72706
                rune:SetMinMaxValues(0, 1)
476 jadakren-72706
                rune.RunePostUpdate = RunePostUpdate
477 jadakren-72706
                rune.bg = rune:CreateTexture(nil, 'BORDER')
478 jadakren-72706
                rune.bg:SetAllPoints(rune)
479 jadakren-72706
                rune.bg:SetTexture(0, 0, 0,0.3)
480 jadakren-72706
                runebar.bars[i] = rune
481 jadakren-72706
                rune:RunePostUpdate(runeSetting)
482 jadakren-72706
        end
483 jadakren-72706
        runebar.OnSizeChange()
484 jadakren-72706
        frame.bars.RuneBar = runebar
485 jadakren-72706
end
486 jadakren-72706
 
487 jadakren-72706
 
488 jadakren-72706
function UpdateTotemBar(self)
489 jadakren-72706
        local totembar = self.bars.TotemBar
490 jadakren-72706
        if self.unitClass ~= "SHAMAN" or not totembar then return end
491 jadakren-72706
 
492 jadakren-72706
        local settings = self.db.bars.TotemBar
493 jadakren-72706
        local db = addon.db.profile
494 jadakren-72706
        local fontDb = db.frames.font -- setting this to the global font option for now, till i work out a per-frame policy.
495 jadakren-72706
        local fontName, fontSize, fontOutline = ( addon.LSM:Fetch('font',fontDb.name) or addon.db.profile.fonts.default), fontDb.size, fontDb.outline
496 jadakren-72706
 
497 jadakren-72706
        totembar:ClearAllPoints()
498 jadakren-72706
        totembar:SetPoint(settings.anchorFromPoint, self.elements[settings.anchorTo], settings.anchorToPoint,settings.anchorX,settings.anchorY)
499 jadakren-72706
        totembar:SetParent(self)
500 jadakren-72706
        totembar:Show()
501 jadakren-72706
        totembar:SetBackdropColor(1,1,1,0)
502 jadakren-72706
 
503 jadakren-72706
        for index,totem in pairs(totembar.totems)do
504 jadakren-72706
                totem.duration:ClearAllPoints()
505 jadakren-72706
                totem.duration:SetFont(fontName, fontSize, fontOutline)
506 jadakren-72706
                totem.duration:SetPoint(settings.Timer.anchorFromPoint,totem.icon,settings.Timer.anchorToPoint,settings.Timer.anchorX,settings.Timer.anchorY)
507 jadakren-72706
                totem:SetScale(settings.scale)
508 jadakren-72706
        end
509 jadakren-72706
 
510 jadakren-72706
end
511 jadakren-72706
 
512 jadakren-72706
 
513 jadakren-72706
function addon:makeTotemBar(frame)
514 jadakren-72706
        if frame.unitClass ~= "SHAMAN" then return end
515 jadakren-72706
        self:Debug("<<CREATING TOTEM FRAME>>")
516 jadakren-72706
        local totembar = _G["TotemFrame"]
517 jadakren-72706
        totembar.totems={}
518 jadakren-72706
        for i=1,TotemFrame:GetNumChildren() do
519 jadakren-72706
                local totem = _G["TotemFrameTotem"..i]
520 jadakren-72706
                local bg = _G["TotemFrameTotem"..i.."Background"]
521 jadakren-72706
                local icon = _G["TotemFrameTotem"..i.."Icon"]
522 jadakren-72706
                local duration = _G["TotemFrameTotem"..i.."Duration"]
523 jadakren-72706
                local _,oldTotemOverlay = totem:GetChildren()
524 jadakren-72706
                bg:Hide()
525 jadakren-72706
                oldTotemOverlay:Hide()
526 jadakren-72706
 
527 jadakren-72706
                local totemOverlay = icon:CreateTexture(nil, "OVERLAY")
528 jadakren-72706
                          totemOverlay:SetTexture(frame.textures.border)
529 jadakren-72706
                          totemOverlay:SetAllPoints(icon)
530 jadakren-72706
                          totemOverlay:SetTexCoord(0, 1, 0, 1)
531 jadakren-72706
                          totemOverlay.Hide = function(self) self:SetVertexColor(0.25, 0.25, 0.25) end
532 jadakren-72706
 
533 jadakren-72706
                        duration:SetParent(totem)
534 jadakren-72706
 
535 jadakren-72706
                        totem.overlay = totemOverlay
536 jadakren-72706
                        totem.icon = icon
537 jadakren-72706
                        totem.bg = bg
538 jadakren-72706
                        totem.duration = duration
539 jadakren-72706
                totembar.totems[i] = totem
540 jadakren-72706
 
541 jadakren-72706
                frame.FontObjects["totem".. i .."Duration"] = {
542 jadakren-72706
                        name = "Totem ".. i .." Timer Duration",
543 jadakren-72706
                        object = totem.duration
544 jadakren-72706
                }
545 jadakren-72706
        end
546 jadakren-72706
        frame.bars.TotemBar = totembar
547 jadakren-72706
end
548 jadakren-72706
 
549 jadakren-72706
function RuneButton_OnEnter(self)
550 jadakren-72706
        if ( self.tooltipText ) then
551 jadakren-72706
                GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
552 jadakren-72706
                GameTooltip:SetText(self.tooltipText);
553 jadakren-72706
                GameTooltip:Show();
554 jadakren-72706
        end
555 jadakren-72706
end
556 jadakren-72706
 
557 jadakren-72706
function addon:StealBar(self,frame,settings)
558 jadakren-72706
        local db = addon.db.profile
559 jadakren-72706
        if frame:IsUserPlaced() then
560 jadakren-72706
                frame:SetUserPlaced(false)
561 jadakren-72706
        end
562 jadakren-72706
        frame:ClearAllPoints()
563 jadakren-72706
        frame:SetPoint(settings.anchorFromPoint, self.elements[settings.anchorTo], settings.anchorToPoint,settings.anchorX,settings.anchorY)
564 jadakren-72706
        frame:SetHeight(settings.height)
565 jadakren-72706
        frame:SetWidth(settings.width)
566 jadakren-72706
end
567 jadakren-72706
 
568 jadakren-72706
function UpDateFrameSize(self)
569 jadakren-72706
-- update bars dependant on frame size.
570 jadakren-72706
        for index,bar in pairs(self.db.bars)do
571 jadakren-72706
                if(bar.dependantOnFrameSize)then
572 jadakren-72706
                        self.bars[index]:SetHeight( ((self.db.height - 3) / 100 ) * self.db.bars[index].height )
573 jadakren-72706
                end
574 jadakren-72706
        end
575 jadakren-72706
        oUF_PowerSpark_ReapplySettings(self)
576 jadakren-72706
end
577 jadakren-72706
 
578 jadakren-72706
function addon:makeFontObject(frame,name,data)
579 jadakren-72706
        local db = addon.db.profile
580 jadakren-72706
        local parent = frame.elements and frame.elements[data.anchorTo] or frame
581 jadakren-72706
 
582 jadakren-72706
        -- make our font object, parenting it to the supplied anchor point.
583 jadakren-72706
        local fontObject = parent:CreateFontString(nil, "OVERLAY")
584 jadakren-72706
                          fontObject:SetJustifyH(data.justifyH)
585 jadakren-72706
                          fontObject:SetJustifyV(data.justifyV)
586 jadakren-72706
                          fontObject:SetPoint(data.anchorFromPoint, parent,data.anchorToPoint, data.anchorX, data.anchorY)
587 jadakren-72706
 
588 jadakren-72706
                          local fontDb = db.frames.font -- setting this to the global font option for now, till i work out a per-frame policy.
589 jadakren-72706
                          fontObject:SetFont((self.LSM:Fetch('font',fontDb.name) or self.db.profile.fonts.default), fontDb.size, fontDb.outline)
590 jadakren-72706
 
591 jadakren-72706
        -- if the parent frame is the unitframe and therefore has an UpdateTag function, use it.
592 jadakren-72706
        if(frame.Tag~=nil and data.tag~=nil)then
593 jadakren-72706
                fontObject.tag = data.tag
594 jadakren-72706
                frame:Tag(fontObject, data.tag)
595 jadakren-72706
        end
596 jadakren-72706
 
597 jadakren-72706
        -- store the fontobject in the parent frames fontobject table.
598 jadakren-72706
        if(frame.FontObjects)then
599 jadakren-72706
                frame.FontObjects[name] = {
600 jadakren-72706
                                name = data.desc,
601 jadakren-72706
                                object = fontObject
602 jadakren-72706
                }
603 jadakren-72706
        end
604 jadakren-72706
 
605 jadakren-72706
        return fontObject
606 jadakren-72706
end
607 jadakren-72706
 
608 jadakren-72706
--==========================--
609 jadakren-72706
--                                                      --
610 jadakren-72706
--              NORMAL STYLE            --
611 jadakren-72706
--                                                      --
612 jadakren-72706
--==========================--
613 jadakren-72706
 
614 jadakren-72706
local layout = function(self, unit)
615 jadakren-72706
        local db = addon.db.profile
616 jadakren-72706
        self.FontObjects = {}
617 jadakren-72706
        self.Indicators = {}
618 jadakren-72706
        self.db = db.frames.units[unit]
619 jadakren-72706
        self.colors = colors
620 jadakren-72706
        self.menu = menu
621 jadakren-72706
        _,self.unitClass = UnitClass(unit)
622 jadakren-72706
        self:RegisterForClicks("AnyUp")
623 jadakren-72706
        self:SetAttribute("*type2", "menu")
624 jadakren-72706
        self:SetScript("OnEnter", UnitFrame_OnEnter)
625 jadakren-72706
        self:SetScript("OnLeave", UnitFrame_OnLeave)
626 jadakren-72706
 
627 jadakren-72706
        self.BarFade =  self.db.barFading
628 jadakren-72706
        self.disallowVehicleSwap =  self.db.disallowVehicleSwap
629 jadakren-72706
 
630 jadakren-72706
        self.textures = {
631 jadakren-72706
                background = db.textures.backgrounds[self.db.textures.background],
632 9 jadakren-72706
                statusbar = addon.LSM:Fetch('statusbar',self.db.textures.statusbar),
633 4 jadakren-72706
                border = db.textures.borders[self.db.textures.border],
634 jadakren-72706
        }
635 jadakren-72706
        self:SetBackdrop(self.textures.background)
636 jadakren-72706
        self:SetBackdropColor(unpack(db.colors.backdropColors))
637 jadakren-72706
        self.elements={
638 jadakren-72706
                ["parent"] = self,
639 jadakren-72706
                ["UIParent"] = UIParent,
640 jadakren-72706
        }
641 jadakren-72706
--======--
642 jadakren-72706
--      BARS --
643 jadakren-72706
--======--
644 jadakren-72706
    self.bars = {}
645 jadakren-72706
        local health = CreateFrame("StatusBar", nil, self)
646 jadakren-72706
        health:SetPoint("TOPLEFT", self,"TOPLEFT", 1,-1)
647 jadakren-72706
        health:SetPoint("TOPRIGHT", self,"TOPRIGHT",-1,-1)
648 jadakren-72706
        health:SetStatusBarTexture(self.textures.statusbar)
649 jadakren-72706
        health:SetHeight(((self.db.height - 3) / 100 ) * self.db.bars.Health.height)
650 jadakren-72706
 
651 jadakren-72706
        health.colorTapping =  self.db.bars.Health.colorTapping
652 jadakren-72706
        health.colorDisconnected =  self.db.bars.Health.colorDisconnected
653 jadakren-72706
        health.colorClass =  self.db.bars.Health.colorClass
654 jadakren-72706
        health.colorReaction =  self.db.bars.Health.colorReaction
655 jadakren-72706
        health.reverse = self.db.bars.Health.reverse
656 jadakren-72706
 
657 jadakren-72706
        health.bg = health:CreateTexture(nil, "BORDER")
658 jadakren-72706
        health.bg:SetAllPoints(health)
659 jadakren-72706
        local hpbg = self.db.bars.Health.bgColor
660 jadakren-72706
        health.bg:SetTexture(hpbg[1],hpbg[2],hpbg[3],hpbg[4])
661 jadakren-72706
        self.elements["Health"] = health
662 jadakren-72706
        self.bars.Health = health
663 jadakren-72706
        self.hcbParent = health
664 jadakren-72706
        self.Health = health
665 jadakren-72706
 
666 jadakren-72706
        local power = CreateFrame("StatusBar", nil, self)
667 jadakren-72706
        power:SetPoint("TOPRIGHT", health, "BOTTOMRIGHT", 0, -1)
668 jadakren-72706
        power:SetPoint("TOPLEFT", health, "BOTTOMLEFT", 0, -1)
669 jadakren-72706
        power:SetStatusBarTexture(self.textures.statusbar)
670 jadakren-72706
        power:SetHeight( ((self.db.height - 3) / 100 ) * self.db.bars.Power.height)
671 jadakren-72706
 
672 jadakren-72706
        power.colorTapping =  self.db.bars.Power.colorTapping
673 jadakren-72706
        power.colorDisconnected =  self.db.bars.Power.colorDisconnected
674 jadakren-72706
        power.colorClass =  self.db.bars.Power.colorClass
675 jadakren-72706
        power.colorReaction =  self.db.bars.Power.colorReaction
676 jadakren-72706
        power.reverse = self.db.bars.Power.reverse
677 jadakren-72706
 
678 jadakren-72706
        power.OnSizeChange=function(object)
679 jadakren-72706
                self.db.bars.Health.height = 100 - self.db.bars.Power.height
680 jadakren-72706
                self:OnSizeChange()
681 jadakren-72706
        end
682 jadakren-72706
        health.OnSizeChange=function(object)
683 jadakren-72706
                self.db.bars.Power.height = 100 - self.db.bars.Health.height
684 jadakren-72706
                self:OnSizeChange()
685 jadakren-72706
        end
686 jadakren-72706
 
687 jadakren-72706
 
688 jadakren-72706
        power.bg = power:CreateTexture(nil, "BORDER")
689 jadakren-72706
        power.bg:SetAllPoints(power)
690 jadakren-72706
        local ppbg = self.db.bars.Power.bgColor
691 jadakren-72706
        power.bg:SetTexture(ppbg[1],ppbg[2],ppbg[3],ppbg[4])
692 jadakren-72706
        self.elements["Power"] = power
693 jadakren-72706
        self.bars.Power = power
694 jadakren-72706
        self.Power = power
695 jadakren-72706
 
696 jadakren-72706
        for index, data in pairs(self.db.FontObjects) do
697 jadakren-72706
                self[index] = addon:makeFontObject(self,index,data)
698 jadakren-72706
        end
699 jadakren-72706
 
700 jadakren-72706
--[[
701 jadakren-72706
        if IsAddOnLoaded("oUF_SmeeAFK") and (unit ~= "targettarget" or unit ~= "focustarget") then
702 jadakren-72706
                self.AFK = {}
703 jadakren-72706
                self.AFK.object = health.text
704 jadakren-72706
                self.AFK.Tagger=self
705 jadakren-72706
                self.AFK.fontFormat = "|cFFFF0000AFK |cFFFFFFFF%s:%s"
706 jadakren-72706
 
707 jadakren-72706
                self.DC = {}
708 jadakren-72706
                self.DC.object = health.text
709 jadakren-72706
                self.DC.Tagger=self
710 jadakren-72706
                self.DC.fontFormat = "|cFFFF0000D/C |cFFFFFFFF%s:%s"
711 jadakren-72706
        end
712 jadakren-72706
--]]
713 jadakren-72706
 
714 jadakren-72706
--==========--
715 jadakren-72706
--      ICONS   --
716 jadakren-72706
--==========--
717 jadakren-72706
--Leader Icon
718 jadakren-72706
        self.Leader = health:CreateTexture(nil, "OVERLAY")
719 jadakren-72706
        self.Leader:SetPoint("TOPLEFT", self, 0, 4)
720 jadakren-72706
        self.Leader:SetHeight(10)
721 jadakren-72706
        self.Leader:SetWidth(10)
722 jadakren-72706
-- Raid Icon
723 jadakren-72706
        self.RaidIcon = health:CreateTexture(nil, "OVERLAY")
724 jadakren-72706
        self.RaidIcon:SetPoint("TOP", self, 0, 4)
725 jadakren-72706
        self.RaidIcon:SetHeight(10)
726 jadakren-72706
        self.RaidIcon:SetWidth(10)
727 jadakren-72706
--Master Loot Icon
728 jadakren-72706
        self.MasterLooter = health:CreateTexture(nil, "OVERLAY")
729 jadakren-72706
        self.MasterLooter:SetPoint("TOPLEFT", self, 8, 4)
730 jadakren-72706
        self.MasterLooter:SetHeight(10)
731 jadakren-72706
        self.MasterLooter:SetWidth(10)
732 jadakren-72706
 
733 jadakren-72706
        self:SetAttribute("initial-height", self.db.height)             -- Size
734 jadakren-72706
        self:SetAttribute("initial-width", self.db.width)               -- Size
735 jadakren-72706
 
736 jadakren-72706
--==========--
737 jadakren-72706
--      PLAYER  --
738 jadakren-72706
--==========--
739 jadakren-72706
        if unit == "player" then
740 jadakren-72706
                self.Combat = health:CreateTexture(nil, "OVERLAY")
741 jadakren-72706
                self.Combat:SetHeight(24)
742 jadakren-72706
                self.Combat:SetWidth(24)
743 jadakren-72706
                self.Combat:SetPoint("CENTER", self, "BOTTOMRIGHT", -5, 5)
744 jadakren-72706
                self.Combat:SetTexture([[Interface\CharacterFrame\UI-StateIcon]])
745 jadakren-72706
                self.Combat:SetTexCoord(1/2, 1, 0.01, 0.5)
746 jadakren-72706
 
747 jadakren-72706
        -- Resting Icon
748 jadakren-72706
                self.Resting = health:CreateTexture(nil, "OVERLAY")
749 jadakren-72706
                self.Resting:SetPoint("TOP", self, 0, 8)
750 jadakren-72706
                self.Resting:SetHeight(16)
751 jadakren-72706
                self.Resting:SetWidth(16)
752 jadakren-72706
                self.Resting:SetTexture('Interface\\CharacterFrame\\UI-StateIcon')
753 jadakren-72706
                self.Resting:SetTexCoord(0, 0.5, 0, 0.42)
754 jadakren-72706
 
755 jadakren-72706
                if IsAddOnLoaded("oUF_PowerSpark") then
756 jadakren-72706
                        self.Spark = power:CreateTexture(nil, "OVERLAY")
757 jadakren-72706
                        self.Spark:SetTexture("Interface\\CastingBar\\UI-CastingBar-Spark")
758 jadakren-72706
                        self.Spark:SetVertexColor(1, 1, 1, 0.8)
759 jadakren-72706
                        self.Spark:SetBlendMode("ADD")
760 jadakren-72706
                        self.Spark:SetHeight(power:GetHeight()*4)
761 jadakren-72706
                        self.Spark:SetWidth(power:GetHeight())
762 jadakren-72706
                end
763 jadakren-72706
 
764 jadakren-72706
                addon:makeRuneBar(self)
765 jadakren-72706
                addon:makeTotemBar(self)
766 jadakren-72706
                self.UpdateTotemBar = UpdateTotemBar
767 jadakren-72706
                self:UpdateTotemBar()
768 jadakren-72706
                if IsAddOnLoaded("CoolLine") and self.db.bars.CoolLine then
769 jadakren-72706
                        addon:StealBar(self,_G["CoolLine"],self.db.bars.CoolLine)
770 jadakren-72706
                end
771 jadakren-72706
                addon:makeAuraFrame(self,{"Buffs","Debuffs"})
772 jadakren-72706
        end
773 jadakren-72706
 
774 jadakren-72706
--=====================================--
775 jadakren-72706
--      PET
776 jadakren-72706
--=====================================--
777 jadakren-72706
 
778 jadakren-72706
        if unit == "pet" then
779 jadakren-72706
                power.colorPower = true
780 jadakren-72706
                power.colorHappiness = true
781 jadakren-72706
                addon:makeAuraFrame(self,{"Buffs"})
782 jadakren-72706
--              makeComboPoints(self,"RIGHT","LEFT",-9, 3,38,"RIGHT")
783 jadakren-72706
        end
784 jadakren-72706
--=====================================--
785 jadakren-72706
--      PET TARGET
786 jadakren-72706
--=====================================--
787 jadakren-72706
        if unit == "pettarget" then
788 jadakren-72706
                power.colorPower = true
789 jadakren-72706
                addon:makeAuraFrame(self,{"Debuffs"})
790 jadakren-72706
--              makeComboPoints(self,"RIGHT","LEFT",-9, 3,38,"RIGHT")
791 jadakren-72706
        end
792 jadakren-72706
--===========--
793 jadakren-72706
--      TARGET   --
794 jadakren-72706
--===========--
795 jadakren-72706
        if unit == "target" then
796 jadakren-72706
                addon:makeAuraFrame(self,{"Debuffs","Buffs"})
797 jadakren-72706
        end
798 jadakren-72706
 
799 jadakren-72706
--===========--
800 jadakren-72706
--       FOCUS   --
801 jadakren-72706
--===========--
802 jadakren-72706
        if unit == "focus" then
803 jadakren-72706
                addon:makeAuraFrame(self,{"Buffs","Debuffs"})
804 jadakren-72706
        end
805 jadakren-72706
 
806 jadakren-72706
--=================--
807 jadakren-72706
--       FOCUSTARGET   --
808 jadakren-72706
--=================--
809 jadakren-72706
        if unit == "focustarget" then
810 jadakren-72706
        end
811 jadakren-72706
 
812 jadakren-72706
--=================--
813 jadakren-72706
--       TARGETTARGET   --
814 jadakren-72706
--=================--
815 jadakren-72706
        if unit == "targettarget" then
816 jadakren-72706
        end
817 jadakren-72706
 
818 jadakren-72706
--==============--
819 jadakren-72706
--       CASTBARS   --
820 jadakren-72706
--==============--
821 jadakren-72706
        if unit and  self.db.bars.Castbar and  self.db.bars.Castbar.enabled then
822 jadakren-72706
                makeCastBar(self)
823 jadakren-72706
        end
824 jadakren-72706
--===============--
825 jadakren-72706
--       RANGEFADING   --
826 jadakren-72706
--===============--
827 jadakren-72706
        self.outsideRangeAlpha = self.db.range.outside
828 jadakren-72706
        self.inRangeAlpha = self.db.range.inside
829 jadakren-72706
        self.SpellRange = self.db.range.enabled
830 jadakren-72706
 
831 jadakren-72706
--===================--
832 jadakren-72706
--       AGRRO INDICATOR   --
833 jadakren-72706
--===================--
834 jadakren-72706
        if IsAddOnLoaded("oUF_Banzai") then
835 jadakren-72706
                self.Banzai = updateBanzai
836 jadakren-72706
                self.BanzaiIndicator = power:CreateTexture(nil, "OVERLAY")
837 jadakren-72706
                self.BanzaiIndicator:SetPoint("CENTER", self, 0, 0)
838 jadakren-72706
                self.BanzaiIndicator:SetHeight(4)
839 jadakren-72706
                self.BanzaiIndicator:SetWidth(4)
840 jadakren-72706
                self.BanzaiIndicator:SetTexture(1, .25, .25)
841 jadakren-72706
                self.BanzaiIndicator:Hide()
842 jadakren-72706
        end
843 jadakren-72706
--==============--
844 jadakren-72706
--       SMOOTH BARS   --
845 jadakren-72706
--==============--
846 jadakren-72706
        if IsAddOnLoaded("oUF_Smooth") then
847 jadakren-72706
                health.Smooth = true
848 jadakren-72706
                power.Smooth = true
849 jadakren-72706
        end
850 jadakren-72706
--=======================--
851 jadakren-72706
--       DEBUFF HIGHLIGHTING   --
852 jadakren-72706
--=======================--
853 jadakren-72706
        if IsAddOnLoaded("oUF_DebuffHighlight") then
854 jadakren-72706
                self.DebuffHighlightBackdrop = self.db.DebuffHighlightBackdrop
855 jadakren-72706
        end
856 jadakren-72706
 
857 jadakren-72706
--=======================--
858 jadakren-72706
--
859 jadakren-72706
--
860 jadakren-72706
 
861 jadakren-72706
--===============--
862 jadakren-72706
--       EVENT HOOKS   --
863 jadakren-72706
--===============--
864 jadakren-72706
        self.OnSizeChange = UpDateFrameSize
865 jadakren-72706
        self.SetAuraPosition = SetAuraPosition
866 jadakren-72706
        self.PostCreateAuraIcon = PostCreateAuraIcon
867 jadakren-72706
        self.PostUpdateAuraIcon = PostUpdateAuraIcon
868 jadakren-72706
        self.PostUpdateHealth = PostUpdateHealth
869 jadakren-72706
        self.PostUpdatePower = PostUpdatePower
870 jadakren-72706
        self:SetAttribute("initial-scale", db.frames.scale)
871 jadakren-72706
        return self
872 jadakren-72706
end
873 jadakren-72706
 
874 jadakren-72706
function addon:Debug(msg)
875 jadakren-72706
        if not self.db.profile.enabledDebugMessages then return end
876 jadakren-72706
        self:Print("|cFFFFFF00Debug : |r"..msg)
877 jadakren-72706
end
878 jadakren-72706
 
879 jadakren-72706
function addon:Error(msg)
880 jadakren-72706
        self:Print("|cFFFF0000Error : |r"..msg)
881 jadakren-72706
end
882 jadakren-72706
 
883 jadakren-72706
function addon:HideBlizzard()
884 jadakren-72706
        local hide = self.db.profile.hideBlizzard
885 jadakren-72706
        if(hide.TemporaryEnchantFrame) then
886 jadakren-72706
                TemporaryEnchantFrame:Hide()
887 jadakren-72706
                TemporaryEnchantFrame:UnregisterAllEvents()
888 jadakren-72706
        end
889 jadakren-72706
        if(hide.BuffFrame) then
890 jadakren-72706
                BuffFrame:Hide()
891 jadakren-72706
                BuffFrame:UnregisterAllEvents()
892 jadakren-72706
        end
893 jadakren-72706
end
894 jadakren-72706
 
895 jadakren-72706
function addon:reloadui(input)
896 jadakren-72706
        ReloadUI()
897 jadakren-72706
end
898 jadakren-72706
 
899 jadakren-72706
function addon:reloadgfx(input)
900 jadakren-72706
        RestartGx()
901 jadakren-72706
end
902 jadakren-72706
 
903 jadakren-72706
function addon:UpdateFontObject()
904 jadakren-72706
end
905 jadakren-72706
 
906 jadakren-72706
function addon:UpdateFontObjects(obj,size,name,outline)
907 jadakren-72706
        local db = self.db.profile
908 jadakren-72706
 
909 jadakren-72706
        if obj~=nil and obj.FontObjects then
910 jadakren-72706
 
911 jadakren-72706
                print(tostring(db.frames.font.size),tostring(db.frames.font.name),tostring(db.frames.font.outline))
912 jadakren-72706
 
913 jadakren-72706
                for index,font in pairs(obj.FontObjects)do
914 jadakren-72706
                        if(font.object:GetObjectType() == "FontString")then
915 jadakren-72706
                                font.object:SetFont(addon.LSM:Fetch(addon.LSM.MediaType.FONT, db.frames.font.name),db.frames.font.size,db.frames.font.outline)
916 jadakren-72706
                        end
917 jadakren-72706
                end
918 jadakren-72706
 
919 jadakren-72706
        else
920 jadakren-72706
 
921 jadakren-72706
                if size~= nil then db.frames.font.size = size end
922 jadakren-72706
                if name~= nil then db.frames.font.name = name end
923 jadakren-72706
                if outline~= nil then db.frames.font.outline = outline end
924 jadakren-72706
 
925 jadakren-72706
                for index,frame in pairs(addon.units)do
926 jadakren-72706
                        if frame.unit ~= nil then
927 jadakren-72706
                                self:UpdateFontObjects(frame)
928 jadakren-72706
                        end
929 jadakren-72706
                end
930 jadakren-72706
        end
931 jadakren-72706
 
932 jadakren-72706
end
933 jadakren-72706
 
934 jadakren-72706
 
935 jadakren-72706
function addon:ImportSharedMedia()
936 jadakren-72706
        for name,path in pairs(self.db.profile.textures.statusbars)do
937 jadakren-72706
                self.LSM:Register(self.LSM.MediaType.STATUSBAR, name, path)
938 jadakren-72706
        end
939 jadakren-72706
        for name,data in pairs(self.db.profile.fonts)do
940 jadakren-72706
                self.LSM:Register(self.LSM.MediaType.FONT, name, data.name)
941 jadakren-72706
        end
942 jadakren-72706
end
943 jadakren-72706
 
944 jadakren-72706
function addon:OpenConfig(input)
945 jadakren-72706
        if(not IsAddOnLoaded(layoutName..'_Config')) then
946 jadakren-72706
                LoadAddOn(layoutName..'_Config')
947 jadakren-72706
        end
948 jadakren-72706
        InterfaceOptionsFrame:Hide()
949 jadakren-72706
        LibStub("AceConfigDialog-3.0"):SetDefaultSize(layoutName.."_Config", 700, 650)
950 jadakren-72706
        LibStub("AceConfigDialog-3.0"):Open(layoutName.."_Config")
951 jadakren-72706
 
952 jadakren-72706
end
953 jadakren-72706
 
954 jadakren-72706
function addon:OnInitialize()
955 jadakren-72706
        self.db = LibStub("AceDB-3.0"):New(layoutName.."DB",oUF_Smee_Settings)
956 jadakren-72706
        self.enabledDebugMessages = addon.db.profile.enabledDebugMessages
957 jadakren-72706
        self.units = {}
958 jadakren-72706
        self.Layout = layout
959 jadakren-72706
        self:HideBlizzard()
960 jadakren-72706
        self:RegisterChatCommand("oufsmee", "OpenConfig")
961 jadakren-72706
        self:RegisterChatCommand("rl", "reloadui")
962 jadakren-72706
        self:RegisterChatCommand("rgfx", "reloadgfx")
963 jadakren-72706
        self:ImportSharedMedia()
964 jadakren-72706
end
965 jadakren-72706
 
966 jadakren-72706
function addon:OnEnable()
967 7 jadakren-72706
 
968 4 jadakren-72706
    -- Called when the addon is enabled
969 jadakren-72706
        local db = self.db.profile
970 jadakren-72706
        if not db.enabled then
971 jadakren-72706
                self:Debug("Disabling")
972 jadakren-72706
                self:Disable()
973 jadakren-72706
                return
974 jadakren-72706
        end
975 jadakren-72706
 
976 jadakren-72706
 
977 jadakren-72706
        oUF:CompileTagStringLogic()
978 jadakren-72706
        self.enabledDebugMessages = false
979 jadakren-72706
 
980 jadakren-72706
        oUF:RegisterStyle("normal", self.Layout)
981 jadakren-72706
        oUF:SetActiveStyle("normal")
982 jadakren-72706
        oUF_Player = oUF:Spawn("player","oUF_Player")
983 jadakren-72706
        oUF_Player:SetPoint(
984 jadakren-72706
                db.frames.units.player.anchorFromPoint,
985 jadakren-72706
                oUF.units[db.frames.units.player.anchorTo] or UIParent,
986 jadakren-72706
                db.frames.units.player.anchorToPoint,
987 jadakren-72706
                db.frames.units.player.anchorX,
988 jadakren-72706
                db.frames.units.player.anchorY)
989 jadakren-72706
        self.units.target = oUF:Spawn("target","oUF_Target")
990 jadakren-72706
        self.units.target:SetPoint(
991 jadakren-72706
                db.frames.units.target.anchorFromPoint,
992 jadakren-72706
                oUF.units[db.frames.units.target.anchorTo] or UIParent,
993 jadakren-72706
                db.frames.units.target.anchorToPoint,
994 jadakren-72706
                db.frames.units.target.anchorX,
995 jadakren-72706
                db.frames.units.target.anchorY)
996 jadakren-72706
        self.units.focus = oUF:Spawn("focus","oUF_Focus")
997 jadakren-72706
        self.units.focus:SetPoint(
998 jadakren-72706
                db.frames.units.focus.anchorFromPoint,
999 jadakren-72706
                oUF.units[db.frames.units.focus.anchorTo] or UIParent,
1000 jadakren-72706
                db.frames.units.focus.anchorToPoint,
1001 jadakren-72706
                db.frames.units.focus.anchorX,
1002 jadakren-72706
                db.frames.units.focus.anchorY)
1003 jadakren-72706
        self.units.targettarget = oUF:Spawn("targettarget","oUF_TargetTarget")
1004 jadakren-72706
        self.units.targettarget:SetPoint(
1005 jadakren-72706
                db.frames.units.targettarget.anchorFromPoint,
1006 jadakren-72706
                oUF.units[db.frames.units.targettarget.anchorTo] or UIParent,
1007 jadakren-72706
                db.frames.units.targettarget.anchorToPoint,
1008 jadakren-72706
                db.frames.units.targettarget.anchorX,
1009 jadakren-72706
                db.frames.units.targettarget.anchorY)
1010 jadakren-72706
        self.units.focustarget = oUF:Spawn("focustarget","oUF_FocusTarget")
1011 jadakren-72706
        self.units.focustarget:SetPoint(
1012 jadakren-72706
                db.frames.units.focustarget.anchorFromPoint,
1013 jadakren-72706
                oUF.units[db.frames.units.focustarget.anchorTo] or UIParent,
1014 jadakren-72706
                db.frames.units.focustarget.anchorToPoint,
1015 jadakren-72706
                db.frames.units.focustarget.anchorX,
1016 jadakren-72706
                db.frames.units.focustarget.anchorY)
1017 jadakren-72706
        self.units.pet = oUF:Spawn("pet","oUF_Pet")
1018 jadakren-72706
        self.units.pet:SetPoint(
1019 jadakren-72706
                db.frames.units.pet.anchorFromPoint,
1020 jadakren-72706
                oUF.units[db.frames.units.pet.anchorTo] or UIParent,
1021 jadakren-72706
                db.frames.units.pet.anchorToPoint,
1022 jadakren-72706
                db.frames.units.pet.anchorX,
1023 jadakren-72706
                db.frames.units.pet.anchorY)
1024 jadakren-72706
        self.units.pettarget = oUF:Spawn("pettarget","oUF_PetTarget")
1025 jadakren-72706
        self.units.pettarget:SetPoint(
1026 jadakren-72706
                db.frames.units.pettarget.anchorFromPoint,
1027 jadakren-72706
                oUF.units[db.frames.units.pettarget.anchorTo] or UIParent,
1028 jadakren-72706
                db.frames.units.pettarget.anchorToPoint,
1029 jadakren-72706
                db.frames.units.pettarget.anchorX,
1030 jadakren-72706
                db.frames.units.pettarget.anchorY)
1031 jadakren-72706
 
1032 jadakren-72706
        self.units = {
1033 jadakren-72706
                ['player'] = oUF_Player,
1034 jadakren-72706
                ['target'] = oUF_Target,
1035 jadakren-72706
                ['targettarget'] = oUF_TargetTarget,
1036 jadakren-72706
                ['focus'] = oUF_Focus,
1037 jadakren-72706
                ['focustarget'] = oUF_FocusTarget,
1038 jadakren-72706
                ['pet'] = oUF_Pet,
1039 jadakren-72706
                ['pettarget'] = oUF_PetTarget,
1040 jadakren-72706
        }
1041 jadakren-72706
 
1042 jadakren-72706
end
1043 jadakren-72706
 
1044 jadakren-72706
function addon:OnDisable()
1045 jadakren-72706
    -- Called when the addon is disabled
1046 jadakren-72706
        db = self.db.profile
1047 jadakren-72706
        if db.enabled then
1048 jadakren-72706
                db.enabled = false
1049 jadakren-72706
                return
1050 jadakren-72706
        end
1051 jadakren-72706
    self:Debug("Disabled")
1052 jadakren-72706
end