Thread Tools Display Modes
10-22-18, 09:56 PM   #1
Dwnldedskill
A Kobold Labourer
AddOn Compiler - Click to view compilations
Join Date: Nov 2008
Posts: 1
Trying to update an old layout

Hi -

I've been trying in my spare time for my own learning and to be helpful, to update QulightUI. This was originally using a VERY old version of oUF embedded with a few patches to fix stuff over the years, rather than updating whole hog.

The new version of oUF is now embedded, and the layout loads as expected. However, I am now trying to clean up a number of items, the most important of which is that the health bars on the layout don't update. You can see the health percentages and values change in the text, but the bar texture doesn't want to update. I have looked at examples from Zork and others, but I am at a loss.

I have significant experience with other languages but I would consider myself a novice LUA coder at best. The layout I have been working on is below. I see that it appears as though it's configured for frequent updates in tinspect in game, but the "SetValue, SetValue_, and ForceUpdate functions say N/A, which I think might be a problem. I am used to debugging C# mainly, and I don't have a good grasp of efficient debugging for LUA.

Edit: I can post a zip of the whole thing if that is helpful as well. Basically all of the addons that are used for the UI are loaded as modules from within. It doesn't use the stand alone oUF.

Code:
local addon, ns = ...
local cast = ns.cast
local _, playerClass = UnitClass("player")
local cast = CreateFrame("Frame")  
local oUF = ns.oUF or oUF
oUF.colors.runes = {{0.87, 0.12, 0.23};{0.40, 0.95, 0.20};{0.14, 0.50, 1};{.70, .21, 0.94};}
UIParentLoadAddOn('Blizzard_DebugTools')
--------------------------------------------------------------------------------------
highlight_texture = "Interface\\AddOns\\QulightUI\\Root\\Media\\raidbg"
fontsymbol = "Interface\\AddOns\\QulightUI\\Root\\Media\\symbol.ttf"
--------------------------------------------------------------------------------------
local fixStatusbar = function(bar)
    bar:GetStatusBarTexture():SetHorizTile(false)
    bar:GetStatusBarTexture():SetVertTile(false)
end
local retVal = function(f, val1, val2, val3, val4)
	if f.mystyle == "player" or f.mystyle == "target" then
		return val1
	elseif f.mystyle == "focus" then
		return val3
	elseif f.mystyle == "oUF_MT" then
		return val4
	else
		return val2
	end
end
menu = function(self)
    local unit = self.unit:sub(1, -2)
    local unit = self.unit:sub(1, -2)
    local cunit = self.unit:gsub("(.)", string.upper, 1)
    if(unit == "party" or unit == "partypet") then
		ToggleDropDownMenu(1, nil, _G["PartyMemberFrame"..self.id.."DropDown"], "cursor", 0, 0)
    elseif(_G[cunit.."FrameDropDown"]) then
		ToggleDropDownMenu(1, nil, _G[cunit.."FrameDropDown"], "cursor", 0, 0)
    end
end
init = function(f)
    f.menu = menu
    f:RegisterForClicks("AnyDown")
	f:SetAttribute("*type1", "target")
    f:SetAttribute("*type2", "menu")
    f:SetScript("OnEnter", UnitFrame_OnEnter)
    f:SetScript("OnLeave", UnitFrame_OnLeave)
end
--UpdateReputationColor = function(self, event, unit, bar)
--	local name, id = GetWatchedFactionInfo()
--	bar:SetStatusBarColor(FACTION_BAR_COLORS[id].r, FACTION_BAR_COLORS[id].g, FACTION_BAR_COLORS[id].b)
--end
gen_fontstring = function(f, name, size, outline)
    local fs = f:CreateFontString(nil, "OVERLAY")
    fs:SetFont(name, size, "OUTLINE")
    return fs
end
PortraitUpdate = function(self, unit) 

	self:SetAlpha(0) self:SetAlpha(0.3)
	--if self:GetModel() and self:GetModel().find and self:GetModel():find("worgenmale") then
	--	self:SetCamera(1)
	--end	
end	
HidePortrait = function(self, unit)
	if self.unit == "target" then
		if not UnitExists(self.unit) or not UnitIsConnected(self.unit) or not UnitIsVisible(self.unit) then
			self.Portrait:SetAlpha(0)
		else
			self.Portrait:SetAlpha(1)
		end
	end
end
local channelingTicks = {
	-- warlock
--	[GetSpellInfo(689)] = 5, -- drain life
	[GetSpellInfo(5740)] = 4, -- rain of fire
	-- druid
	[GetSpellInfo(740)] = 4, -- Tranquility
	-- priest
	[GetSpellInfo(15407)] = 3, -- mind flay
--	[GetSpellInfo(48045)] = 5, -- mind sear
	[GetSpellInfo(47540)] = 2, -- penance
	-- mage
	[GetSpellInfo(5143)] = 5, -- arcane missiles
	[GetSpellInfo(12051)] = 4, -- evocation
}
local ticks = {}
cast.setBarTicks = function(castBar, ticknum)
	if ticknum and ticknum > 0 then
		local delta = castBar:GetWidth() / ticknum
		for k = 1, ticknum do
			if not ticks[k] then
				ticks[k] = castBar:CreateTexture(nil, 'OVERLAY')
				ticks[k]:SetTexture(Qulight["media"].texture)
				ticks[k]:SetVertexColor(0, 0, 0)
				ticks[k]:SetWidth(1)
				ticks[k]:SetHeight(castBar:GetHeight())
			end
			ticks[k]:ClearAllPoints()
			ticks[k]:SetPoint("CENTER", castBar, "LEFT", delta * k, 0 )
			ticks[k]:Show()
		end
	else
		for k, v in pairs(ticks) do
			v:Hide()
		end
	end
end
cast.OnCastbarUpdate = function(self, elapsed)
	local currentTime = GetTime()
	if self.casting or self.channeling then
		local parent = self:GetParent()
		local duration = self.casting and self.duration + elapsed or self.duration - elapsed
		if (self.casting and duration >= self.max) or (self.channeling and duration <= 0) then
			self.casting = nil
			self.channeling = nil
			return
		end
		if parent.unit == 'player' and parent.unit == 'party' then
			if self.delay ~= 0 then
				self.Time:SetFormattedText('%.1f | |cffff0000%.1f|r', duration, self.casting and self.max + self.delay or self.max - self.delay)
			else
				self.Time:SetFormattedText('%.1f | %.1f', duration, self.max)
				self.Lag:SetFormattedText("%d ms", self.SafeZone.timeDiff * 1000)
			end
		else
			self.Time:SetFormattedText('%.1f | %.1f', duration, self.casting and self.max + self.delay or self.max - self.delay)
		end
		self.duration = duration
		self:SetValue(duration)
		self.Spark:SetPoint('CENTER', self, 'LEFT', (duration / self.max) * self:GetWidth(), 0)
	else
		self.Spark:Hide()
		local alpha = self:GetAlpha() - 0.02
		if alpha > 0 then
			self:SetAlpha(alpha)
		else
			self.fadeOut = nil
			self:Hide()
		end
	end
end
cast.OnCastSent = function(self, event, unit, spell, rank)
	if self.unit ~= unit or not self.Castbar.SafeZone then return end
	self.Castbar.SafeZone.sendTime = UnitCastingInfo(unit)
end
cast.PostCastStart = function(self, unit, name, rank, text)
	local pcolor = {255/255, 128/255, 128/255}
	local interruptcb = {95/255, 182/255, 255/255}
	self:SetAlpha(1.0)
	self.Spark:Show()
	self:SetStatusBarColor(unpack(self.casting and self.CastingColor or self.ChannelingColor))
	if unit == "player" then
		local _, _, _, lag = GetNetStats()
		local sf = self.SafeZone
		sf.timeDiff = GetTime() - 0
		sf.timeDiff = sf.timeDiff > self.max and self.max or sf.timeDiff
		sf:SetWidth(self:GetWidth() * sf.timeDiff / self.max)
		sf:Show()
		if self.casting then
			cast.setBarTicks(self, 0)
		else
			local spell = UnitChannelInfo(unit)
			self.channelingTicks = channelingTicks[spell] or 0
			cast.setBarTicks(self, self.channelingTicks)
		end
	elseif (unit == "target" or unit == "focus") and not self.interrupt then
		self:SetStatusBarColor(interruptcb[1],interruptcb[2],interruptcb[3],1)
	else
		self:SetStatusBarColor(pcolor[1], pcolor[2], pcolor[3],1)
	end	
end

cast.PostCastStop = function(self, unit, name, rank, castid)
	if not unit == "party" then
	if not self.fadeOut then 
		self:SetStatusBarColor(unpack(self.CompleteColor))
		self.fadeOut = true
	end
	self:SetValue(self.max)
	self:Show()
	end
end
cast.PostChannelStop = function(self, unit, name, rank)
	self.fadeOut = true
	self:SetValue(0)
	self:Show()
end
cast.PostCastFailed = function(self, event, unit, name, rank, castid)
	self:SetStatusBarColor(unpack(self.FailColor))
	self:SetValue(self.max)
	if not self.fadeOut then
		self.fadeOut = true
	end
	self:Show()
end

	UpdateShadowOrb = function(self, event, unit, powerType)
	if self.unit ~= unit or (powerType and powerType ~= "SHADOW_ORBS") then return end
	local num = UnitPower(unit, SPELL_POWER_SHADOW_ORBS)
	local numMax = UnitPowerMax("player", SPELL_POWER_SHADOW_ORBS)
	local barWidth = self.ShadowOrbsBar:GetWidth()
	local spacing = select(4, self.ShadowOrbsBar[4]:GetPoint())
	local lastBar = 0

	if numMax ~= self.ShadowOrbsBar.maxPower then
		if numMax == 3 then
			self.ShadowOrbsBar[4]:Hide()
			self.ShadowOrbsBar[5]:Hide()
			for i = 1, 3 do
				if i ~= 3 then
					self.ShadowOrbsBar[i]:SetWidth(barWidth / 3)
					lastBar = lastBar + (barWidth / 3 + spacing)
				else
					self.ShadowOrbsBar[i]:SetWidth(barWidth - lastBar)
				end
			end
		else
			self.ShadowOrbsBar[4]:Show()
			self.ShadowOrbsBar[5]:Show()
			for i = 1, 5 do
				self.ShadowOrbsBar[i]:SetWidth(self.ShadowOrbsBar[i].width)
			end
		end
		self.ShadowOrbsBar.maxPower = numMax
	end

	for i = 1, 5 do
		if i <= num then
			self.ShadowOrbsBar[i]:SetAlpha(1)
		else
			self.ShadowOrbsBar[i]:SetAlpha(0.2)
		end
	end
