diff --git a/oUF_Lanerra.lua b/oUF_Lanerra.lua
index be8d278..50aa57c 100644
--- a/oUF_Lanerra.lua
+++ b/oUF_Lanerra.lua
@@ -1606,1545 +1606,4 @@ partyToggle:SetScript('OnEvent', function(self)
end
end
end
-end)
---[[
- Copyright 2010-2011 Lanerra. See LICENSE file for license terms.
-
- Special thanks to P3lim for inspiration, Neav for textures and inspiration,
- Game92 for inspiration, and Phanx for inspiration and an inline border method
---]]
-
----- Lazy Stuff Goes Here!
-
--- Disable Blizzard options that are rendered useless by having a unit frame addon
-
-for _, button in pairs({
- 'UnitFramePanelPartyBackground',
- 'UnitFramePanelPartyPets',
- 'UnitFramePanelFullSizeFocusFrame',
-
- 'CombatPanelTargetOfTarget',
- 'CombatPanelTOTDropDown',
- 'CombatPanelTOTDropDownButton',
- 'CombatPanelEnemyCastBarsOnPortrait',
-
- 'DisplayPanelShowAggroPercentage',
-
- 'FrameCategoriesButton9',
-}) do
- _G['InterfaceOptions'..button]:SetAlpha(0.35)
- _G['InterfaceOptions'..button]:Disable()
- _G['InterfaceOptions'..button]:EnableMouse(false)
-end
-
-do
- for k, v in pairs(UnitPopupMenus) do
- for x, i in pairs(UnitPopupMenus[k]) do
- if (i == 'SET_FOCUS' or i == 'CLEAR_FOCUS') then
- table.remove(UnitPopupMenus[k],x)
- end
- end
- end
-end
-
--------------------------------------------------
--- Variables for defining colors and appearance
--------------------------------------------------
-
-
-local colors = oUF.colors
-
-local playerClass = select(2, UnitClass('player'))
-local isHealer = (playerClass == 'DRUID' or playerClass == 'PALADIN' or playerClass == 'PRIEST' or playerClass == 'SHAMAN')
-
--- A little backdrop local to save us some typing...because I'm lazy
-local backdrop = {
- bgFile = [[Interface\Tooltips\UI-Tooltip-Background]],
- insets = {top = -1, left = -1, bottom = -1, right = -1},
-}
-
-local PlayerUnits = { player = true, pet = true, vehicle = true }
-
--- Dummy function
-local noop = function() return end
-
-fontstrings = { }
-
--- Custom power colors
-local PowerBarColor = PowerBarColor
-
-PowerBarColor['MANA'] = { r = 0/255, g = 0.55, b = 1 }
-PowerBarColor['RAGE'] = { r = 240/255, g = 45/255, b = 75/255 }
-PowerBarColor['FOCUS'] = { r = 255/255, g = 175/255, b = 0 }
-PowerBarColor['ENERGY'] = { r = 1, g = 1, b = 35/255 }
-PowerBarColor['RUNIC_POWER'] = { r = 0.45, g = 0.85, b = 1 }
-
--- Threat color handling
-oUF.colors.threat = { }
-for i = 1, 3 do
- local r, g, b = GetThreatStatusColor(i)
- oUF.colors.threat[i] = { r, g, b }
-end
-
--- Debuff color handling
-colors.Debuff = { }
-for type, color in pairs(DebuffTypeColor) do
- if (type ~= 'none') then
- colors.Debuff[type] = { color.r, color.g, color.b }
- end
-end
-
--- Color conversion function
-function hex(r, g, b)
- if(type(r) == 'table') then
- if(r.r) then r, g, b = r.r, r.g, r.b else r, g, b = unpack(r) end
- end
- return ('|cff%02x%02x%02x'):format(r * 255, g * 255, b * 255)
-end
-
----- No More Lazy Stuff!
-
--- Border update function
-local function UpdateBorder(self)
- local Threat, Debuff, Dispellable = self.threatLevel, self.debuffType, self.debuffDispellable
-
- local color
- if Debuff and Dispellable then
- color = colors.Debuff[Debuff]
- elseif Debuff and Threat then
- color = colors.Debuff[Debuff]
- elseif Threat and Threat > 1 then
- color = colors.threat[Threat]
- elseif Debuff then
- color = colors.Debuff[Debuff]
- elseif Threat and Threat > 0 then
- color = colors.threat[Threat]
- end
-
-
- if color then
- self:SetBackdropBorderColor(color[1], color[2], color[3], 1)
- else
- self:SetBackdropBorderColor(0, 0, 0, 0)
- end
-end
-
--- Formatting function for the display of health and power text
-local function ShortValue(value)
- if value >= 1e7 then
- return ('%.1fm'):format(value / 1e6):gsub('%.?0+([km])$', '%1')
- elseif value >= 1e6 then
- return ('%.2fm'):format(value / 1e6):gsub('%.?0+([km])$', '%1')
- elseif value >= 1e5 then
- return ('%.0fk'):format(value / 1e3)
- elseif value >= 1e3 then
- return ('%.1fk'):format(value / 1e3):gsub('%.?0+([km])$', '%1')
- else
- return value
- end
-end
-
-------------------------------------------
--- Functions used to build Unit Frames
-------------------------------------------
-
-
--- Build dropdown menus
-local dropdown = CreateFrame('Frame', 'oUF_LanerraDropDown', UIParent, 'UIDropDownMenuTemplate')
-
-UIDropDownMenu_Initialize(dropdown, function(self)
- local unit = self:GetParent().unit
- if not unit then return end
-
- local menu, name, id
- if UnitIsUnit(unit, 'player') then
- menu = 'SELF'
- elseif UnitIsUnit(unit, 'vehicle') then
- menu = 'VEHICLE'
- elseif UnitIsUnit(unit, 'pet') then
- menu = 'PET'
- elseif UnitIsPlayer(unit) then
- id = UnitInRaid(unit)
- if id then
- menu = 'RAID_PLAYER'
- name = GetRaidRosterInfo(id)
- elseif UnitInParty(unit) then
- menu = 'PARTY'
- else
- menu = 'PLAYER'
- end
- else
- menu = 'TARGET'
- name = RAID_TARGET_ICON
- end
- if menu then
- UnitPopup_ShowMenu(self, menu, unit, name, id)
- end
-end, 'MENU')
-
-local function CreateDropDown(self)
- dropdown:SetParent(self)
- ToggleDropDownMenu(1, nil, dropdown, 'cursor', 15, -15)
-end
-
-local Interrupt = 'Interface\\Addons\\oUF_Lanerra\\Media\\BorderInterrupt'
-local Normal = 'Interface\\Addons\\oUF_Lanerra\\Media\\BorderNormal'
-
-local function PostCastStart(Castbar, unit)
- self.Castbar.SafeZone:SetDrawLayer('BORDER')
- self.Castbar.SafeZone:ClearAllPoints()
- self.Castbar.SafeZone:SetPoint('TOPRIGHT', self.Castbar)
- self.Castbar.SafeZone:SetPoint('BOTTOMRIGHT', self.Castbar)
-
- if (unit == 'target') then
- if (self.Castbar.interrupt) then
- self.Castbar.Border:SetBorderTexture(Interrupt)
- print('Changed the border, chief!')
- self.Castbar.Border:SetBorderColor(1, 0, 1)
- self.Castbar.Border:SetBorderShadowColor(1, 0, 1)
- else
- self.Castbar.Border:SetBorderTexture(Normal)
- self.Castbar.Border:SetBorderColor(1, 1, 1)
- self.Castbar.Border:SetBorderShadowColor(0, 0, 0)
- end
- end
-end
-
-local function PostChannelStart(Castbar, unit)
- self.Castbar.SafeZone:SetDrawLayer('ARTWORK')
- self.Castbar.SafeZone:ClearAllPoints()
- self.Castbar.SafeZone:SetPoint('TOPLEFT', self.Castbar)
- self.Castbar.SafeZone:SetPoint('BOTTOMLEFT', self.Castbar)
-
- if (unit == 'target') then
- if (self.interrupt) then
- self.Castbar.Border:SetBorderTexture(Interrupt)
- self.Castbar.Border:SetBorderColor(1, 0, 1)
- self.Castbar.Border:SetBorderShadowColor(1, 0, 1)
- else
- self.Castbar.Border:SetBorderTexture(Normal)
- self.Castbar.Border:SetBorderColor(1, 1, 1)
- self.Castbar.Border:SetBorderShadowColor(0, 0, 0)
- end
- end
-end
-
--- Health update function of doom!
-local UpdateHealth = function(Health, unit, min, max)
- if (Health:GetParent().unit ~= unit) then
- return
- end
-
- if (not unit == 'pet' or unit == 'focus' or unit == 'targettarget' or unit == 'player') then
- if (UnitIsDead(unit) or UnitIsGhost(unit) or not UnitIsConnected(unit)) then
- Health:SetValue(0)
- Health:SetStatusBarColor(.5, .5, .5)
- end
- end
-
- if (unit == 'player') then
- if (Settings.Units.Player.Health.Percent) then
- Health.Value:SetText((min / max * 100 and format('%d%%', min / max * 100)) or '')
- elseif (Settings.Units.Player.Health.Deficit) then
- Health.Value:SetText((min ~= max) and format('%d', min - max) or '')
- elseif (Settings.Units.Player.Health.Current) then
- Health.Value:SetText((min ~= max) and format('%d', min) or '')
- else
- Health.Value:SetText()
- end
- elseif (unit == 'target') then
- if (Settings.Units.Target.Health.Percent) then
- Health.Value:SetText((min / max * 100 and format('%d%%', min / max * 100)) or '')
- elseif (Settings.Units.Target.Health.Deficit) then
- Health.Value:SetText((min ~= max) and format('%d', min - max) or '')
- elseif (Settings.Units.Target.Health.Current) then
- Health.Value:SetText(ShortValue(min))
- elseif (Settings.Units.Target.Health.PerCur) then
- Health.Value:SetText((min/max * 100 and format('%s - %d%%', ShortValue(min), min/max * 100)))
- else
- Health.Value:SetText()
- end
- elseif (unit == 'targettarget') then
- if (Settings.Units.ToT.Health.Percent) then
- Health.Value:SetText((min / max * 100 < 100 and format('%d%%', min / max * 100)) or '')
- elseif (Settings.Units.ToT.Health.Deficit) then
- Health.Value:SetText((min ~= max) and format('%d', min - max) or '')
- elseif (Settings.Units.ToT.Health.Current) then
- Health.Value:SetText((min ~= max) and format('%d', min) or '')
- else
- Health.Value:SetText()
- end
- elseif (unit == 'pet') then
- if (Settings.Units.Pet.Health.Percent) then
- Health.Value:SetText((min / max * 100 < 100 and format('%d%%', min / max * 100)) or '')
- elseif (Settings.Units.Pet.Health.Deficit) then
- Health.Value:SetText((min ~= max) and format('%d', min - max) or '')
- elseif (Settings.Units.Pet.Health.Current) then
- Health.Value:SetText((min ~= max) and format('%d', min) or '')
- else
- Health.Value:SetText()
- end
- elseif (unit == 'focus') then
- if (Settings.Units.Focus.Health.Percent) then
- Health.Value:SetText((min / max * 100 < 100 and format('%d%%', min / max * 100)) or '')
- elseif (Settings.Units.Focus.Health.Deficit) then
- Health.Value:SetText((min ~= max) and format('%d', min - max) or '')
- elseif (Settings.Units.Focus.Health.Current) then
- Health.Value:SetText((min ~= max) and format('%d', min) or '')
- else
- Health.Value:SetText()
- end
- end
-
- -- Bar Color Stuff
- Health:SetStatusBarColor(.25, .25, .25)
-end
-
--- Group update health function
-local function UpdateGroupHealth(Health, unit, min, max)
- if (Health:GetParent().unit ~= unit) then
- return
- end
-
- if (UnitIsDead(unit) or UnitIsGhost(unit) or not UnitIsConnected(unit)) then
- Health:SetValue(0)
- Health:SetStatusBarColor(.5, .5, .5)
- end
-
- if (Settings.Units.Party.Health.Percent) then
- Health.Value:SetText((min / max * 100 < 100 and format('%d%%', min / max * 100)) or '')
- elseif (Settings.Units.Party.Health.Deficit) then
- Health.Value:SetText((min ~= max) and format('%d', min - max) or '')
- elseif (Settings.Units.Party.Health.Current) then
- Health.Value:SetText((min ~= max) and format('%d', min) or '')
- else
- Health.Value:SetText()
- end
-
- local color = RAID_CLASS_COLORS[select(2, UnitClass(unit))]
- if (Settings.Units.Party.Health.ClassColor) then
- Health.colorClass = true
- else
- Health:SetStatusBarColor(.25, .25, .25)
- end
-end
-
--- Raid update health function
-local function UpdateRaidHealth(Health, unit, min, max)
- if (Health:GetParent().unit ~= unit) then
- return
- end
-
- if (UnitIsDead(unit) or UnitIsGhost(unit) or not UnitIsConnected(unit)) then
- Health:SetValue(0)
- Health:SetStatusBarColor(.5, .5, .5)
- else
- if (Settings.Units.Raid.Health.Percent) then
- Health.Value:SetText((min / max * 100 and format('%d%%', min / max * 100)) or '')
- elseif (Settings.Units.Raid.Health.Deficit) then
- Health.Value:SetText((min ~= max) and format('%d', min - max) or '')
- elseif (Settings.Units.Raid.Health.Current) then
- Health.Value:SetText((min ~= max) and format('%d', min) or '')
- else
- Health.Value:SetText()
- end
-
- local color = RAID_CLASS_COLORS[select(2, UnitClass(unit))]
- if (Settings.Units.Raid.Health.ClassColor) then
- Health.colorClass = true
- else
- Health:SetStatusBarColor(.25, .25, .25)
- end
- end
-end
-
--- Custom Power Updating Function
-local function UpdatePower(Power, unit, min, max)
- local self = Power:GetParent()
-
- local _, PowerType, altR, altG, altB = UnitPowerType(unit)
- local UnitPower = PowerBarColor[PowerType]
-
- if (UnitIsDeadOrGhost(unit) or not UnitIsConnected(unit)) then
- Power:SetValue(0)
- Power.Value:SetText('')
- elseif (unit == 'player' and Settings.Units.Player.ShowPowerText or unit == 'target' and Settings.Units.Target.ShowPowerText) then
- if (unit == 'target' and max == 0) then
- Power.Value:SetText('')
- else
- Power.Value:SetText((min/max * 100 and format('%d%%', min/max * 100)))
- end
- else
- Power.Value:SetText()
- end
-
- if (UnitPower) then
- Power.Value:SetTextColor(UnitPower.r, UnitPower.g, UnitPower.b)
- else
- Power.Value:SetTextColor(altR, altG, altB)
- end
-end
-
--- Add DruidPower support
-local function UpdateDruidPower(self, event, unit)
- if (unit and unit ~= self.unit) then
- return
- end
-
- local unitPower = PowerBarColor['MANA']
- local mana = UnitPowerType('player') == 0
- local index = GetShapeshiftForm()
-
- if (index == 1 or index == 3) then
- if (unitPower) then
- self.Druid.Power:SetStatusBarColor(unitPower.r, unitPower.g, unitPower.b)
- end
-
- self.Druid.Power:SetAlpha(1)
-
- local min, max = UnitPower('player', 0), UnitPowerMax('player', 0)
-
- self.Druid.Power:SetMinMaxValues(0, max)
- self.Druid.Power:SetValue(min)
- else
- self.Druid.Power:SetAlpha(0)
- end
-end
-
--- Aura Icons for our unit frames
--- Aura Icon Show
-local AuraIconCD_OnShow = function(cd)
- local button = cd:GetParent()
- button:SetBorderParent(cd)
- button.count:SetParent(cd)
-end
-
--- Aura Icon Hide
-local AuraIconCD_OnHide = function(cd)
- local button = cd:GetParent()
- button:SetBorderParent(button)
- button.count:SetParent(button)
-end
--- Aura Icon Overlay
-local AuraIconOverlay_SetBorderColor = function(overlay, r, g, b)
- if not r or not g or not b then
- r, g, b = unpack(Settings.Media.BorderColor)
- end
- overlay:GetParent():SetBorderColor(r, g, b)
-end
-
--- Aura Icon Creation Function
-local function PostCreateAuraIcon(iconframe, button)
- AddBorder(button, Settings.Media.BorderSize, Settings.Media.BorderPadding)
-
- button.cd:SetReverse(true)
- button.cd:SetScript('OnHide', AuraIconCD_OnHide)
- button.cd:SetScript('OnShow', AuraIconCD_OnShow)
- if button.cd:IsShown() then
- AuraIconCD_OnShow(button.cd)
- end
-
- button.icon:SetTexCoord(0.03, 0.97, 0.03, 0.97)
-
- button.overlay:Hide()
- button.overlay.Hide = AuraIconOverlay_SetBorderColor
- button.overlay.SetVertexColor = AuraIconOverlay_SetBorderColor
- button.overlay.Show = noop
-end
-
--- Aura Icon Update Function
-local function PostUpdateAuraIcon(iconframe, unit, button, index, offset)
- local name, _, texture, count, type, duration, timeLeft, caster, isStealable, shouldConsolidate, spellID = UnitAura(unit, index, button.filter)
-
- if PlayerUnits[caster] then
- button.icon:SetDesaturated(false)
- else
- button.icon:SetDesaturated(true)
- end
-
- if button.timer then return end
-
- if OmniCC then
- for i = 1, button:GetNumChildren() do
- local child = select(i, button:GetChildren())
- if child.text and (child.icon == button.icon or child.cooldown == button.cd) then
- -- found it!
- child.SetAlpha = noop
- child.SetScale = noop
-
- child.text:ClearAllPoints()
- child.text:SetPoint('CENTER', button, 'TOP', 0, 2)
-
- child.text:SetFont(Settings.Media.Font, unit:match('^party') and 14 or 18)
- child.text.SetFont = noop
-
- child.text:SetTextColor(1, 0.8, 0)
- child.text:SetShadowOffset(1, -1)
- child.text.SetTextColor = noop
- child.text.SetVertexColor = noop
-
- tinsert(fontstrings, child.text)
-
- button.timer = child.text
-
- return
- end
- end
- else
- button.timer = true
- end
-end
-
--- Dispel highlighting function
-local function UpdateDispelHighlight(self, event, unit, debuffType, canDispel)
- if (self.unit ~= unit) then
- return
- end
-
- if (self.debuffType == debuffType) then
- return
- end
-
- self.debuffType = debuffType
- self.debuffDispellable = canDispel
-
- self:UpdateBorder()
-end
-
--- Threat highlighting function
-local function UpdateThreatHighlight(self, unit, status)
- if self.threatLevel == status then return end
-
- self.threatLevel = status
- self:UpdateBorder()
-end
-
--- Time to give our solo unit frames some style!
-local Stylish = function(self, unit, isSingle)
- self.menu = CreateDropDown
-
- self:SetScript("OnEnter", UnitFrame_OnEnter)
- self:SetScript("OnLeave", UnitFrame_OnLeave)
-
- self.ignoreHealComm = true
-
- self:EnableMouse(true)
- self:RegisterForClicks('AnyUp')
-
- -- Health Bar-specific stylings
- self.Health = CreateFrame('StatusBar', '$parentHealthBar', self)
- self.Health:SetHeight(Settings.Units.Player.Height * .75)
- self.Health:SetStatusBarTexture(Settings.Media.StatusBar)
-
- -- Turn on the smoothness
- self.Health.Smooth = true
-
- self.Health.frequentUpdates = 0.2
-
- self.Health:SetParent(self)
- self.Health:SetPoint('TOP')
- self.Health:SetPoint('LEFT')
- self.Health:SetPoint('RIGHT')
-
- self:SetBackdrop(backdrop)
- self:SetBackdropColor(unpack(Settings.Media.BackdropColor))
-
- if (unit == 'player') then
- local info = self.Health:CreateFontString('$parentInfo', 'OVERLAY', 'GameFontHighlightSmall')
- info:SetPoint('CENTER', self.Health)
- info.frequentUpdates = .25
- self:Tag(info, '[LanThreat] |cffff0000[LanPvPTime]|r')
- end
-
- -- Setup our health text
- self.Health.Value = self.Health:CreateFontString('$parentHealthValue', 'OVERLAY')
- self.Health.Value:SetFont(Settings.Media.Font, Settings.Media.FontSize)
- self.Health.Value:SetShadowOffset(1, -1)
- self.Health.Value:SetTextColor(1, 1, 1)
-
- self.Health.PostUpdate = UpdateHealth
-
- -- And now for the power bar and text stuff
- self.Power = CreateFrame('StatusBar', '$parentPowerBar', self)
- self.Power:SetHeight(Settings.Units.Player.Height * .22)
- self.Power:SetStatusBarTexture(Settings.Media.StatusBar)
-
- self.Power.colorClass = true
- self.Power.colorTapping = true
- self.Power.colorReaction = true
-
- -- We like to keep things smooth around here
- self.Power.frequentUpdates = 0.2
- self.Power.Smooth = true
-
- self.Power:SetParent(self)
- self.Power:SetPoint('BOTTOM')
- self.Power:SetPoint('LEFT', .2, 0)
- self.Power:SetPoint('RIGHT', -.2, 0)
-
- -- Now, the power bar's text
- self.Power.Value = self.Power:CreateFontString('$parentPowerValue', 'OVERLAY')
- self.Power.Value:SetFont(Settings.Media.Font, Settings.Media.FontSize)
- self.Power.Value:SetShadowOffset(1, -1)
- if (unit == 'target') then
- self.Power.Value:SetPoint('TOPRIGHT', self.Power, 'BOTTOMRIGHT', 0, -5)
- elseif (unit == 'player') then
- self.Power.Value:SetPoint('LEFT', self.Health.Value, 'RIGHT', -195, 0)
- end
-
- self.Power.Value:SetTextColor(1, 1, 1)
- self.Power.Value:SetJustifyH('LEFT')
- self.Power.Value.frequentUpdates = 0.1
-
- if (unit == 'targettarget') then
- self.Power:Hide()
- self.Power.Show = self.Power.Hide
- self.Health:SetAllPoints(self)
- end
-
- if (unit == 'focus' and Settings.Units.Focus.VerticalHealth) then
- self.Power:Hide()
- self.Power.Show = self.Power.Hide
- self.Health:SetAllPoints(self)
- self.Health:SetOrientation('VERTICAL')
- else
- self.Health:SetOrientation('HORIZONTAL')
- end
-
- self.Power.PostUpdate = UpdatePower
-
- -- Improve border drawing
- self.Overlay = CreateFrame('Frame', nil, self)
- self.Overlay:SetAllPoints(self)
- self.Overlay:SetFrameLevel(self.Health:GetFrameLevel() + (self.Power and 3 or 2))
-
- -- Now, to hammer out our castbars
- if (Settings.Show.CastBars) then
- if (unit == 'player') then
- self.Castbar = CreateFrame('StatusBar', '$parentCastBar', self)
- self.Castbar:SetStatusBarTexture(Settings.Media.StatusBar)
- self.Castbar:SetScale(Settings.CastBars.Player.Scale)
- self.Castbar:SetStatusBarColor(unpack(Settings.CastBars.Player.Color))
-
- self.Castbar.Border = CreateFrame('Frame', nil, self.Castbar)
- self.Castbar.Border:SetAllPoints(self.Castbar)
- self.Castbar.Border:SetFrameLevel(self.Castbar:GetFrameLevel() + 2)
-
- AddBorder(self.Castbar.Border, Settings.Media.BorderSize, Settings.Media.BorderPadding)
-
- self.Castbar:SetHeight(Settings.CastBars.Player.Height)
- self.Castbar:SetWidth(Settings.CastBars.Player.Width)
- self.Castbar:SetParent(self)
- self.Castbar:SetPoint(unpack(Settings.CastBars.Player.Position))
-
- self.Castbar.Bg = self.Castbar:CreateTexture('$parentCastBarBackground', 'BACKGROUND')
- self.Castbar.Bg:SetAllPoints(self.Castbar)
- self.Castbar.Bg:SetTexture(Settings.Media.StatusBar)
- self.Castbar.Bg:SetVertexColor(.1, .1, .1, .7)
-
- self.Castbar.Text = self.Castbar:CreateFontString('$parentCastBarText', 'OVERLAY')
- self.Castbar.Text:SetFont(Settings.Media.Font, 13)
- self.Castbar.Text:SetShadowOffset(1, -1)
- self.Castbar.Text:SetPoint('LEFT', self.Castbar, 'LEFT', 2, 0)
- self.Castbar.Text:SetHeight(Settings.Media.FontSize)
- self.Castbar.Text:SetWidth(130)
- self.Castbar.Text:SetJustifyH('LEFT')
- self.Castbar.Text:SetParent(self.Castbar)
- self.Castbar.CustomTimeText = function(self, duration)
- self.Time:SetFormattedText('%.1f/%.1f', duration, self.max)
- end
-
- self.Castbar.Time = self.Castbar:CreateFontString('$parentCastBarTime', 'OVERLAY')
- self.Castbar.Time:SetFont(Settings.Media.Font, 13)
- self.Castbar.Time:SetShadowOffset(1, -1)
- self.Castbar.Time:SetPoint('RIGHT', self.Castbar, 'RIGHT', -2, 0)
- self.Castbar.Time:SetParent(self.Castbar)
- self.Castbar.Time:SetJustifyH('RIGHT')
- self.Castbar.CustomDelayText = function(self, duration)
- self.Time:SetFormattedText('[|cffff0000-%.1f|r] %.1f/%.1f', self.delay, duration, self.max)
- end
-
- self.Castbar.SafeZone = self.Castbar:CreateTexture('$parentCastBarSafeZone', 'OVERLAY')
- self.Castbar.SafeZone:SetTexture('Interface\\Buttons\\WHITE8x8')
- self.Castbar.SafeZone:SetVertexColor(1, .5, 0, .25)
-
- self.PostChannelStart = UpdateChannelStart
- self.PostCastStart = UpdateCastStart
- elseif (unit == 'target') then
- self.Castbar = CreateFrame('StatusBar', '$parentCastBar', self)
- self.Castbar:SetStatusBarTexture(Settings.Media.StatusBar)
- self.Castbar:SetStatusBarColor(unpack(Settings.CastBars.Target.Color))
- self.Castbar:SetWidth(Settings.CastBars.Target.Width)
- self.Castbar:SetScale(Settings.CastBars.Target.Scale)
-
- self.Castbar.Border = CreateFrame('Frame', nil, self.Castbar)
- self.Castbar.Border:SetAllPoints(self.Castbar)
- self.Castbar.Border:SetFrameLevel(self.Castbar:GetFrameLevel() + 2)
-
- AddBorder(self.Castbar.Border, Settings.Media.BorderSize, Settings.Media.BorderPadding)
-
- self.Castbar:SetHeight(Settings.CastBars.Target.Height)
- self.Castbar:SetParent(self)
- self.Castbar:SetPoint(unpack(Settings.CastBars.Target.Position))
-
- self.Castbar.Bg = self.Castbar:CreateTexture('$parentCastBarBackground', 'BORDER')
- self.Castbar.Bg:SetAllPoints(self.Castbar)
- self.Castbar.Bg:SetTexture(.1, .1, .1, .7)
-
- self.Castbar.Text = self.Castbar:CreateFontString('$parentCastBarText', 'OVERLAY')
- self.Castbar.Text:SetFont(Settings.Media.Font, 13)
- self.Castbar.Text:SetShadowOffset(1, -1)
- self.Castbar.Text:SetPoint('LEFT', self.Castbar, 'LEFT', 2, 0)
- self.Castbar.Text:SetHeight(Settings.Media.FontSize)
- self.Castbar.Text:SetWidth(130)
- self.Castbar.Text:SetJustifyH('LEFT')
-
- self.Castbar.Time = self.Castbar:CreateFontString('$parentCastBarTime', 'OVERLAY')
- self.Castbar.Time:SetFont(Settings.Media.Font, 13)
- self.Castbar.Time:SetShadowOffset(1, -1)
- self.Castbar.Time:SetPoint('RIGHT', self.Castbar, 'RIGHT', -2, 0)
- self.Castbar.CustomTimeText = function(self, duration)
- if (self.casting) then
- self.Time:SetFormattedText('%.1f', self.max - duration)
- elseif (self.channeling) then
- self.Time:SetFormattedText('%.1f', duration)
- end
- end
-
- self.PostChannelStart = PostChannelStart
- self.PostCastStart = PostCastStart
- end
- end
-
- -- Now to skin and setup our Mirror Timers
- for _, bar in pairs({
- 'MirrorTimer1',
- 'MirrorTimer2',
- 'MirrorTimer3',
- }) do
- for i, region in pairs({_G[bar]:GetRegions()}) do
- if (region.GetTexture and region:GetTexture() == 'SolidTexture') then
- region:Hide()
- end
- end
-
- MirrorBorder = CreateFrame('Frame', nil, _G[bar])
- MirrorBorder:SetAllPoints(_G[bar])
- MirrorBorder:SetFrameLevel(_G[bar]:GetFrameLevel() + 2)
- AddBorder(MirrorBorder, Settings.Media.BorderSize, Settings.Media.BorderPadding)
-
- _G[bar..'Border']:Hide()
-
- _G[bar]:SetParent(UIParent)
- _G[bar]:SetScale(1.135)
- _G[bar]:SetHeight(18)
- _G[bar]:SetWidth(200)
-
- _G[bar..'Background'] = _G[bar]:CreateTexture(bar..'Background', 'BACKGROUND', _G[bar])
- _G[bar..'Background']:SetTexture('Interface\\Buttons\\WHITE8x8')
- _G[bar..'Background']:SetAllPoints(bar)
- _G[bar..'Background']:SetVertexColor(0, 0, 0, .5)
-
- _G[bar..'Text']:SetFont(CastingBarFrameText:GetFont(), 13)
- _G[bar..'Text']:ClearAllPoints()
- _G[bar..'Text']:SetPoint('CENTER', MirrorTimer1StatusBar, 0, 1)
-
- _G[bar..'StatusBar']:SetAllPoints(_G[bar])
- end
-
- -- Display the names
- if (unit ~= 'player') then
- local name = self.Health:CreateFontString('$parentName', 'OVERLAY')
- name:SetFont(Settings.Media.Font, Settings.Media.FontSize)
- name:SetShadowOffset(1, -1)
- name:SetTextColor(1, 1, 1)
- name:SetWidth(130)
- name:SetParent(self.Overlay)
- name:SetHeight(Settings.Media.FontSize)
- name.frequentUpdates = 0.2
-
- self.Health.Value:SetParent(self.Overlay)
-
- self.Info = name
- self:Tag(self.Info, '[LanShortName]')
-
- if (unit == 'targettarget') then
- self.Health.Value:SetPoint('BOTTOM', self.Health, 0, 1)
- self.Health.Value:Hide()
-
- if (Settings.Units.ToT.Health.Percent or Settings.Units.ToT.Health.Deficit or Settings.Units.ToT.Health.Current) then
- name:SetPoint('TOP', self.Health, 0, -1)
- self.Health.Value:Show()
- else
- name:SetPoint('CENTER', self.Health)
- name:Show()
- self.Health.Value:Hide()
- end
- elseif (unit == 'pet' and Settings.Units.Pet.ShowPowerText) then
- name:Hide()
-
- if (Settings.Units.Pet.Health.Percent or Settings.Units.Pet.Health.Deficit or Settings.Units.Pet.Health.Current) then
- self.Power.Value:SetPoint('RIGHT', self.Health, -2, 0)
- self.Health.Value:SetPoint('LEFT', self.Health, 2, -1)
- end
- elseif (unit == 'pet' and not Settings.Units.Pet.ShowPowerText) then
- name:SetPoint('CENTER', self.Health)
- self:Tag(self.Info, '[LanName]')
- elseif (unit == 'focus') then
- name:SetText()
- elseif (unit == 'target') then
- name:SetPoint('LEFT', self.Health, 'LEFT', 1, 0)
- name:SetJustifyH('LEFT')
- self:Tag(self.Info, '[LanLevel][LanClassification] [LanName]')
- self.Health.Value:SetPoint('RIGHT', self.Health, -2, -1)
- else
- name:SetPoint('LEFT', self.Health, 'LEFT', 1, 0)
- name:SetJustifyH('LEFT')
- self:Tag(self.Info, '[LanName]')
- end
- else
- self.Health.Value:SetPoint('RIGHT', self.Health, -2, -1)
- end
-
- if (isHealer) then
- if (unit == 'target') then
- local MHPB = CreateFrame('StatusBar', nil, self.Health)
- MHPB:SetOrientation('HORIZONTAL')
- MHPB:SetPoint('LEFT', self.Health:GetStatusBarTexture(), 'RIGHT', 0, 0)
- MHPB:SetStatusBarTexture(Settings.Media.StatusBar)
- MHPB:SetWidth(200)
- MHPB:SetHeight(22)
- MHPB:SetStatusBarColor(0, 1, 0.5, 0.25)
-
- local OHPB = CreateFrame('StatusBar', nil, self.Health)
- OHPB:SetOrientation('HORIZONTAL')
- OHPB:SetPoint('LEFT', MHPB:GetStatusBarTexture(), 'RIGHT', 0, 0)
- OHPB:SetStatusBarTexture(Settings.Media.StatusBar)
- OHPB:SetWidth(200)
- OHPB:SetHeight(22)
- OHPB:SetStatusBarColor(0, 1, 0, 0.25)
-
- self.HealPrediction = {
- myBar = MHPB,
- otherBar = OHPB,
- maxOverflow = 1,
- }
- end
- end
-
- -- Display icons
- if (unit == 'player') then
- self.Status = self.Health:CreateFontString(nil, 'OVERLAY')
- self.Status:SetParent(self.Overlay)
- self.Status:SetFont(Settings.Media.Font, Settings.Media.FontSize)
- self.Status:SetPoint('LEFT', self.Health, 'TOPLEFT', 2, 2)
-
- self:Tag(self.Status, '[LanLeader][LanMaster]')
-
- self.Resting = self.Overlay:CreateTexture(nil, 'OVERLAY')
- self.Resting:SetParent(self.Overlay)
- self.Resting:SetPoint('CENTER', self.Health, 'BOTTOMLEFT', 0, -4)
- self.Resting:SetSize(20, 20)
-
- self.Combat = self.Health:CreateTexture(nil, 'OVERLAY')
- self.Combat:SetParent(self.Overlay)
- self.Combat:SetPoint('CENTER', self.Health, 'BOTTOMRIGHT', 0, -4)
- self.Combat:SetSize(24, 24)
- end
-
- -- Aura/buff/debuff handling, update those suckers!
- if (unit == 'player' and Settings.Units.Player.ShowBuffs) then
- local GAP = 6
-
- self.Buffs = CreateFrame('Frame', nil, self)
- self.Buffs:SetPoint('BOTTOMLEFT', self, 'TOPLEFT', 0, 10)
- self.Buffs:SetPoint('BOTTOMRIGHT', self, 'TOPRIGHT', 0, 10)
- self.Buffs:SetHeight(30)
-
- self.Buffs['growth-x'] = 'LEFT'
- self.Buffs['growth-y'] = 'UP'
- self.Buffs['initialAnchor'] = 'BOTTOMRIGHT'
- self.Buffs['num'] = math.floor((Settings.Units.Player.Width - 4 + GAP) / (30 + GAP))
- self.Buffs['size'] = Settings.Units.Player.Height
- self.Buffs['spacing-x'] = GAP
- self.Buffs['spacing-y'] = GAP
-
- self.Buffs.CustomFilter = CustomAuraFilter
- self.Buffs.PostCreateIcon = PostCreateAuraIcon
- self.Buffs.PostUpdateIcon = PostUpdateAuraIcon
-
- self.Buffs.parent = self
- elseif (unit == 'target') then
- local GAP = 6
-
- local MAX_ICONS = math.floor((Settings.Units.Target.Width + GAP) / (Settings.Units.Target.Height + GAP)) - 1
- local NUM_BUFFS = math.max(1, math.floor(MAX_ICONS * 0.2))
- local NUM_DEBUFFS = math.min(MAX_ICONS - 1, math.floor(MAX_ICONS * 0.8))
-
- if (isHealer) then
- local debuff = NUM_DEBUFFS - 1
- local buff = NUM_BUFFS + 1
- else
- local debuff = NUM_DEBUFFS - 1
- local buff = NUM_BUFFS + 1
- end
-
- self.Debuffs = CreateFrame('Frame', nil, self)
- self.Debuffs:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 24)
- self.Debuffs:SetWidth((Settings.Units.Target.Height * NUM_DEBUFFS - 1) + (GAP * (NUM_DEBUFFS - 1)))
- self.Debuffs:SetHeight((Settings.Units.Target.Height * 2) + (GAP * 2))
-
- self.Debuffs['growth-x'] = 'RIGHT'
- self.Debuffs['growth-y'] = 'UP'
- self.Debuffs['initialAnchor'] = 'BOTTOMLEFT'
- self.Debuffs['num'] = debuffs
- self.Debuffs['showType'] = false
- self.Debuffs['size'] = Settings.Units.Target.Height
- self.Debuffs['spacing-x'] = GAP
- self.Debuffs['spacing-y'] = GAP * 2
-
- self.Debuffs.CustomFilter = CustomAuraFilter
- self.Debuffs.PostCreateIcon = PostCreateAuraIcon
- self.Debuffs.PostUpdateIcon = PostUpdateAuraIcon
-
- self.Debuffs.parent = self
-
- self.Buffs = CreateFrame('Frame', nil, self)
- self.Buffs:SetPoint('BOTTOMRIGHT', self, 'TOPRIGHT', 2, 24)
- self.Buffs:SetWidth((Settings.Units.Target.Height * NUM_BUFFS + 1) + (GAP * (NUM_BUFFS - 1)))
- self.Buffs:SetHeight((Settings.Units.Target.Height * 2) + (GAP * 2))
-
- self.Buffs['growth-x'] = 'LEFT'
- self.Buffs['growth-y'] = 'UP'
- self.Buffs['initialAnchor'] = 'BOTTOMRIGHT'
- self.Buffs['num'] = buffs
- self.Buffs['showType'] = false
- self.Buffs['size'] = Settings.Units.Target.Height
- self.Buffs['spacing-x'] = GAP
- self.Buffs['spacing-y'] = GAP * 2
-
-
-
- self.Buffs.CustomFilter = CustomAuraFilter
- self.Buffs.PostCreateIcon = PostCreateAuraIcon
- self.Buffs.PostUpdateIcon = PostUpdateAuraIcon
-
- self.Buffs.parent = self
- end
-
- -- DebuffHighlight Support
- self.DebuffHighlightBackdrop = false
- self.DebuffHighlightFilter = true
-
- -- Various oUF plugins support
- if (unit == 'player') then
- -- oUF_RuneBar support
- if (IsAddOnLoaded('oUF_RuneBar') and class == 'DEATHKNIGHT') then
- self.RuneBar = {}
- for i = 1, 6 do
- self.RuneBar[i] = CreateFrame('StatusBar', '$parentRuneBar', self)
- if(i == 1) then
- self.RuneBar[i]:SetPoint('TOPLEFT', self, 'BOTTOMLEFT', 0, -1)
- else
- self.RuneBar[i]:SetPoint('TOPLEFT', self.RuneBar[i-1], 'TOPRIGHT', 1, 0)
- end
- self.RuneBar[i]:SetStatusBarTexture(Settings.Media.StatusBar)
- self.RuneBar[i]:SetHeight(5)
- self.RuneBar[i]:SetWidth(200/6 - .85)
- self.RuneBar[i]:SetBackdrop(backdrop)
- self.RuneBar[i]:SetBackdropColor(0, 0, 0, .5)
- self.RuneBar[i]:SetMinMaxValues(0, 1)
-
- self.RuneBar[i].bg = self.RuneBar[i]:CreateTexture('$parentRuneBackground', 'BORDER')
- self.RuneBar[i].bg:SetAllPoints(self.RuneBar[i])
- self.RuneBar[i].bg:SetTexture(.1, .1, .1)
- end
- end
- end
-
- -- DruidPower Support
- if (unit == 'player' and select(2, UnitClass('player')) == 'DRUID') then
- self.Druid = CreateFrame('Frame')
- self.Druid:SetParent(self)
- self.Druid:SetFrameStrata('LOW')
-
- self.Druid.Power = CreateFrame('StatusBar', nil, self)
- self.Druid.Power:SetPoint('TOP', self.Power, 'BOTTOM', 0, -7)
- self.Druid.Power:SetStatusBarTexture(Settings.Media.StatusBar)
- self.Druid.Power:SetFrameStrata('LOW')
- self.Druid.Power:SetFrameLevel(self.Druid:GetFrameLevel() - 1)
- self.Druid.Power:SetHeight(10)
- self.Druid.Power:SetWidth(200)
- self.Druid.Power:SetBackdrop(backdrop)
- self.Druid.Power:SetBackdropColor(0, 0, 0, 0.5)
-
- self.DruidBorder = CreateFrame('Frame', nil, self.Druid.Power)
- self.DruidBorder:SetAllPoints(self.Druid.Power)
- self.DruidBorder:SetFrameLevel(self.Druid.Power:GetFrameLevel() + 2)
-
- AddBorder(self.DruidBorder, Settings.Media.BorderSize, 5)
-
- table.insert(self.__elements, UpdateDruidPower)
- self:RegisterEvent('UNIT_MANA', UpdateDruidPower)
- self:RegisterEvent('UNIT_RAGE', UpdateDruidPower)
- self:RegisterEvent('UNIT_ENERGY', UpdateDruidPower)
- self:RegisterEvent('UPDATE_SHAPESHIFT_FORM', UpdateDruidPower)
- end
-
- -- Eclipse Bar Support
- if (select(2, UnitClass('player')) == 'DRUID') then
- local EclipseBar = CreateFrame('Frame', nil, self)
- EclipseBar:SetPoint('TOPLEFT', self, 'BOTTOMLEFT', 0, -10)
- EclipseBar:SetPoint('TOPRIGHT', self, 'BOTTOMRIGHT', 0, -10)
- EclipseBar:SetSize(200, 10)
- EclipseBar:SetBackdrop(backdrop)
- EclipseBar:SetBackdropColor(0, 0, 0, 0.6)
-
- local EclipseBarBorder = CreateFrame('Frame', nil, EclipseBar)
- EclipseBarBorder:SetAllPoints(EclipseBar)
- EclipseBarBorder:SetFrameLevel(EclipseBar:GetFrameLevel() + 2)
-
- AddBorder(EclipseBarBorder, Settings.Media.BorderSize, Settings.Media.BorderPadding)
-
- local LunarBar = CreateFrame('StatusBar', nil, EclipseBar)
- LunarBar:SetPoint('LEFT', EclipseBar, 'LEFT', 0, 0)
- LunarBar:SetSize(200, 10)
- LunarBar:SetStatusBarTexture(Settings.Media.StatusBar)
- LunarBar:SetStatusBarColor(1, 1, 1)
- EclipseBar.LunarBar = LunarBar
-
- local SolarBar = CreateFrame('StatusBar', nil, EclipseBar)
- SolarBar:SetPoint('LEFT', LunarBar:GetStatusBarTexture(), 'RIGHT', 0, 0)
- SolarBar:SetSize(200, 10)
- SolarBar:SetStatusBarTexture(Settings.Media.StatusBar)
- SolarBar:SetStatusBarColor(1, 3/5, 0)
- EclipseBar.SolarBar = SolarBar
-
- local EclipseBarText = EclipseBarBorder:CreateFontString(nil, 'OVERLAY')
- EclipseBarText:SetPoint('CENTER', EclipseBarBorder, 'CENTER', 0, 0)
- EclipseBarText:SetFont(Settings.Media.Font, Settings.Media.FontSize, 'OUTLINE')
- self:Tag(EclipseBarText, '[pereclipse]%')
-
- self.EclipseBar = EclipseBar
- end
-
- -- Soul Shard Support
- if (select(2, UnitClass('player')) == 'WARLOCK') then
- local Shards = self:CreateFontString(nil, 'OVERLAY')
- Shards:SetPoint('CENTER', self, 'RIGHT', 17, -2)
- Shards:SetFont(Settings.Media.Font, 24, 'OUTLINE')
- Shards:SetJustifyH('CENTER')
- self:Tag(Shards, '[LanShards]')
- end
-
- -- Holy Power Support
- if (select(2, UnitClass('player')) == 'PALADIN') then
- local HolyPower = self:CreateFontString(nil, 'OVERLAY')
- HolyPower:SetPoint('CENTER', self, 'RIGHT', 17, -2)
- HolyPower:SetFont(Settings.Media.Font, 24, 'OUTLINE')
- HolyPower:SetJustifyH('CENTER')
- self:Tag(HolyPower, '[LanHolyPower]')
- end
-
- -- Combo points display
- if (select(2, UnitClass('player')) == 'ROGUE') or (select(2, UnitClass('player')) == 'DRUID') then
- local ComboPoints = self:CreateFontString(nil, 'OVERLAY')
- ComboPoints:SetPoint('CENTER', self, 'RIGHT', 17, -2)
- ComboPoints:SetFont(Settings.Media.Font, 24, 'OUTLINE')
- ComboPoints:SetJustifyH('CENTER')
- self:Tag(ComboPoints, '[LanCombo]')
-
- end
-
- -- Raid Icons
- if (unit == 'target') then
- self.RaidIcon = self.Overlay:CreateTexture('$parentRaidIcon', 'ARTWORK')
- self.RaidIcon:SetHeight(18)
- self.RaidIcon:SetWidth(18)
- self.RaidIcon:SetPoint('CENTER', self.Overlay, 'TOP')
- self.RaidIcon:SetTexture('Interface\\TargettingFrame\\UI-RaidTargetingIcons')
- end
-
- -- Custom sizes for our frames
- if (isSingle) then
- if (unit == 'player') then
- self:SetSize(Settings.Units.Player.Width, Settings.Units.Player.Height)
- elseif (unit == 'target') then
- self:SetSize(Settings.Units.Target.Width, Settings.Units.Target.Height)
- elseif (unit == 'pet') then
- self:SetSize(Settings.Units.Pet.Width, Settings.Units.Pet.Height)
- end
-
- if (Settings.Show.ToT) then
- if (unit == 'targettarget') then
- self:SetSize(Settings.Units.ToT.Width, Settings.Units.ToT.Height)
- end
- end
-
- if (Settings.Show.Focus) then
- if (unit == 'focus') then
- self:SetSize(Settings.Units.Focus.Width, Settings.Units.Focus.Height)
- end
- end
- end
-
- -- Hardcore border action!
- AddBorder(self, Settings.Media.BorderSize, Settings.Media.BorderPadding + 2)
- self:SetBorderParent(self.Overlay)
-
- self.UpdateBorder = UpdateBorder
-
- -- Dispel highlight support
- self.DispelHighlight = UpdateDispelHighlight
-
- -- Threat highlight support
- self.threatLevel = 0
- self.ThreatHighlight = UpdateThreatHighlight
-
- return self
-end
-
--- First build the group style
-local function StylishGroup(self, unit)
- self.menu = CreateDropDown
-
- self:SetScript("OnEnter", UnitFrame_OnEnter)
- self:SetScript("OnLeave", UnitFrame_OnLeave)
-
- self.ignoreHealComm = true
-
- self:EnableMouse(true)
- self:RegisterForClicks('AnyUp')
-
- if (Settings.Show.Party) then
- if (Settings.Units.Party.Healer) then
- self:SetSize(100, 35)
- else
- self:SetSize(Settings.Units.Party.Width, Settings.Units.Party.Height)
- end
- else
- return
- end
-
- -- Health bar display for group frames
- self.Health = CreateFrame('StatusBar', '$parentHealthBar', self)
- self.Health:SetStatusBarTexture(Settings.Media.StatusBar, 'ARTWORK')
-
- self.Health:SetParent(self)
- self.Health:SetPoint('TOPRIGHT')
- self.Health:SetPoint('BOTTOMLEFT', 0, -1)
-
- self:SetBackdrop(backdrop)
- self:SetBackdropColor(0, 0, 0, .5)
-
- self.Health.PostUpdate = UpdateGroupHealth
-
- if (Settings.Units.Party.Health.ClassColor) then
- self.Health.colorClass = true
- end
-
- self.Health.Smooth = true
- self.Health.frequentUpdates = 0.3
-
- -- Health bar background display for group frames
- self.Health.Background = self.Health:CreateTexture('$parentHealthBackground', 'BORDER')
- self.Health.Background:SetAllPoints(self.Health)
-
- -- Background Color
- self.Health.Background:SetTexture(.08, .08, .08)
-
- -- Health value settings
- self.Health.Value = self.Health:CreateFontString('$parentHealthValue', 'OVERLAY')
- self.Health.Value:SetFont(Settings.Media.Font, Settings.Media.FontSize)
-
- -- Improve border drawing
- self.Overlay = CreateFrame('Frame', nil, self)
- self.Overlay:SetAllPoints(self)
- self.Overlay:SetFrameLevel(self.Health:GetFrameLevel() + (self.Power and 3 or 2))
-
- -- Display group names
- self.Name = self.Health:CreateFontString('$parentName', 'OVERLAY')
- self.Name:SetPoint('LEFT', self.Health, 5, 1)
- self.Name:SetFont(Settings.Media.Font, 13)
- self.Name:SetShadowOffset(1, -1)
- self.Name.frequentUpdates = 0.3
-
- self:Tag(self.Name, '|cffffffff[LanName]|r')
-
- if (Settings.Units.Party.Healer) then
- self.Name:SetPoint('CENTER', self.Health)
- end
-
- if isHealer then
- local MHPB = CreateFrame('StatusBar', nil, self.Health)
- MHPB:SetOrientation('HORIZONTAL')
- MHPB:SetPoint('LEFT', self.Health:GetStatusBarTexture(), 'RIGHT', 0, 0)
- MHPB:SetStatusBarTexture(Settings.Media.StatusBar)
- MHPB:SetWidth(100)
- MHPB:SetHeight(35)
- MHPB:SetStatusBarColor(0, 1, 0.5, 0.25)
-
- local OHPB = CreateFrame('StatusBar', nil, self.Health)
- OHPB:SetOrientation('HORIZONTAL')
- OHPB:SetPoint('LEFT', MHPB:GetStatusBarTexture(), 'RIGHT', 0, 0)
- OHPB:SetStatusBarTexture(Settings.Media.StatusBar)
- OHPB:SetWidth(100)
- OHPB:SetHeight(35)
- OHPB:SetStatusBarColor(0, 1, 0, 0.25)
-
- self.HealPrediction = {
- myBar = MHPB,
- otherBar = OHPB,
- maxOverflow = 1,
- }
- end
-
- if unit == 'party' or unit == 'target' then
- self.Status = self.Overlay:CreateFontString(nil, 'OVERLAY')
- self.Status:SetFont(Settings.Media.Font, Settings.Media.FontSize)
- self.Status:SetPoint('RIGHT', self.Health, 'BOTTOMRIGHT', -2, 0)
-
- self:Tag(self.Status, '[LanMaster][LanLeader]')
- end
-
- -- Raid Icons
- self.RaidIcon = self.Overlay:CreateTexture('$parentRaidIcon', 'ARTWORK')
- self.RaidIcon:SetHeight(18)
- self.RaidIcon:SetWidth(18)
- self.RaidIcon:SetPoint('CENTER', self.Overlay, 'TOP')
- self.RaidIcon:SetTexture('Interface\\TargettingFrame\\UI-RaidTargetingIcons')
-
- -- LFD Role
- self.LFDRole = self.Overlay:CreateTexture(nil, 'OVERLAY')
- self.LFDRole:SetPoint('CENTER', self, 'RIGHT', 2, 0)
- self.LFDRole:SetSize(16, 16)
-
- -- Buffs
- local GAP = 6
-
- self.Buffs = CreateFrame('Frame', nil, self)
- self.Buffs:SetPoint('BOTTOMRIGHT', self, 'TOPRIGHT', 0, 10)
- self.Buffs:SetHeight(Settings.Units.Party.Height)
- self.Buffs:SetWidth((Settings.Units.Party.Height * 4) + (GAP * 3))
-
- self.Buffs['growth-x'] = 'LEFT'
- self.Buffs['growth-y'] = 'DOWN'
- self.Buffs['initialAnchor'] = 'TOPRIGHT'
- self.Buffs['num'] = 4
- self.Buffs['size'] = Settings.Units.Party.Height
- self.Buffs['spacing-x'] = GAP
- self.Buffs['spacing-y'] = GAP
-
- self.Buffs.CustomFilter = CustomAuraFilter
- self.Buffs.PostCreateIcon = PostCreateAuraIcon
- self.Buffs.PostUpdateIcon = PostUpdateAuraIcon
-
- self.Buffs.parent = self
-
- -- Range-finding support
- self.Range = {
- insideAlpha = 1,
- outsideAlpha = .3,
- }
-
- self.SpellRange = true
-
- -- Hardcore border action!
- AddBorder(self, Settings.Media.BorderSize, Settings.Media.BorderPadding + 2)
- self:SetBorderParent(self.Overlay)
-
- self.UpdateBorder = UpdateBorder
-
- -- Dispel highlight support
- self.DispelHighlight = UpdateDispelHighlight
-
- -- Threat highlight support
- self.threatLevel = 0
- self.ThreatHighlight = UpdateThreatHighlight
-
- return self
-end
-
--- Now the raid style
-local function StylishRaid(self, unit)
- self.menu = CreateDropDown
-
- self:SetScript("OnEnter", UnitFrame_OnEnter)
- self:SetScript("OnLeave", UnitFrame_OnLeave)
-
- self.ignoreHealComm = true
-
- self:EnableMouse(true)
- self:RegisterForClicks('AnyUp')
-
- if (Settings.Show.Raid) then
- if (Settings.Units.Raid.Healer) then
- self:SetSize(75, 35)
- else
- self:SetSize(Settings.Units.Raid.Width, Settings.Units.Raid.Height)
- end
- else
- return
- end
-
- -- Health bar display for group frames
- self.Health = CreateFrame('StatusBar', '$parentHealthBar', self)
- self.Health:SetStatusBarTexture(Settings.Media.StatusBar, 'ARTWORK')
-
- self.Health:SetParent(self)
- self.Health:SetPoint('TOPRIGHT')
- self.Health:SetPoint('BOTTOMLEFT', 0, -1)
-
- self:SetBackdrop(backdrop)
- self:SetBackdropColor(0, 0, 0, .5)
-
- self.Health.PostUpdate = UpdateRaidHealth
-
- if (Settings.Units.Raid.Health.ClassColor) then
- self.Health.colorClass = true
- end
-
- self.Health.Smooth = true
- self.Health.frequentUpdates = 0.3
-
- -- Health bar background display for group frames
- self.Health.Background = self.Health:CreateTexture('$parentHealthBackground', 'BORDER')
- self.Health.Background:SetAllPoints(self.Health)
-
- -- Background Color
- self.Health.Background:SetTexture(.08, .08, .08)
-
- -- Health value settings
- self.Health.Value = self.Health:CreateFontString('$parentHealthValue', 'OVERLAY')
- self.Health.Value:SetFont(Settings.Media.Font, Settings.Media.FontSize)
-
- -- Improve border drawing
- self.Overlay = CreateFrame('Frame', nil, self)
- self.Overlay:SetAllPoints(self)
- self.Overlay:SetFrameLevel(self.Health:GetFrameLevel() + (self.Power and 3 or 2))
-
- -- Display group names
- if (Settings.Units.Raid.Healer) then
- self.Name = self.Health:CreateFontString('$parentName', 'OVERLAY')
- self.Name:SetPoint('TOP', 0, -2)
- self.Name:SetFont(Settings.Media.Font, 13)
- self.Name:SetShadowOffset(1, -1)
- self.Name:SetJustifyH('CENTER')
- self:Tag(self.Name, '|cffffffff[LanRaidName]|r')
- else
- self.Name = self.Health:CreateFontString('$parentName', 'OVERLAY')
- self.Name:SetPoint('LEFT', self.Health, 5, 1)
- self.Name:SetFont(Settings.Media.Font, 13)
- self.Name:SetShadowOffset(1, -1)
- self:Tag(self.Name, '|cffffffff[LanName]|r')
- self.Health:SetOrientation('HORIZONTAL')
- end
-
- self.Name.frequentUpdates = 0.3
-
- if isHealer then
- local MHPB = CreateFrame('StatusBar', nil, self.Health)
- MHPB:SetPoint('BOTTOM', self.Health:GetStatusBarTexture(), 'TOP', 0, 0)
- MHPB:SetStatusBarTexture(Settings.Media.StatusBar)
- MHPB:SetWidth(75)
- MHPB:SetHeight(35)
- MHPB:SetStatusBarColor(0, 1, 0.5, 0.25)
-
- local OHPB = CreateFrame('StatusBar', nil, self.Health)
- OHPB:SetPoint('BOTTOM', MHPB:GetStatusBarTexture(), 'TOP', 0, 0)
- OHPB:SetStatusBarTexture(Settings.Media.StatusBar)
- OHPB:SetWidth(75)
- OHPB:SetHeight(35)
- OHPB:SetStatusBarColor(0, 1, 0, 0.25)
-
- self.HealPrediction = {
- myBar = MHPB,
- otherBar = OHPB,
- maxOverflow = 1,
- }
- end
-
- -- Status Icons Display
- self.Status = self.Overlay:CreateFontString(nil, 'OVERLAY')
- self.Status:SetFont(Settings.Media.Font, Settings.Media.FontSize)
- self.Status:SetPoint('RIGHT', self.Health, 'BOTTOMRIGHT', -2, 0)
-
- self:Tag(self.Status, '[LanMaster][LanLeader]')
-
- -- Raid Icons
- self.RaidIcon = self.Overlay:CreateTexture('$parentRaidIcon', 'ARTWORK')
- self.RaidIcon:SetHeight(18)
- self.RaidIcon:SetWidth(18)
- self.RaidIcon:SetPoint('CENTER', self.Overlay, 'TOP')
- self.RaidIcon:SetTexture('Interface\\TargettingFrame\\UI-RaidTargetingIcons')
-
- -- Range-finding support
- self.Range = {
- insideAlpha = 1,
- outsideAlpha = .3,
- }
-
- self.SpellRange = true
-
- -- Hardcore border action!
- AddBorder(self, Settings.Media.BorderSize, Settings.Media.BorderPadding + 2)
- self:SetBorderParent(self.Overlay)
-
- self.UpdateBorder = UpdateBorder
-
- -- Dispel highlight support
- self.DispelHighlight = UpdateDispelHighlight
-
- -- Threat highlight support
- self.threatLevel = 0
- self.ThreatHighlight = UpdateThreatHighlight
-
- return self
-end
-
--- Now, actually bring it all together by actually spawning the frames
--- First spawn the group and raid stuff
-oUF:RegisterStyle('oUF_Lanerra_Group', StylishGroup)
-oUF:RegisterStyle('oUF_Lanerra_Raid', StylishRaid)
-
--- First up are the group frames
-oUF:Factory(function(self)
- if (Settings.Units.Party.Healer) then
- local group = oUF:SpawnHeader('oUF_Lanerra_Group', nil, nil, 'showParty', true, 'showFocus', true, 'columnSpacing', 10, 'unitsPerColumn', 1, 'maxColumns', 5, 'columnAnchorPoint', 'LEFT', 'groupFilter', i)
- group:SetPoint('CENTER', UIParent, 0, -240)
- else
- local group = oUF:SpawnHeader('oUF_Lanerra_Group', nil, nil, 'showParty', true, 'showPlayer', true, 'showFocus', true, 'yOffset', -10)
- if (IsAddOnLoaded('Skada')) then
- group:SetPoint(unpack(Settings.Units.Party.TinyPosition))
- else
- group:SetPoint(unpack(Settings.Units.Party.Position))
- end
- end
-end)
-
--- Now for the raid frames
-oUF:Factory(function(self)
- self:SetActiveStyle('oUF_Lanerra_Raid')
-
- if (Settings.Units.Raid.Healer) then
- raid = oUF:SpawnHeader('oUF_Lanerra_Raid', nil, nil, 'showPlayer', true, 'showRaid', true, 'xOffset', 10, 'yOffset', -5, 'point', 'LEFT', 'groupFilter', '1,2,3,4,5', 'groupingOrder', '1,2,3,4,5', 'groupBy', 'GROUP', 'maxColumns', 10, 'unitsPerColumn', 5, 'columnSpacing', 10, 'columnAnchorPoint', 'TOP')
- raid:SetPoint('CENTER', UIParent, 0, -310)
-
- if (Settings.Units.Raid.Healer) then
- local RaidShift, raid = false
- do
- local UpdateRaid = CreateFrame('Frame')
- UpdateRaid:RegisterEvent('RAID_ROSTER_UPDATE')
- UpdateRaid:SetScript('OnEvent', function(self)
- if RaidShift == false then return end
- if(InCombatLockdown()) then
- self:RegisterEvent('PLAYER_REGEN_ENABLED')
- else
- self:UnregisterEvent('PLAYER_REGEN_ENABLED')
- if (GetNumRaidMembers() < 26 and GetNumRaidMembers() > 10) then
- raid:SetPoint('CENTER', UIParent, -105, -200)
- elseif (GetNumRaidMembers() < 11) then
- raid:SetPoint('CENTER', UIParent, -21, -200)
- end
- end
- end)
- end
- end
- else
- raid = {}
- for i = 1, 5 do
- raid[i] = oUF:SpawnHeader('oUF_Lanerra_Raid'..i, nil, nil, 'groupFilter', i, 'showRaid', true, 'showParty', true, 'showFocus', true, 'yOffset', -10)
- table.insert(raid, raid[i])
- if (i == 1) then
- if (IsAddOnLoaded('TinyDPS')) then
- raid[i]:SetPoint(unpack(Settings.Units.Raid.TinyPosition))
- else
- raid[i]:SetPoint(unpack(Settings.Units.Raid.Position))
- end
- else
- raid[i]:SetPoint('TOP', raid[i-1], 'BOTTOM', 0, -10)
- end
- raid[i]:Show()
- end
- end
-end)
-
--- Killin' those pesky raid frames
-for _, frame in pairs({
- CompactPartyFrame,
- CompactRaidFrameManager,
- CompactRaidFrameContainer,
-}) do
- frame:UnregisterAllEvents()
-
- hooksecurefunc(frame, 'Show', function(self)
- self:Hide()
- end)
-end
-
-for _, button in pairs({
- 'OptionsButton',
-
- 'LockedModeToggle',
- 'HiddenModeToggle',
-}) do
- _G['CompactRaidFrameManagerDisplayFrame'..button]:Hide()
- _G['CompactRaidFrameManagerDisplayFrame'..button]:Disable()
- _G['CompactRaidFrameManagerDisplayFrame'..button]:EnableMouse(false)
-end
-
--- Now all the solo stuff
-oUF:RegisterStyle('oUF_Lanerra', Stylish)
-oUF:Factory(function(self)
- self:SetActiveStyle('oUF_Lanerra')
- self:Spawn('player', 'oUF_Lanerra_Player'):SetPoint(unpack(Settings.Units.Player.Position))
- self:Spawn('target', 'oUF_Lanerra_Target'):SetPoint(unpack(Settings.Units.Target.Position))
- self:Spawn('targettarget', 'oUF_Lanerra_ToT'):SetPoint(unpack(Settings.Units.ToT.Position))
- self:Spawn('pet', 'oUF_Lanerra_Pet'):SetPoint(unpack(Settings.Units.Pet.Position))
- self:Spawn('focus', 'oUF_Lanerra_Focus'):SetPoint(unpack(Settings.Units.Focus.Position))
-end)
-
--- Handling, whether the Raid- or the Party-frame is shown
--- FIX: Quick'n'dirty fix until the oUF-conditions work again
-local partyToggle = CreateFrame('Frame')
-partyToggle:RegisterEvent('PLAYER_LOGIN')
-partyToggle:RegisterEvent('RAID_ROSTER_UPDATE')
-partyToggle:RegisterEvent('PARTY_LEADER_CHANGED')
-partyToggle:RegisterEvent('PARTY_MEMBERS_CHANGED')
-partyToggle:SetScript('OnEvent', function(self)
- if(InCombatLockdown()) then
- self:RegisterEvent('PLAYER_REGEN_ENABLED')
- else
- self:UnregisterEvent('PLAYER_REGEN_ENABLED')
-
- --[[ This results in the following behavior: If you're in a raid, the party frame will be hidden, no matter how many members
- your raid already has. This means, the party will be hidden if the party leader clicks the button to create a raid.
- If you want to switch to raid view later (meaning, if the members no longer fit into the party frame), you may change the following line accordingly.--]]
-
- if (Settings.Units.Raid.Healer) and (Settings.Units.Party.Healer) then
- if(GetNumRaidMembers() > 0) then
- _G['oUF_Lanerra_Group']:Hide()
- _G['oUF_Lanerra_Raid']:Show()
- else
- _G['oUF_Lanerra_Group']:Show()
- _G['oUF_Lanerra_Raid']:Hide()
- end
- else
- if(GetNumRaidMembers() > 0) then
- _G['oUF_Lanerra_Group']:Hide()
- _G['oUF_Lanerra_Raid1']:Show()
- _G['oUF_Lanerra_Raid2']:Show()
- _G['oUF_Lanerra_Raid3']:Show()
- _G['oUF_Lanerra_Raid4']:Show()
- _G['oUF_Lanerra_Raid5']:Show()
- else
- _G['oUF_Lanerra_Group']:Show()
- _G['oUF_Lanerra_Raid1']:Hide()
- _G['oUF_Lanerra_Raid2']:Hide()
- _G['oUF_Lanerra_Raid3']:Hide()
- _G['oUF_Lanerra_Raid4']:Hide()
- _G['oUF_Lanerra_Raid5']:Hide()
- end
- end
- end
-end)
+end)
\ No newline at end of file
diff --git a/oUF_Lanerra_Config.lua b/oUF_Lanerra_Config.lua
index dfe0471..b4c3d24 100644
--- a/oUF_Lanerra_Config.lua
+++ b/oUF_Lanerra_Config.lua
@@ -127,133 +127,4 @@ Settings = {
InterruptColor = {1, 0, 1},
},
},
-}
--- Copyright 2010-2011 Lanerra. See LICENSE file for license terms.
-Settings = {
- Show = {
- CastBars = true,
- Focus = true,
- ToT = true,
- Party = true,
- Raid = true,
- },
- Media = {
- Border = 'Interface\\Addons\\oUF_Lanerra\\media\\borderTexture.tga',
- StatusBar = 'Interface\\Addons\\oUF_Lanerra\\media\\statusbarTexture.tga',
- Font = 'Interface\\Addons\\oUF_Lanerra\\media\\font.ttf',
- FontSize = 15,
- BorderSize = 14,
- BorderColor = { 0.65, 0.65, 0.65 },
- BackdropColor = { 0, 0, 0, 0.75 },
- BorderPadding = 4
- },
- Units = {
- Player = {
- Height = 30,
- Width = 200,
- Position = {'CENTER', UIParent, -325, -175},
- Health = {
- Percent = false,
- Deficit = false,
- Current = true,
- },
- ShowPowerText = true,
- ShowBuffs = false,
- },
- Pet = {
- Height = 30,
- Width = 80,
- Position = {'CENTER', UIParent, -485, -175},
- Health = {
- Percent = false,
- Deficit = false,
- Current = false,
- },
- },
- Target = {
- Height = 30,
- Width = 200,
- Position = {'CENTER', UIParent, 325, -175},
- Health = {
- Percent = true,
- Deficit = false,
- Current = false,
- PerCur = false,
- },
- ShowPowerText = true,
- },
- ToT = {
- Height = 30,
- Width = 80,
- Position = {'CENTER', UIParent, 485, -175},
- Health = {
- Percent = false,
- Deficit = false,
- Current = false,
- },
- },
- Focus = {
- Height = 30,
- Width = 30,
- Position = {'CENTER', UIParent, 0, -175},
- Health = {
- Percent = false,
- Deficit = false,
- Current = false,
- },
- VerticalHealth = true,
- },
- Party = {
- Height = 20,
- Width = 100,
- TinyPosition = {'TOPLEFT', UIParent, 25, -210},
- Position = {'TOPLEFT', UIParent, 25, -25},
- Health = {
- Percent = true,
- Deficit = false,
- Current = false,
- ClassColor = true,
- },
- HidePower = true, -- Reserved for future use
- Healer = true,
- },
- Raid = {
- Height = 18,
- Width = 100,
- TinyPosition = {'TOPLEFT', UIParent, 25, -210},
- Position = {'TOPLEFT', UIParent, 25, -25},
- Health = {
- Percent = false,
- Deficit = true,
- Current = false,
- ClassColor = true,
- },
- HidePower = true, -- Reserved for future use
- Healer = true, -- If true, overrides height and width in this section and gets set to a static amount
- },
- },
- CastBars = {
- Player = {
- Show = true,
- Height = 25,
- Width = 200,
- Scale = 1,
- Position = {'CENTER', UIParent, -325, -232},
- ClassColor = false,
- SafeZone = true,
- Latency = false,
- Color = {.25, .25, .25},
- },
- Target = {
- Show = true,
- Height = 25,
- Width = 200,
- Scale = 1,
- Position = {'CENTER', UIParent, 325, -232},
- ClassColor = false,
- Color = {.25, .25, .25},
- InterruptHighlight = false,
- InterruptColor = {1, 0, 1},
- },
- },
}
\ No newline at end of file