end

do
	UpdateHoly = function(self, event, unit, powerType)
	if self.unit ~= unit or (powerType and powerType ~= "HOLY_POWER") then return end
	local num = UnitPower(unit, SPELL_POWER_HOLY_POWER)
	local numMax = UnitPowerMax("player", SPELL_POWER_HOLY_POWER)
	local barWidth = self.HolyPower:GetWidth()
	local spacing = select(4, self.HolyPower[4]:GetPoint())
	local lastBar = 0

	if numMax ~= self.HolyPower.maxPower then
		if numMax == 3 then
			self.HolyPower[4]:Hide()
			self.HolyPower[5]:Hide()
			for i = 1, 3 do
				if i ~= 3 then
					self.HolyPower[i]:SetWidth(barWidth / 3)
					lastBar = lastBar + (barWidth / 3 + spacing)
				else
					self.HolyPower[i]:SetWidth(barWidth - lastBar)
				end
			end
	else
			self.HolyPower[4]:Show()
			self.HolyPower[5]:Show()
			for i = 1, 5 do
				self.HolyPower[i]:SetWidth((self.HolyPower:GetWidth() -4 )/5)
			end
		end
		self.HolyPower.maxPower = numMax
	end

		for i = 1, 5 do
			if i <= num then
				self.HolyPower[i]:SetAlpha(1)
			else
				self.HolyPower[i]:SetAlpha(0.2)
			end
		end
	end
			
	ComboDisplay = function(self, event, unit)
if powerType and powerType ~= 'COMBO_POINTS' then return end
	if unit == "pet" then return end

	local cpoints = self.CPoints
	local cp = (UnitHasVehicleUI("player") or UnitHasVehicleUI("vehicle")) and UnitPower("vehicle", 4) or UnitPower("player", 4)
	local cpOld = (UnitHasVehicleUI("player") or UnitHasVehicleUI("vehicle")) and GetComboPoints("vehicle", "target") or GetComboPoints("player", "target")
	if cpOld and cp and (cpOld > cp) then cp = cpOld end

	local numMax
	if (UnitHasVehicleUI("player") or UnitHasVehicleUI("vehicle")) then
		numMax = MAX_COMBO_POINTS
	else
		numMax = UnitPowerMax("player", Enum.PowerType.ComboPoints)
		if numMax == 0 then
			numMax = MAX_COMBO_POINTS
		end
	end

	local spacing = select(4, cpoints[5]:GetPoint())
	local w = cpoints:GetWidth()
	local s = 0

	if cpoints.numMax ~= numMax then
		if numMax == 6 then
			cpoints[6]:Show()
		else
			cpoints[6]:Hide()
		end
		
		for i = 1, numMax do
			if i ~= numMax then
				cpoints[i]:SetWidth(w / numMax - spacing)
				s = s + (w / numMax)
			else
				cpoints[i]:SetWidth(w - s)
			end
		end

		cpoints.numMax = numMax
	end

		for i = 1, numMax do
			if i <= cp then
				cpoints[i]:SetAlpha(1)
			else
				cpoints[i]:SetAlpha(0.2)
			end
		end
		if playerClass == "DRUID" then
			local form = GetShapeshiftFormID()

			if form == CAT_FORM or ((UnitHasVehicleUI("player") or UnitHasVehicleUI("vehicle")) and cp > 0) then
				cpoints:Show()
				if self.Debuffs then self.Debuffs:SetPoint("BOTTOMRIGHT", self, "TOPRIGHT", 2, 19) end
			else
				cpoints:Hide()
				if self.Debuffs then self.Debuffs:SetPoint("BOTTOMRIGHT", self, "TOPRIGHT", 2, 5) end
			end
		end
	end
end

function AltPowerBarOnToggle(self)
	local unit = self:GetParent().unit or self:GetParent():GetParent().unit					
end
function AltPowerBarPostUpdate(self, min, cur, max)
	local perc = (cur and max and max > 0) and floor((cur/max)*100) or 0
	if perc < 35 then
		self:SetStatusBarColor(0, 1, 0)
	elseif perc < 70 then
		self:SetStatusBarColor(1, 1, 0)
	else
		self:SetStatusBarColor(1, 0, 0)
	end	
	local unit = self:GetParent().unit or self:GetParent():GetParent().unit	
	local type = select(10, UnitAlternatePowerInfo(unit))
end	
gen_hpbar = function(f) 
    local s = CreateFrame("StatusBar", nil, f)
    s:SetStatusBarTexture(Qulight["media"].texture)
	s:GetStatusBarTexture():SetHorizTile(true)
	s.Smooth = true
	s:SetAllPoints()
	fixStatusbar(s)
	s:SetHeight(retVal(f,42,28,34,22))
	if not Qulight["unitframes"].HealthcolorClass then
	s:SetStatusBarColor(.09,.09,.09,1) -- HealthBar Transparensy
	end
    s:SetWidth(f:GetWidth())
    s:SetPoint("TOP",0,0)
    local h = CreateFrame("Frame", nil, s)
    h:SetFrameLevel(0)
    h:SetPoint("TOPLEFT",-5,5)
	if f.mystyle == "target" or f.mystyle == "player" then
		h:SetPoint("BOTTOMRIGHT",5,-5)
	elseif f.mystyle == "raid" then
		h:SetPoint("BOTTOMRIGHT",5,-5)
	else
		h:SetPoint("BOTTOMRIGHT",5,-5)
	end
	CreateStyle(h, -1)
    local b = s:CreateTexture(nil, "BACKGROUND")
    b:SetTexture(Qulight["media"].texture)
	b:SetVertexColor(.5,.5,.5,.9)
	b:ClearAllPoints()
    b:SetAllPoints(s)
	s.bg = b
	s.frequentUpdates = 0.1
	f.Health = s
end
gen_hpstrings = function(f)
	-- Change Font and Coord name on unitframe
    local name = gen_fontstring(f.Health, Qulight["media"].font, 12, retVal(f,17,12,12,15), "OUTLINE")
    name:SetPoint("LEFT", f.Health, "TOPLEFT", retVal(f,2,1,1,1), retVal(f,-19,-11,-15,-10))
    name:SetJustifyH("LEFT")
	-- Change Font and Coord health on unitframe
    local hpval = gen_fontstring(f.Health, Qulight["media"].font, 11, retVal(f,17,12,10,12), "OUTLINE")
    hpval:SetPoint("RIGHT", f.Health, "TOPRIGHT", retVal(f,0,-3,-1,-3), retVal(f,-7,-11,-15,-9))
    hpval.frequentUpdates = 0.1
	
	if f.mystyle == "player" then
		f:Tag(name, "[color][namelong][afk]")
	elseif f.mystyle == "target" then
		f:Tag(name, "[color][namelong][afk]")
	elseif f.mystyle == "focus" then	
		f:Tag(name, "[color][namelong][afk]")
	else
		f:Tag(name, "[color][nameshort]")
	end
	f:Tag(hpval, retVal(f,"[hp][color]","","[hp][color]","[hp][color]"))
	
	local per = f.Health:CreateFontString(nil, "OVERLAY")
	per:SetPoint("RIGHT", 0, retVal(f, 4, 4, -3, -3))
	per:SetFont(Qulight["media"].font, 9, "OUTLINE")
	f:Tag(per, retVal(f,'[color][power] | [perpp]%','[hp]','','' ))		
end
gen_ppbar = function(f)
    local s = CreateFrame("StatusBar", nil, f)
    s:SetStatusBarTexture(Qulight["media"].texture)
	s:GetStatusBarTexture():SetHorizTile(true)
	fixStatusbar(s)
	s.Smooth = true
	s:SetHeight(retVal(f,4,4,4,4))
	s:SetFrameLevel(4)
    s:SetPoint("BOTTOM",UIParent,"BOTTOM",0,1)
	
	if f.mystyle == "player" then
		s:SetPoint("BOTTOM",f,"BOTTOM", 0, 0)
		s:SetWidth(212)
	end
	if f.mystyle == "target" then
		s:SetPoint("BOTTOM",f,"BOTTOM", 0, 0)
		s:SetWidth(212)
	end
	if f.mystyle == "focus" then
		s:SetPoint("BOTTOM",f,"BOTTOM",0,4)
		s:SetWidth(172)
	end
	if f.mystyle == "oUF_MT" then
		s:SetPoint("BOTTOM",f,"BOTTOM",0,4)
		s:SetWidth(92)
	end
	if f.mystyle == "boss" then
		s:SetPoint("BOTTOM",f,"BOTTOM",0,4)
		s:SetWidth(142)
	end
	if f.mystyle == "oUF_Arena" then
		s:SetPoint("BOTTOM",f,"BOTTOM",0,4)
		s:SetWidth(142)
	end
	if f.mystyle == "pet" then
		s:SetPoint("BOTTOM",f,"BOTTOM",0,4)
		s:SetWidth(92)
	end
	if f.mystyle == "tot" then
		s:SetPoint("BOTTOM",f,"BOTTOM",0,4)
		s:SetWidth(92)
	end
	if f.mystyle == "focustarget" then
		s:SetPoint("BOTTOM",f,"BOTTOM",0,4)
		s:SetWidth(92)
	end
	
	local h = CreateFrame("Frame", nil, s)
	h:SetPoint("TOPLEFT",-5,5)
	h:SetPoint("BOTTOMRIGHT",5,-5)
	h:SetFrameLevel(3)
	CreateStyle(h, -1, 4, .9, 0.6)
    
	local b = s:CreateTexture(nil, "BACKGROUND")
    b:SetTexture(Qulight["media"].texture)
    b:SetAllPoints(s)
    f.Power = s
    f.Power.bg = b
end

gen_focusbar = function(f)
  --[[  local s1 = CreateFrame("StatusBar", nil, f)
    s1:SetStatusBarTexture(Qulight["media"].texture)
	s1:GetStatusBarTexture():SetHorizTile(true)
	fixStatusbar(s1)
	s1.Smooth = true
	s1:SetHeight(4)
	s1:SetFrameLevel(4)
    s1:SetPoint("BOTTOM", UIParent,"BOTTOM",0,1)
	local h = CreateFrame("Frame", nil, s1)
	s1:SetPoint("BOTTOM",UIParent,"BOTTOM", 0, 330)
	h:SetFrameLevel(3)
	s1:SetWidth(212)
	h:SetPoint("TOPLEFT",-5,5)
	h:SetPoint("BOTTOMRIGHT",5,-5)
	CreateShadow00(h)

    local b1 = s1:CreateTexture(nil, "BACKGROUND")
    b1:SetTexture(Qulight["media"].texture)
    b1:SetAllPoints(s1)
    f.Power = s1
    f.Power.bg = b1 --]]
end
gen_portrait = function(f)
	local portrait = CreateFrame("PlayerModel", nil, f)
	portrait.PostUpdate = function(f) f:SetAlpha(0) f:SetAlpha(1) end 
	portrait:SetAllPoints(f.Health)
	table.insert(f.__elements, HidePortrait)
	portrait.PostUpdate = PortraitUpdate
	f.Portrait = portrait
	
	local overlay = CreateFrame("Frame", nil, f)
	overlay:SetFrameLevel(2)
	
	bg = f.Health:CreateTexture(nil, 'BORDER')
	bg:SetAllPoints()
	bg:SetTexture(Qulight["media"].texture)
	bg:SetVertexColor(.4,.4,.4,1)			
	bg:ClearAllPoints()
	bg:SetPoint('BOTTOMLEFT', f.Health:GetStatusBarTexture(), 'BOTTOMRIGHT')
	bg:SetPoint('TOPRIGHT', f.Health)
	bg:SetDrawLayer("OVERLAY")
	bg:SetParent(overlay)
end
gen_InfoIcons = function(f)
    local h = CreateFrame("Frame",nil,f)
    h:SetAllPoints(f)
    h:SetFrameLevel(10)
    if f.mystyle == 'player' then
      f.Combat = h:CreateTexture(nil, 'OVERLAY')
      f.Combat:SetSize(12,12)
      f.Combat:SetPoint('BOTTOMRIGHT', -4, 5)
      f.Combat:SetTexture('Interface\\CharacterFrame\\UI-StateIcon')
      f.Combat:SetTexCoord(0.58, 0.90, 0.08, 0.41)
    end
  
    li = h:CreateTexture(nil, "OVERLAY")
    li:SetPoint("TOPLEFT", f, 0, 8)
    li:SetSize(10,10)
    f.Leader = li
    ai = h:CreateTexture(nil, "OVERLAY")
    ai:SetPoint("TOPLEFT", f, 0, 8)
    ai:SetSize(10,10)
    f.Assistant = ai
    local ml = h:CreateTexture(nil, 'OVERLAY')
    ml:SetSize(8,8)
    ml:SetPoint('LEFT', f.Leader, 'RIGHT')
    f.MasterLooter = ml
end
addPhaseIcon = function(self)
	local picon = self.Health:CreateTexture(nil, 'OVERLAY')
	picon:SetPoint('TOPRIGHT', self, 'TOPRIGHT', 40, 8)
	picon:SetSize(12, 12)
	self.PhaseIcon = picon
end
addQuestIcon = function(self)
	local qicon = self.Health:CreateTexture(nil, 'OVERLAY')
	qicon:SetPoint('TOPLEFT', self, 'TOPLEFT', 0, 8)
	qicon:SetSize(12, 12)
	self.QuestIndicator = qicon
end
gen_RaidMark = function(f)
    local h = CreateFrame("Frame", nil, f)
    h:SetAllPoints(f)
    h:SetFrameLevel(10)
    h:SetAlpha(0.8)
    local ri = h:CreateTexture(nil,'OVERLAY',h)
    ri:SetPoint("CENTER", f, "TOP", 0, 2)
	local size = retVal(f, 12, 11, 9, 11)
	ri:SetTexture("Interface\\AddOns\\QulightUI\\Root\\Media\\raidicons")
    ri:SetSize(size, size)
    f.RaidIcon = ri
end
gen_highlight = function(f)
    local OnEnter = function(f)
		UnitFrame_OnEnter(f)
		f.Highlight:Show()
    end
    local OnLeave = function(f)
      UnitFrame_OnLeave(f)
      f.Highlight:Hide()
    end
    f:SetScript("OnEnter", OnEnter)
    f:SetScript("OnLeave", OnLeave)
    local hl = f.Health:CreateTexture(nil, "OVERLAY")
    hl:SetAllPoints(f.Health)
    hl:SetTexture(highlight_texture)
    hl:SetVertexColor(.5,.5,.5,.1)
    hl:SetBlendMode("ADD")
    hl:Hide()
    f.Highlight = hl
end
function CreateTargetBorder(self)
	local glowBorder = {edgeFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeSize = 1}
	self.TargetBorder = CreateFrame("Frame", nil, self)
	self.TargetBorder:SetPoint("TOPLEFT", self, "TOPLEFT", -1, 1)
	self.TargetBorder:SetPoint("BOTTOMRIGHT", self, "BOTTOMRIGHT", 1, -1)
	self.TargetBorder:SetBackdrop(glowBorder)
	self.TargetBorder:SetFrameLevel(2)
	self.TargetBorder:SetBackdropBorderColor(.7,.7,.7,1)
	self.TargetBorder:Hide()
end
function ChangedTarget(self, event, unit)
	if UnitIsUnit('target', self.unit) then
		self.TargetBorder:Show()
	else
		self.TargetBorder:Hide()
	end
end
gen_castbar = function(f)
	if not Qulight["unitframes"].Castbars then return end
	local cbColor = {.15,.15,.15}
    local s = CreateFrame("StatusBar", "oUF_Castbar"..f.mystyle, f)
    s:SetHeight(13)
    s:SetWidth(f:GetWidth()-22)
	if f.mystyle == "focus" then
		s:SetWidth(158)
	end
    if f.mystyle == "player" then
		s:SetHeight(15)
		s:SetWidth(200)
		s:SetPoint("TOP", f, "TOP", 10,20)
    elseif f.mystyle == "target" then
	    s:SetHeight(15)
		s:SetWidth(200)
		s:SetPoint("TOP", f, "TOP", -10,20)
	elseif f.mystyle == "focus" then
		s:SetWidth(f:GetWidth()-18)
        s:SetPoint("BOTTOM", Anchorfocuscastbar)
    end
	if f.mystyle == "boss"  then
	    s:SetHeight(10)
        s:SetWidth(135)
	    s:SetPoint("TOPRIGHT",f,"BOTTOMRIGHT",0,-6)
	end
	
    s:SetStatusBarTexture(Qulight["media"].texture)
    s:SetStatusBarColor(.15,.15,.15,1)
	s.colorClass = true
    s:SetFrameLevel(1)
    s.CastingColor = cbColor
    s.CompleteColor = {20/255, 208/255, 0/255}
    s.FailColor = {255/255, 12/255, 0/255}
    s.ChannelingColor = cbColor
    local h = CreateFrame("Frame", nil, s)
    h:SetFrameLevel(0)
    h:SetPoint("TOPLEFT",-5,5)
    h:SetPoint("BOTTOMRIGHT",5,-5)
	CreateStyle(h, -1)
    sp = s:CreateTexture(nil, "OVERLAY")
    sp:SetBlendMode("ADD")
    sp:SetAlpha(0.5)
    sp:SetHeight(s:GetHeight()*2.5)
    local txt = gen_fontstring(s, Qulight["media"].font, 10, "NONE")
    txt:SetPoint("LEFT", 2, 0)
    txt:SetJustifyH("LEFT")
    local t = gen_fontstring(s, Qulight["media"].font, 10, "NONE")
    t:SetPoint("RIGHT", -2, 0)
    txt:SetPoint("RIGHT", t, "LEFT", -5, 0)
    local i = s:CreateTexture(nil, "ARTWORK")
	i:SetSize(s:GetHeight(),s:GetHeight())
	
	if f.mystyle == "player" then
	i:SetPoint("RIGHT", s, "LEFT", -5, 0)
	elseif f.mystyle == "target" then
    i:SetPoint("LEFT", s, "RIGHT", 5, 0)
	else
	i:SetPoint("RIGHT", s, "LEFT", -5, 0)
	end
	    
    i:SetTexCoord(0.1, 0.9, 0.1, 0.9)
    local h2 = CreateFrame("Frame", nil, s)
    h2:SetFrameLevel(0)
    h2:SetPoint("TOPLEFT",i,"TOPLEFT",-5,5)
    h2:SetPoint("BOTTOMRIGHT",i,"BOTTOMRIGHT",5,-5)
	CreateStyle(h2, -1)
    if f.mystyle == "player" then
        local z = s:CreateTexture(nil,"OVERLAY")
        z:SetTexture(Qulight["media"].texture)
        z:SetVertexColor(1,0.1,0,.6)
        z:SetPoint("TOPRIGHT")
        z:SetPoint("BOTTOMRIGHT")
	    s:SetFrameLevel(10)
        s.SafeZone = z
        local l = gen_fontstring(s, Qulight["media"].font, 10, "OUTLINE")
        l:SetPoint("CENTER", -2, 17)
        l:SetJustifyH("RIGHT")
	    l:Hide()
        s.Lag = l
        f:RegisterEvent("CURRENT_SPELL_CAST_CHANGED", cast.OnCastSent)
    end
    s.OnUpdate = cast.OnCastbarUpdate
    s.PostCastStart = cast.PostCastStart
    s.PostChannelStart = cast.PostCastStart
    s.PostCastStop = cast.PostCastStop
    s.PostChannelStop = cast.PostChannelStop
    s.PostCastFailed = cast.PostCastFailed
    s.PostCastInterrupted = cast.PostCastFailed
	
    f.Castbar = s
    f.Castbar.Text = txt
    f.Castbar.Time = t
    f.Castbar.Icon = i
    f.Castbar.Spark = sp
end

gen_bigcastbar = function(f)
	if not Qulight["unitframes"].Castbars then return end
	local cbColor = {.15,.15,.15}
    local s = CreateFrame("StatusBar", "oUF_Castbar"..f.mystyle, f)
    s:SetHeight(13)
    s:SetWidth(f:GetWidth()-22)
	if f.mystyle == "focus" then
		s:SetWidth(158)
	end
    if f.mystyle == "player" then
		s:SetHeight(Qulight["unitframes"].heightbigcastbar)
		s:SetWidth(Qulight["unitframes"].widthbigcastbar)
		s:SetPoint("BOTTOM", Anchorplayercastbar, 14, 0)
    elseif f.mystyle == "target" then
	    s:SetHeight(18)
		s:SetWidth(f:GetWidth()-23)
	    s:SetPoint("BOTTOM", Anchortargetcastbar, 12, 0)
	elseif f.mystyle == "focus" then
		s:SetWidth(f:GetWidth()-18)
        s:SetPoint("BOTTOM", Anchorfocuscastbar)
    end
	if f.mystyle == "boss"  then
	    s:SetHeight(10)
        s:SetWidth(135)
	    s:SetPoint("TOPRIGHT",f,"BOTTOMRIGHT",0,-6)
	end
	
    s:SetStatusBarTexture(Qulight["media"].texture)
    s:SetStatusBarColor(.15,.15,.15,1)
    s:SetFrameLevel(1)
    s.CastingColor = cbColor
    s.CompleteColor = {20/255, 208/255, 0/255}
    s.FailColor = {255/255, 12/255, 0/255}
    s.ChannelingColor = cbColor
    local h = CreateFrame("Frame", nil, s)
    h:SetFrameLevel(0)
    h:SetPoint("TOPLEFT",-5,5)
    h:SetPoint("BOTTOMRIGHT",5,-5)
	CreateStyle(h, -1)
    sp = s:CreateTexture(nil, "OVERLAY")
    sp:SetBlendMode("ADD")
    sp:SetAlpha(0.5)
    sp:SetHeight(s:GetHeight()*2.5)
    local txt = gen_fontstring(s, Qulight["media"].font, 10, "NONE")
    txt:SetPoint("LEFT", 2, 0)
    txt:SetJustifyH("LEFT")
    local t = gen_fontstring(s, Qulight["media"].font, 10, "NONE")
    t:SetPoint("RIGHT", -2, 0)
    txt:SetPoint("RIGHT", t, "LEFT", -5, 0)
    local i = s:CreateTexture(nil, "ARTWORK")
    i:SetSize(s:GetHeight(),s:GetHeight())
	if f.mystyle == "target" then
		i:SetSize(s:GetHeight(),s:GetHeight())
	end
	
    i:SetPoint("RIGHT", s, "LEFT", -5, 0)
    i:SetTexCoord(0.1, 0.9, 0.1, 0.9)
    local h2 = CreateFrame("Frame", nil, s)
    h2:SetFrameLevel(0)
    h2:SetPoint("TOPLEFT",i,"TOPLEFT",-5,5)
    h2:SetPoint("BOTTOMRIGHT",i,"BOTTOMRIGHT",5,-5)
	CreateStyle(h2, -1)
    if f.mystyle == "player" then
        local z = s:CreateTexture(nil,"OVERLAY")
        z:SetTexture(Qulight["media"].texture)
        z:SetVertexColor(0.34,0.34,0.34,.6)
        z:SetPoint("TOPRIGHT")
        z:SetPoint("BOTTOMRIGHT")
	    s:SetFrameLevel(10)
        s.SafeZone = z
        local l = gen_fontstring(s, Qulight["media"].font, 10, "OUTLINE")
        l:SetPoint("CENTER", -2, 17)
        l:SetJustifyH("RIGHT")
	    l:Hide()
        s.Lag = l
        f:RegisterEvent("CURRENT_SPELL_CAST_CHANGED", cast.OnCastSent)
    end
    s.OnUpdate = cast.OnCastbarUpdate
    s.PostCastStart = cast.PostCastStart
    s.PostChannelStart = cast.PostCastStart
    s.PostCastStop = cast.PostCastStop
    s.PostChannelStop = cast.PostChannelStop
    s.PostCastFailed = cast.PostCastFailed
    s.PostCastInterrupted = cast.PostCastFailed
	
    f.Castbar = s
    f.Castbar.Text = txt
    f.Castbar.Time = t
    f.Castbar.Icon = i
    f.Castbar.Spark = sp
end
local formatTime = function(s)
	local day, hour, minute = 86400, 3600, 60
	if s >= day then
		return format("%dd", floor(s/day + 0.5)), s % day
	elseif s >= hour then
		return format("%dh", floor(s/hour + 0.5)), s % hour
	elseif s >= minute then
		return format("%dm", floor(s/minute + 0.5)), s % minute
	elseif s >= minute / 12 then
		return floor(s + 0.5), (s * 100 - floor(s * 100))/100
	end
	return format("%.1f", s), (s * 100 - floor(s * 100))/100
end
local setTimer = function (self, elapsed)
	if self.timeLeft then
		self.elapsed = (self.elapsed or 0) + elapsed
		if self.elapsed >= 0.1 then
			if not self.first then
				self.timeLeft = self.timeLeft - self.elapsed
			else
				self.timeLeft = self.timeLeft - GetTime()
				self.first = false
			end
			if self.timeLeft > 0 then
				local time = formatTime(self.timeLeft)
					self.time:SetText(time)
				if self.timeLeft < 5 then
					self.time:SetTextColor(1, 0.5, 0.5)
				else
					self.time:SetTextColor(.7, .7, .7)
				end
			else
				self.time:Hide()
				self:SetScript("OnUpdate", nil)
			end
			self.elapsed = 0
		end
	end
end
local postCreateIcon = function(element, button)
	local diffPos = 0
	local self = element:GetParent()
	if self.mystyle == "target" then diffPos = 1 end
	
	element.disableCooldown = true
	button.cd.noOCC = true
	button.cd.noCooldownCount = true
	
	local h = CreateFrame("Frame", nil, button)
	h:SetFrameLevel(0)
	h:SetPoint("TOPLEFT",-5,5)
	h:SetPoint("BOTTOMRIGHT",5,-5)
	CreateStyle(h, -1)
	
	if self.mystyle == "player" then
		local time = gen_fontstring(button, Qulight["media"].pxfont, 10, "OUTLINE")
		time:SetPoint("BOTTOM", button, "BOTTOM", 2, -4)
		time:SetJustifyH("CENTER")
		time:SetVertexColor(1,1,1)
		button.time = time
	else
		local time = gen_fontstring(button, Qulight["media"].pxfont, 10, "OUTLINE")
		time:SetPoint("BOTTOM", button, "BOTTOM", 2, -4)
		time:SetJustifyH("CENTER")
		time:SetVertexColor(1,1,1)
		button.time = time
	end
		
	local count = gen_fontstring(button, Qulight["media"].pxfont, 10, "OUTLINE")
	count:SetPoint("CENTER", button, "TOPRIGHT", 0, 0)
	count:SetJustifyH("RIGHT")
	button.count = count
		
	button.icon:SetTexCoord(0.08, 0.92, 0.08, 0.92)
	button.icon:SetDrawLayer("ARTWORK")
end
local postUpdateIcon = function(element, unit, button, index)
	local _, _, _, _, duration, expirationTime, unitCaster, _ = UnitAura(unit, index, button.filter)
	
	if duration and duration > 0 then
		button.time:Show()
		button.timeLeft = expirationTime	
		button:SetScript("OnUpdate", setTimer)			
	else
		button.time:Hide()
		button.timeLeft = math.huge
		button:SetScript("OnUpdate", nil)
	end

	if(button.debuff) then
		if(unit == "target") then	
			if (unitCaster == "player" or unitCaster == "vehicle") then
				button.icon:SetDesaturated(false)                 
			elseif(not UnitPlayerControlled(unit)) then -- If Unit is Player Controlled don"t desaturate debuffs
				button:SetBackdropColor(0, 0, 0)
				button.overlay:SetVertexColor(0.3, 0.3, 0.3)      
				button.icon:SetDesaturated(true)  
			end
		end
	end
	button:SetScript('OnMouseUp', function(self, mouseButton)
		if mouseButton == 'RightButton' then
			CancelUnitBuff('player', index)
	end end)
	button.first = true
end
createAuras = function(f)
	Auras = CreateFrame("Frame", nil, f)
	Auras.size = 18		
	Auras:SetHeight(42)
	Auras:SetWidth(f:GetWidth())
	Auras.spacing = 7
	if f.mystyle == "target" then
		Auras:SetPoint("BOTTOM", f, "BOTTOM", 0, -26)
		Auras.numBuffs = 10
		Auras.numDebuffs = 10
		Auras.size = 18	
		--Auras.onlyShowPlayer = true
		Auras.spacing = 4.4
	end
	if f.mystyle == "tot" then
		Auras:SetPoint("BOTTOM", f, "BOTTOM", 0, -16)
		Auras.numBuffs = 0
		Auras.numDebuffs = 5
		Auras.spacing = 10
		Auras.size = 12			
	end
	if f.mystyle == "focus" then
		Auras:SetPoint("TOPLEFT", f, "BOTTOMLEFT", 0, 20)
		Auras.numBuffs = 0
		Auras.numDebuffs = 7
		Auras.spacing = 9
	end
	Auras.gap = true
	Auras.initialAnchor = "BOTTOMLEFT"
	Auras["growth-x"] = "RIGHT"		
	Auras["growth-y"] = "DOWN"
	Auras.PostCreateIcon = postCreateIcon
	Auras.PostUpdateIcon = postUpdateIcon
	f.Auras = Auras
end
createBuffs = function(f)
    b = CreateFrame("Frame", nil, f)
	b.size = 20
    b.num = 40
    b.spacing = 8
    b.onlyShowPlayer = buffsOnlyShowPlayer
    b:SetHeight((b.size+b.spacing)*4)
    b:SetWidth(f:GetWidth())
    if f.mystyle == "target" then
	    b.num = 10
		b:SetPoint("TOP", f, "TOP", 0, 50)
		b.initialAnchor = "TOPLEFT"
		b["growth-x"] = "RIGHT"
		b["growth-y"] = "UP"
    elseif f.mystyle == "player" then
	    b.size = 28
		b.num = 60
		b:SetWidth(500)
		b:SetPoint("TOPRIGHT", UIParent,  -20, -20)
		b.initialAnchor = "TOPRIGHT"
		b["growth-x"] = "LEFT"
		b["growth-y"] = "DOWN"
	elseif f.mystyle == "boss" then
	    b.size = 28
		b:SetPoint("TOPRIGHT", f, "TOPLEFT", -8, 0)
		b.initialAnchor = "TOPRIGHT"
		b["growth-x"] = "LEFT"
		b["growth-y"] = "DOWN"
		b.num = 4
	elseif f.mystyle == "oUF_Arena" then
	    b.size = 28
		b:SetPoint("TOPRIGHT", f, "TOPLEFT", -8, 0)
		b.initialAnchor = "TOPRIGHT"
		b["growth-x"] = "LEFT"
		b["growth-y"] = "DOWN"
		b.num = 4		
	else
		b.num = 0
    end
    b.PostCreateIcon = postCreateIcon
    b.PostUpdateIcon = postUpdateIcon

    f.Buffs = b
end
createDebuffs = function(f)
    b = CreateFrame("Frame", nil, f)
    b.size = 20
	b.num = 6
	b.onlyShowPlayer = debuffsOnlyShowPlayer
    b.spacing = 5
    b:SetHeight((b.size+b.spacing)*4)
    b:SetWidth(f:GetWidth())
	if f.mystyle == "target" then
		b:SetPoint("TOP", f, "TOP", 0, 25)
		b.initialAnchor = "TOPLEFT"
		b["growth-x"] = "RIGHT"
		b["growth-y"] = "UP"
	elseif f.mystyle == "player" then
	    b.size = 30
		b:SetPoint("BOTTOM", f, "BOTTOM", 0, -39)
		b.initialAnchor = "BOTTOMLEFT"
		b["growth-x"] = "RIGHT"
		b["growth-y"] = "DOWN"
		b.spacing = 8
	elseif f.mystyle == "boss" then
	    b.size = 28
		b:SetPoint("TOPLEFT", f, "TOPRIGHT", 8, 0)
		b.initialAnchor = "TOPLEFT"
		b.onlyShowPlayer = true
		b["growth-x"] = "RIGHT"
		b["growth-y"] = "DOWN"
		b.num = 4
	elseif f.mystyle == "oUF_Arena" then
	    b.size = 28
		b:SetPoint("TOPLEFT", f, "TOPRIGHT", 8, 0)
		b.initialAnchor = "TOPLEFT"
		b.onlyShowPlayer = true
		b["growth-x"] = "RIGHT"
		b["growth-y"] = "DOWN"
		b.num = 4	
	else
		b.num = 0
	end
    b.PostCreateIcon = postCreateIcon
    b.PostUpdateIcon = postUpdateIcon

    f.Debuffs = b
end
addEclipseBar = function(self)
	if playerClass ~= "DRUID" then return end
	
	local bars = CreateFrame("Frame", nil, self)
	bars:SetPoint("TOPLEFT", self, "TOPLEFT",4,-3)
	bars:SetWidth(120)
	bars:SetHeight(6)
	bars:SetFrameLevel(6)
	bars:SetBackdropBorderColor(0,0,0,0)
	bars:SetBackdropColor(0,0,0,0)
		
	for i = 1, 10 do					
		bars[i] = CreateFrame("StatusBar", self:GetName().."_Combo"..i, bars)
		bars[i]:SetHeight(6)					
		bars[i]:SetStatusBarTexture(Qulight["media"].texture)
		bars[i]:GetStatusBarTexture():SetHorizTile(false)
							
		if i == 1 then
			bars[i]:SetPoint("LEFT", bars)
		else
			bars[i]:SetPoint("LEFT", bars[i-1], "RIGHT", 1, 0)
		end
		bars[i]:SetAlpha(0.15)
		bars[i]:SetWidth(((self:GetWidth()-100) - 4)/5)
	end
		
	bars[1]:SetStatusBarColor(0.69, 0.31, 0.31)		
	bars[2]:SetStatusBarColor(0.69, 0.31, 0.31)
	bars[3]:SetStatusBarColor(0.65, 0.63, 0.35)
	bars[4]:SetStatusBarColor(0.65, 0.63, 0.35)
	bars[5]:SetStatusBarColor(0.33, 0.59, 0.33)
	bars[6]:SetStatusBarColor(0.33, 0.59, 0.33)
	bars[7]:SetStatusBarColor(0.26, 0.55, 0.31)
	bars[8]:SetStatusBarColor(0.26, 0.55, 0.31)
	bars[9]:SetStatusBarColor(0.26, 0.55, 0.31)
	bars[10]:SetStatusBarColor(0.26, 0.55, 0.31)
		
	self.CPoints = bars
	if playerClass == "DRUID" then
		self:RegisterEvent("UPDATE_SHAPESHIFT_FORM", ComboDisplay)
	end
	self.CPoints.Override = ComboDisplayOld
		
	bars.FrameBackdrop = CreateFrame("Frame", nil, bars[1])
	
	CreateStyle(bars.FrameBackdrop, 2, 5, .9, 0.6)
	bars.FrameBackdrop:SetBackdropBorderColor(.2,.2,.2,1)
	bars.FrameBackdrop:SetPoint("TOPLEFT", bars, "TOPLEFT", -2, 2)
	bars.FrameBackdrop:SetPoint("BOTTOMRIGHT", bars, "BOTTOMRIGHT", 2, -2)
	bars.FrameBackdrop:SetFrameLevel(6)
end
genHolyPower = function(self)
	if playerClass ~= "PALADIN" then return end
	local bars = CreateFrame("Frame", nil, self)
	bars:SetPoint("TOPLEFT", self, "TOPLEFT", 4,-3)
	bars:SetWidth(self:GetWidth()-100)
	bars:SetHeight(6)
	bars:SetFrameLevel(6)

	for i = 1, 5 do					
		bars[i]=CreateFrame("StatusBar", nil, bars)
		bars[i]:SetHeight(bars:GetHeight())					
		bars[i]:SetStatusBarTexture(Qulight["media"].texture)
		bars[i]:GetStatusBarTexture():SetHorizTile(false)

		bars[i].bg = bars[i]:CreateTexture(nil, 'BORDER')
		bars[i]:SetStatusBarColor(228/255,225/255,16/255)
		bars[i].bg:SetTexture(228/255,225/255,16/255)
					
		if i == 1 then
			bars[i]:SetPoint("LEFT", bars)
		else
			bars[i]:SetPoint("LEFT", bars[i-1], "RIGHT", 1, 0)
		end
		
		bars[i].bg:SetAllPoints(bars[i])
		bars[i]:SetWidth((bars:GetWidth() - 2)/5)
		bars[i].bg:SetTexture(Qulight["media"].texture)					
		bars[i].bg:SetAlpha(.15)
	end
				
	CreateStyle(bars, 4, 5, .9, 0.6)
	bars.Override = UpdateHoly
	self.HolyPower = bars	
end
genRunes = function(self)
	if playerClass ~= "DEATHKNIGHT" then return end
	local runes = CreateFrame("Frame", nil, self)
	runes:SetPoint("TOPLEFT", self, "TOPLEFT",4,-3)
	runes:SetWidth(self:GetWidth()-100)
	runes:SetHeight(6)
	runes:SetFrameLevel(6)

	for i = 1, 6 do
		runes[i] = CreateFrame("StatusBar", nil, runes)
		runes[i]:SetHeight(runes:GetHeight())
		runes[i]:SetWidth((runes:GetWidth() - 5) / 6)

		if (i == 1) then
			runes[i]:SetPoint("LEFT", runes)
		else
			runes[i]:SetPoint("LEFT", runes[i-1], "RIGHT", 1, 0)
		end
		runes[i]:SetStatusBarTexture(Qulight["media"].texture)
		runes[i]:SetStatusBarColor(0.69, 0.31, 0.31)
		runes[i]:GetStatusBarTexture():SetHorizTile(false)
	end
				
	runes.backdrop = CreateFrame("Frame", nil, runes)
	
	CreateStyle(runes.backdrop, 2, 5, .9, 0.6)
	runes.backdrop:SetBackdropBorderColor(.2,.2,.2,1)
	runes.backdrop:SetPoint("TOPLEFT", -2, 2)
	runes.backdrop:SetPoint("BOTTOMRIGHT", 2, -2)
	runes.backdrop:SetFrameLevel(runes:GetFrameLevel() - 1)

	self.Runes = runes
end
TotemBars = function(self)
if Qulight["unitframes"].TotemBars then
	if playerClass ~= "SHAMAN" then return end
	local totems = CreateFrame("Frame", nil, self)
	totems:SetPoint("TOPLEFT", self, "TOPLEFT",4,-3)
	totems:SetWidth(self:GetWidth()-140)
	totems:SetHeight(6)
	totems:SetFrameLevel(6)
	totems.Destroy = true
	totems.colors = {{233/255, 46/255, 16/255};{173/255, 217/255, 25/255};{35/255, 127/255, 255/255};{178/255, 53/255, 240/255};}
			
	for i = 1, 4 do
		totems[i] = CreateFrame("StatusBar", nil, totems)
		totems[i]:SetHeight(totems:GetHeight())
		totems[i]:SetWidth(((self:GetWidth()-140) - 3) / 4)

		if (i == 1) then
			totems[i]:SetPoint("LEFT", totems)
		else
			totems[i]:SetPoint("LEFT", totems[i-1], "RIGHT", 1, 0)
		end
		totems[i]:SetStatusBarTexture(Qulight["media"].texture)
		totems[i]:GetStatusBarTexture():SetHorizTile(false)
		totems[i]:SetMinMaxValues(0, 1)

		totems[i].bg = totems[i]:CreateTexture(nil, "BORDER")
		totems[i].bg:SetAllPoints()
		totems[i].bg:SetTexture(Qulight["media"].texture)
		totems[i].bg.multiplier = 0.3
	end
	totems.backdrop = CreateFrame("Frame", nil, totems)
	
	CreateStyle(totems.backdrop, 2, 5, .9, 0.6)
	totems.backdrop:SetBackdropBorderColor(.2,.2,.2,1)
	totems.backdrop:SetPoint("TOPLEFT", -2, 2)
	totems.backdrop:SetPoint("BOTTOMRIGHT", 2, -2)
	totems.backdrop:SetFrameLevel(1)
	self.TotemBar = totems			
	end
end

Magebars = function(self)
	if myclass == "MAGE" then	
		local mb = CreateFrame("Frame", "ArcaneBar", self)
		mb:SetPoint("TOPLEFT", self, "TOPLEFT",2,-2)
		mb:SetWidth(103)
		mb:SetHeight(6)
		mb:SetBackdrop(backdrop)
		mb:SetBackdropColor(0, 0, 0)
		mb:SetBackdropBorderColor(0, 0, 0)				
		CreateStyle(mb, 4, 1, .9, 0.6)
		mb:SetFrameLevel(6)
				
		for i = 1, 4 do
		mb[i] = CreateFrame("StatusBar", "ArcaneBar"..i, mb)
		mb[i]:SetHeight(6)
		mb[i]:SetStatusBarTexture(Qulight["media"].texture)
						
			if i == 1 then
				mb[i]:SetWidth(100 / 4)
				mb[i]:SetPoint("LEFT", mb, "LEFT", 0, 0)
			else
				mb[i]:SetWidth(100 / 4)
				mb[i]:SetPoint("LEFT", mb[i-1], "RIGHT", 1, 0)
			end
				mb[i].bg = mb[i]:CreateTexture(nil, 'ARTWORK')
		end
				
		self.ArcaneChargeBar = mb
				
		local rp = CreateFrame("Frame", "RunePower", self)
		rp:SetPoint("TOPLEFT", self, "TOPLEFT", 108,-2)
		rp:SetWidth(41)
		rp:SetHeight(6)
				
		rp:SetBackdrop(backdrop)
		rp:SetBackdropColor(0, 0, 0)
		rp:SetBackdropBorderColor(0, 0, 0)	
		CreateStyle(rp, 4, 1, .9, 0.6)
		rp:SetFrameLevel(6)
		for i = 1, 2 do
			rp[i] = CreateFrame("StatusBar", "RunePower"..i, rp)
			rp[i]:SetHeight(6)
			rp[i]:SetStatusBarTexture(Qulight["media"].texture)
					
			if i == 1 then
				rp[i]:SetWidth(40 / 2)
				rp[i]:SetPoint("LEFT", rp, "LEFT", 0, 0)
			else
				rp[i]:SetWidth(40 / 2)
				rp[i]:SetPoint("LEFT", rp[i-1], "RIGHT", 1, 0)
			end
				rp[i].bg = rp[i]:CreateTexture(nil, 'ARTWORK')		
		end			
		self.RunePower = rp
	end			
end

genCPoints = function(self)
	local bars = CreateFrame("Frame", nil, self)
	bars:SetPoint("TOPLEFT", self, "TOPLEFT",4,-3)
	bars:SetWidth(120)
	bars:SetHeight(6)
	bars:SetFrameLevel(6)
	bars:SetBackdropBorderColor(0,0,0,0)
	bars:SetBackdropColor(0,0,0,0)
		
	for i = 1, 10 do					
		bars[i] = CreateFrame("StatusBar", self:GetName().."_Combo"..i, bars)
		bars[i]:SetHeight(6)					
		bars[i]:SetStatusBarTexture(Qulight["media"].texture)
		bars[i]:GetStatusBarTexture():SetHorizTile(false)
							
		if i == 1 then
			bars[i]:SetPoint("LEFT", bars)
		else
			bars[i]:SetPoint("LEFT", bars[i-1], "RIGHT", 1, 0)
		end
		bars[i]:SetAlpha(0.15)
		bars[i]:SetWidth(((self:GetWidth()-100) - 4)/5)
	end
		
	bars[1]:SetStatusBarColor(0.69, 0.31, 0.31)		
	bars[2]:SetStatusBarColor(0.69, 0.31, 0.31)
	bars[3]:SetStatusBarColor(0.65, 0.63, 0.35)
	bars[4]:SetStatusBarColor(0.65, 0.63, 0.35)
	bars[5]:SetStatusBarColor(0.33, 0.59, 0.33)
	bars[6]:SetStatusBarColor(0.33, 0.59, 0.33)
	bars[7]:SetStatusBarColor(0.26, 0.55, 0.31)
	bars[8]:SetStatusBarColor(0.26, 0.55, 0.31)
	bars[9]:SetStatusBarColor(0.26, 0.55, 0.31)
	bars[10]:SetStatusBarColor(0.26, 0.55, 0.31)
		
	self.CPoints = bars
	if playerClass == "DRUID" then
		self:RegisterEvent("UPDATE_SHAPESHIFT_FORM", ComboDisplay)
	end
	self.CPoints.Override = ComboDisplayOld
		
	bars.FrameBackdrop = CreateFrame("Frame", nil, bars[1])
	
	CreateStyle(bars.FrameBackdrop, 2, 5, .9, 0.6)
	bars.FrameBackdrop:SetBackdropBorderColor(.2,.2,.2,1)
	bars.FrameBackdrop:SetPoint("TOPLEFT", bars, "TOPLEFT", -2, 2)
	bars.FrameBackdrop:SetPoint("BOTTOMRIGHT", bars, "BOTTOMRIGHT", 2, -2)
	bars.FrameBackdrop:SetFrameLevel(6)
end
genHarmony = function(self)
	if myclass == "MONK" then
				
		local hb = CreateFrame("Frame", "HarmonyBar", self)
		hb:SetPoint("TOPLEFT", self, "TOPLEFT",2,-2)
		hb:SetWidth(120)
		hb:SetHeight(6)
		hb:SetBackdrop(backdrop)

		hb:SetBackdropBorderColor(0,0,0,0)
		hb:SetBackdropColor(0, 0, 0)
		CreateStyle(hb, 4, 1, .9, 0.6)
		hb:SetFrameLevel(6)
			for i = 1, 6 do
				hb[i] = CreateFrame("StatusBar", nil, hb)
				hb[i]:SetHeight(6)
				hb[i]:SetStatusBarTexture(Qulight["media"].texture)
									
					if i == 1 then
						hb[i]:SetWidth(120 / 6)
						hb[i]:SetPoint("LEFT", hb, "LEFT", 0, 0)
					else
						hb[i]:SetWidth((120 / 6) - 1)
						hb[i]:SetPoint("LEFT", hb[i-1], "RIGHT", 1, 0)
					end
						hb[i].bg = hb[i]:CreateTexture(nil, 'ARTWORK')
			end
		self.HarmonyBar = hb
	end
end
genShards = function(self)
	if myclass == "WARLOCK" then
		local wb = CreateFrame("Frame", "SoulShards", self)
		wb:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 4, -9)
		wb:SetWidth(123)
		wb:SetHeight(5)
		wb:SetBackdrop(backdrop)
					
		wb:SetBackdropColor(0, 0, 0)
		wb:SetBackdropBorderColor(0, 0, 0)	
		CreateStyle(wb, 5, 1, .9, 0.6)
		wb:SetFrameLevel(6)
			for i = 1, 5 do
				wb[i] = CreateFrame("StatusBar", "SoulShards"..i, wb)
				wb[i]:SetHeight(5)
				wb[i]:SetStatusBarTexture(Qulight["media"].texture)
						
					if i == 1 then
						wb[i]:SetWidth((120 / 5))
						wb[i]:SetPoint("LEFT", wb, "LEFT", 0, 0)
					else
						wb[i]:SetWidth((120 / 5))
						wb[i]:SetPoint("LEFT", wb[i-1], "RIGHT", 1, 0)
					end
						wb[i].bg = wb[i]:CreateTexture(nil, 'ARTWORK')
			end
		wb:SetScript("OnShow", function(self) 
		local f = self:GetParent()			
		end)
					
		wb:SetScript("OnHide", function(self)
		local f = self:GetParent()
		end)
					
		self.SoulShards = wb				
	end
end
AltPowerBar = function(self)
	local AltPowerBar = CreateFrame("StatusBar", nil, self.Health)
	
	AltPowerBar:SetHeight(5)
	AltPowerBar:SetStatusBarTexture(Qulight["media"].texture)
	AltPowerBar:GetStatusBarTexture():SetHorizTile(false)
	AltPowerBar:EnableMouse(true)
	AltPowerBar:SetFrameStrata("HIGH")
	AltPowerBar:SetFrameLevel(4)

	AltPowerBar:SetPoint("LEFT", DataLeftPanel, 1, -1)
	AltPowerBar:SetPoint("RIGHT", DataLeftPanel, -1, 1)
	AltPowerBar:SetPoint("TOP", DataLeftPanel, 1, -1)
	AltPowerBar:SetPoint("BOTTOM", DataLeftPanel, -1, 1)
		
	AltPowerBar:SetBackdrop({
			bgFile = Qulight["media"].texture, 
			edgeFile = Qulight["media"].texture, 
			tile = false, tileSize = 0, edgeSize = 1, 
			insets = { left = 0, right = 0, top = 0, bottom = 0}
		})
		
	AltPowerBar:SetBackdropColor(.05,.05,.05, 1)
	AltPowerBar:SetBackdropBorderColor(0, 0, 0, 0)	
		
	AltPowerBar.text = SetFontString(AltPowerBar, Qulight["media"].font, 10, "OUTLINE")
	AltPowerBar.text:SetPoint("CENTER")
	self:Tag(AltPowerBar.text, '[altpower]')
		
	AltPowerBar:HookScript("OnShow", AltPowerBarOnToggle)
	AltPowerBar:HookScript("OnHide", AltPowerBarOnToggle)

	self.AlternativePower = AltPowerBar		
	self.AlternativePower.PostUpdate = AltPowerBarPostUpdate
end
Experience = function(self)
	if Qulight["unitframes"].Experiencebar then 
	local Experience = CreateFrame('StatusBar', nil, self)
	Experience:SetStatusBarTexture(Qulight["media"].texture)
	Experience:SetStatusBarColor(0, 0.7, 1)
	Experience:SetPoint('LEFT', ChatPanelRight, 'LEFT', -8, 0)
	Experience:EnableMouse(true)
	Experience:SetWidth(6)
	Experience:SetHeight(168)
	Experience:SetFrameLevel(2)
	Experience.Tooltip = true
	Experience:SetOrientation("VERTICAL")
	
	local h = CreateFrame("Frame", nil, Experience)
	h:SetFrameLevel(1)
	h:SetPoint("TOPLEFT",-5,5)
	h:SetPoint("BOTTOMRIGHT",5,-5)
	CreateStyle(h, -1 )
				
	local Rested = CreateFrame('StatusBar', nil, Experience)
	Rested:SetStatusBarTexture(Qulight["media"].texture)
	Rested:SetStatusBarColor(0, 0.4, 1, 0.6)
	Rested:SetFrameLevel(2)
	Rested:SetOrientation("VERTICAL")
	Rested:SetAllPoints(Experience)
				
	self.Experience = Experience
	self.Experience.Rested = Rested
	self.Experience.PostUpdate = ExperiencePostUpdate
	end
end
Reputation = function(self)
	if Qulight["unitframes"].Reputationbar then 
	local Reputation = CreateFrame('StatusBar', nil, self)
	Reputation:SetStatusBarTexture(Qulight["media"].texture)
	Reputation:EnableMouse(true)
	Reputation:SetWidth(6)
	Reputation:SetHeight(168)
	Reputation:SetPoint('RIGHT', ChatBackground, 'RIGHT', 8, 0)
	Reputation:SetFrameLevel(2)
	Reputation:SetOrientation("VERTICAL")
	
	local h = CreateFrame("Frame", nil, Reputation)
	h:SetFrameLevel(1)
	h:SetPoint("TOPLEFT",-5,5)
	h:SetPoint("BOTTOMRIGHT",5,-5)
	CreateStyle(h, -1)
	
	Reputation.colorStanding = true
	self.Reputation = Reputation
	end
end


ArtifactPower = function(self)
	if Qulight["unitframes"].ArtifactPowerbar then 
	local ArtifactPower = CreateFrame('StatusBar', nil, self)
	ArtifactPower:SetStatusBarTexture(Qulight["media"].texture)
	ArtifactPower:SetPoint('RIGHT', ChatBackground, 'RIGHT', 18, 0)
	ArtifactPower:SetStatusBarColor(.901, .8, .601)
	ArtifactPower:EnableMouse(true)
	ArtifactPower:SetWidth(6)
	ArtifactPower:SetHeight(168)
	ArtifactPower:SetOrientation("VERTICAL")
	ArtifactPower:SetFrameLevel(2)


	local h = CreateFrame("Frame", nil, ArtifactPower)
	h:SetFrameLevel(1)
	h:SetPoint("TOPLEFT",-5,5)
	h:SetPoint("BOTTOMRIGHT",5,-5)
	CreateStyle(h, -1)


	self.ArtifactPower = ArtifactPower
	end
end

-----------------------------
-- STYLE FUNCTIONS
-----------------------------
local function CreatePlayerStyle(self, unit, isSingle)
	self.mystyle = "player"
	init(self)
	self.scale = scale
	self:SetSize(220,38)
	gen_hpbar(self)
	gen_hpstrings(self)
	gen_highlight(self)
	gen_ppbar(self)
	gen_focusbar(self)
	gen_RaidMark(self)
	createDebuffs(self)
	if Qulight["unitframes"].showPlayerAuras then
		BuffFrame:Hide()
		createBuffs(self)
	end
	self.Health.frequentUpdates = true
	if Qulight["unitframes"].HealthcolorClass then
	self.Health.colorClass = true
	end
	if Qulight["unitframes"].Powercolor then
	self.Power.colorClass = true
	else
	self.Power.colorPower = true
	end
	self.Power.frequentUpdates = true
	self.Power.bg.multiplier = 0.1
	if not Qulight["unitframes"].bigcastbar then
	gen_castbar(self)
	else
	gen_bigcastbar(self)
	end
	gen_InfoIcons(self)
	TotemBars(self)
	Magebars(self)
	
	Experience(self)
	Reputation(self)
	AltPowerBar(self)
	genHarmony(self)
	ArtifactPower(self)
	if Qulight["unitframes"].showPortrait then gen_portrait(self) end
	if Qulight["unitframes"].showRunebar then genRunes(self) end
	if Qulight["unitframes"].showHolybar then genHolyPower(self) end
	if Qulight["unitframes"].showShardbar then genShards(self) end
	if Qulight["unitframes"].showEclipsebar then addEclipseBar(self) end
end
local function CreateTargetStyle(self, unit, isSingle)
	self.mystyle = "target"
	init(self)
	self.scale = scale
	self:SetSize(220,38)
	gen_hpbar(self)
	gen_hpstrings(self)
	gen_highlight(self)
	gen_ppbar(self)
	gen_RaidMark(self)
	
	self.Health.frequentUpdates = true
	if Qulight["unitframes"].HealthcolorClass then
	self.Health.colorClass = true
	end
	self.Power.colorTapping = true
	self.Power.colorDisconnected = true
	if Qulight["unitframes"].Powercolor then
	self.Power.colorClass = true
	else
	self.Power.colorPower = true
	end
	self.Power.colorReaction = true
	self.Power.bg.multiplier = 0.1
	if not Qulight["unitframes"].bigcastbar then
	gen_castbar(self)
	else
	gen_bigcastbar(self)
	end
	
	addQuestIcon(self)
	createAuras(self)
	genCPoints(self)
	if Qulight["unitframes"].showPortrait then gen_portrait(self) end	
end
local function CreateFocusStyle(self, unit, isSingle)
	self.mystyle = "focus"
	init(self)
	self.scale = scale
	self:SetSize(180,34)
	gen_hpbar(self)
	gen_hpstrings(self)
	gen_highlight(self)
	gen_ppbar(self)
	
	self.Power.colorTapping = true
	self.Power.colorDisconnected = true
	if Qulight["unitframes"].Powercolor then
	self.Power.colorClass = true
	else
	self.Power.colorPower = true
	end
	self.Power.colorReaction = true
	self.Power.colorHealth = true
	self.Power.bg.multiplier = 0.5
	gen_RaidMark(self)
	self.Health.frequentUpdates = false
	if Qulight["unitframes"].HealthcolorClass then
	self.Health.colorClass = true
	end
	gen_castbar(self)
	createAuras(self)
	if Qulight["unitframes"].showPortrait then gen_portrait(self) end
end
local function CreateToTStyle(self, unit, isSingle)
	self.mystyle = "tot"
	init(self)
	self.scale = scale
	self:SetSize(100,28)
	gen_hpbar(self)
	gen_hpstrings(self)
	gen_highlight(self)
	gen_RaidMark(self)
	createAuras(self)
	gen_ppbar(self)
	self.Power.colorReaction = true
	self.Power.colorClass = true
	self.Power.colorHealth = true
	self.Power.bg.multiplier = 0.5
	
	self.Health.frequentUpdates = false
	if Qulight["unitframes"].HealthcolorClass then
	self.Health.colorClass = true
	end
	if Qulight["unitframes"].showPortrait then gen_portrait(self) end
end	
local function CreateFocusTargetStyle(self, unit, isSingle)
	self.mystyle = "focustarget"
	init(self)
	self.scale = scale
	self:SetSize(100,28)
	gen_hpbar(self)
	gen_hpstrings(self)
	gen_ppbar(self)
	self.Power.colorClass = true
	self.Power.colorReaction = true
	self.Power.colorHealth = true
	self.Power.bg.multiplier = 0.5
	gen_highlight(self)
	gen_RaidMark(self)
	
	self.Health.frequentUpdates = false
	if Qulight["unitframes"].HealthcolorClass then
	self.Health.colorClass = true
	end
	if Qulight["unitframes"].showPortrait then gen_portrait(self) end
end
local function CreatePetStyle(self, unit, isSingle)
	local _, playerClass = UnitClass("player")
	self.mystyle = "pet"
	init(self)
	self.scale = scale
	self:SetSize(100,28)
	gen_hpbar(self)
	gen_hpstrings(self)
	gen_ppbar(self)
	self.Power.colorReaction = true
	self.Power.colorHealth = true
	self.Power.colorClass = true
	self.Power.bg.multiplier = 0.5
	gen_highlight(self)
	gen_RaidMark(self)
	
	self.Health.frequentUpdates = false
	if PlayerClass == "HUNTER" then
		self.Power.colorReaction = false
		self.Power.colorClass = false
	end
	if Qulight["unitframes"].showPortrait then gen_portrait(self) end
end
local function CreateBossStyle(self, unit, isSingle)
	self.mystyle = "boss"
	self:SetSize(150,28)
	gen_hpbar(self)
	gen_hpstrings(self)
	gen_highlight(self)
	gen_RaidMark(self)
	gen_ppbar(self)
	self.Power.colorTapping = true
	self.Power.colorDisconnected = true
	self.Power.colorClass = true
	self.Power.colorReaction = true
	self.Power.colorHealth = true
	self.Power.bg.multiplier = 0.5
	gen_castbar(self)
	
	AltPowerBar(self)
	createBuffs(self)
	createDebuffs(self)
	self.Health.frequentUpdates = false
	if Qulight["unitframes"].showPortrait then gen_portrait(self) end
end
local function CreateMTStyle(self)
	self.mystyle = "oUF_MT"
	self:SetSize(100,22)
	gen_hpbar(self)
	gen_hpstrings(self)
	gen_highlight(self)
	gen_RaidMark(self)
	self.Health.frequentUpdates = false
	if Qulight["unitframes"].HealthcolorClass then
	self.Health.colorClass = true
	end
	if Qulight["unitframes"].showPortrait then gen_portrait(self) end
end
local function CreateArenaStyle(self, unit, isSingle)
	self.mystyle = "oUF_Arena"
	self:SetSize(150,28)
	gen_hpbar(self)
	gen_hpstrings(self)
	gen_highlight(self)
	gen_RaidMark(self)
	gen_ppbar(self)
	self.Power.colorTapping = true
	self.Power.colorDisconnected = true
	self.Power.colorClass = true
	self.Power.colorReaction = true
	self.Power.colorHealth = true
	self.Power.bg.multiplier = 0.5
	gen_castbar(self)
	createBuffs(self)
	createDebuffs(self)
	self.Health.frequentUpdates = false
	if Qulight["unitframes"].showPortrait then gen_portrait(self) end
end
-----------------------------
-- SPAWN UNITS
-----------------------------
oUF:RegisterStyle("Player", CreatePlayerStyle)
oUF:RegisterStyle("Target", CreateTargetStyle)
oUF:RegisterStyle("ToT", CreateToTStyle)
oUF:RegisterStyle("Focus", CreateFocusStyle)
oUF:RegisterStyle("FocusTarget", CreateFocusTargetStyle)
oUF:RegisterStyle("Pet", CreatePetStyle)
oUF:RegisterStyle("Boss", CreateBossStyle)
oUF:RegisterStyle("oUF_MT", CreateMTStyle)
oUF:RegisterStyle("oUF_Arena", CreateArenaStyle)

if not Qulight["unitframes"].enable == true then return end
oUF:Factory(function(self)
	self:SetActiveStyle("Player")
	local player = self:Spawn("player", "PlayerFrame")
	player:SetPoint("BOTTOM", Anchorplayer)
	self:SetActiveStyle("Target")
	local target = self:Spawn("Target", "TargetFrame")
	target:SetPoint("BOTTOM", Anchortarget)
	if Qulight["unitframes"].showtot then
		self:SetActiveStyle("ToT")
		local targettarget = self:Spawn("targettarget", "TargetTargetFrame")
		targettarget:SetPoint("BOTTOM", Anchortot)
	end
	if Qulight["unitframes"].showpet then
		self:SetActiveStyle("Pet")
		local pet = self:Spawn("pet", "oUF_pet")
		pet:SetPoint("BOTTOM", Anchorpet)
	end
	if Qulight["unitframes"].showfocus then 
		self:SetActiveStyle("Focus")
		local focus = self:Spawn("focus", "oUF_focus")
		focus:SetPoint("BOTTOM", Anchorfocus)
	end
	if Qulight["unitframes"].showfocustarget then 
		self:SetActiveStyle("FocusTarget")
		local focustarget = self:Spawn("focustarget", "oUF_focustarget")
		focustarget:SetPoint("LEFT", oUF_focus, "RIGHT", 8, -3)
	end
	
	if Qulight["unitframes"].MTFrames then
		oUF:SetActiveStyle("oUF_MT")
		local tank = oUF:SpawnHeader('oUF_MT', nil, 'raid',
			'oUF-initialConfigFunction', ([[
				self:SetWidth(%d)
				self:SetHeight(%d)
			]]):format(80, 22),
			'showRaid', true,
			'groupFilter', 'MAINTANK',
			'yOffset', 8,
			'point' , 'BOTTOM',
			'template', 'oUF_MainTank')
		tank:SetPoint("TOP", Anchortank)
    end
	if Qulight["unitframes"].showBossFrames then
		self:SetActiveStyle("Boss")
		local boss = {}
			for i = 1, MAX_BOSS_FRAMES do
				boss[i] = self:Spawn("boss"..i, "oUF_Boss"..i)
				if i == 1 then
					boss[i]:SetPoint("BOTTOM", Anchorboss)
				else
					boss[i]:SetPoint("BOTTOMRIGHT", boss[i-1], "BOTTOMRIGHT", 0, 50)
			end
		end
	end
	oUF:SetActiveStyle("oUF_Arena")
	if Qulight["unitframes"].ArenaFrames then
	local arena = {}
	for i = 1, 5 do
		arena[i] = self:Spawn("arena"..i, "oUF_Arena"..i)
		if i == 1 then
			arena[i]:SetPoint("BOTTOM", Anchorboss)
		else
			arena[i]:SetPoint("BOTTOMRIGHT", arena[i-1], "BOTTOMRIGHT", 0, 90)
		end
		arena[i]:SetSize(150, 28)
	end	
	
	local QulightPrepArena = {}
	for i = 1, 5 do
		QulightPrepArena[i] = CreateFrame("Frame", "QulightPrepArena"..i, UIParent)
		QulightPrepArena[i]:SetAllPoints(arena[i])
		QulightPrepArena[i]:SetBackdropColor(0,0,0)
		CreateStyle(QulightPrepArena[i], 2)
		QulightPrepArena[i].Health = CreateFrame("StatusBar", nil, QulightPrepArena[i])
		QulightPrepArena[i].Health:SetAllPoints()
		QulightPrepArena[i].Health:SetStatusBarTexture(Qulight["media"].texture)
		QulightPrepArena[i].Health:SetStatusBarColor(.3, .3, .3, 1)
		QulightPrepArena[i].SpecClass = QulightPrepArena[i].Health:CreateFontString(nil, "OVERLAY")
		QulightPrepArena[i].SpecClass:SetFont(Qulight["media"].font, 9, "OUTLINE")
		QulightPrepArena[i].SpecClass:SetPoint("CENTER")
		QulightPrepArena[i]:Hide()
	end

	local ArenaListener = CreateFrame("Frame", "QulightArenaListener", UIParent)
	ArenaListener:RegisterEvent("PLAYER_ENTERING_WORLD")
	ArenaListener:RegisterEvent("ARENA_PREP_OPPONENT_SPECIALIZATIONS")
	ArenaListener:RegisterEvent("ARENA_OPPONENT_UPDATE")
	ArenaListener:SetScript("OnEvent", function(self, event)
		if event == "ARENA_OPPONENT_UPDATE" then
			for i=1, 5 do
				local f = _G["QulightPrepArena"..i]
				f:Hide()
			end			
		else
			local numOpps = GetNumArenaOpponentSpecs()
			
			if numOpps > 0 then
				for i=1, 5 do
					local f = _G["QulightPrepArena"..i]
					local s = GetArenaOpponentSpec(i)
					local _, spec, class = nil, "UNKNOWN", "UNKNOWN"
					
					if s and s > 0 then 
						_, spec, _, _, _, _, class = GetSpecializationInfoByID(s)
					end
					
					if (i <= numOpps) then
						if class and spec then
							f.SpecClass:SetText(spec.."  -  "..LOCALIZED_CLASS_NAMES_MALE[class])
							
								local color = arena[i].colors.class[class]
								f.Health:SetStatusBarColor(unpack(color))
							
							f:Show()
						end
					else
						f:Hide()
					end
				end
			else
				for i=1, 5 do
					local f = _G["QulightPrepArena"..i]
					f:Hide()
				end			
			end
		end
	end)
	
	end
end)


----------------------------------------------------------------------------------------
--	Test UnitFrames(by community)
----------------------------------------------------------------------------------------
local moving = false
SlashCmdList.TEST_UF = function(msg)
	if InCombatLockdown() then print("|cffffff00"..ERR_NOT_IN_COMBAT.."|r") return end
	if not moving then

			for i = 1, 5 do
				_G["oUF_Arena"..i].Hide = function() end
				_G["oUF_Arena"..i].unit = "player"
				_G["oUF_Arena"..i]:Show()
				_G["oUF_Arena"..i]:UpdateAllElements()
				_G["oUF_Arena"..i].Trinket.Icon:SetTexture("Interface\\Icons\\INV_Jewelry_Necklace_37")

				_G["oUF_Arena"..i.."Target"].Hide = function() end
				_G["oUF_Arena"..i.."Target"].unit = "player"
				_G["oUF_Arena"..i.."Target"]:Show()
				_G["oUF_Arena"..i.."Target"]:UpdateAllElements()
				
					_G["oUF_Arena"..i].Talents:SetText(TALENTS)
				
			end
		
			for i = 1, MAX_BOSS_FRAMES do
				_G["oUF_Boss"..i].Hide = function() end
				_G["oUF_Boss"..i].unit = "player"
				_G["oUF_Boss"..i]:Show()
				_G["oUF_Boss"..i]:UpdateAllElements()
			end

		moving = true

	else
		for _, frames in pairs({"oUF_Target", "oUF_TargetTarget", "oUF_Pet", "oUF_Focus", "oUF_FocusTarget"}) do
			_G[frames].Hide = nil
		end

		
			for i = 1, 5 do
				_G["oUF_Arena"..i].Hide = nil
				_G["oUF_Arena"..i.."Target"].Hide = nil
			end
		

		
			for i = 1, MAX_BOSS_FRAMES do
				_G["oUF_Boss"..i].Hide = nil
			end
		moving = false
	end
end
SLASH_TEST_UF1 = "/testui"
SLASH_TEST_UF2 = "/еуыегш"
SLASH_TEST_UF3 = "/testuf"
SLASH_TEST_UF4 = "/еуыега"
  Reply With Quote

WoWInterface » Featured Projects » oUF (Otravi Unit Frames) » Trying to update an old layout

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off