PageRenderTime 281ms CodeModel.GetById 101ms app.highlight 123ms RepoModel.GetById 38ms app.codeStats 1ms

/Tukui/modules/unitframes/layouts/asphyxia2.lua

http://github.com/Asphyxia/Tukui
Lua | 2015 lines | 1569 code | 299 blank | 147 comment | 211 complexity | 5141aaa91efe28d1cca87ac38426e1a2 MD5 | raw file

Large files files are truncated, but you can click here to view the full file

   1local ADDON_NAME, ns = ...
   2local oUF = ns.oUF or oUF
   3assert(oUF, "Tukui was unable to locate oUF install.")
   4
   5ns._Objects = {}
   6ns._Headers = {}
   7
   8local T, C, L = unpack(select(2, ...)) -- Import: T - functions, constants, variables; C - config; L - locales
   9if not C["unitframes"].enable == true then return end
  10if C["unitframes"].style ~= "Asphyxia2" then return end
  11
  12------------------------------------------------------------------------
  13--	local variables
  14------------------------------------------------------------------------
  15
  16local font1 = C["media"].uffont
  17local font2 = C["media"].font
  18local font = C["media"].pixelfont
  19local normTex = C["media"].normTex
  20local glowTex = C["media"].glowTex
  21local bubbleTex = C["media"].bubbleTex
  22
  23local backdrop = {
  24	bgFile = C["media"].blank,
  25	insets = {top = -T.mult, left = -T.mult, bottom = -T.mult, right = -T.mult},
  26}
  27
  28
  29------------------------------------------------------------------------
  30--	Layout
  31------------------------------------------------------------------------
  32
  33local function Shared(self, unit)
  34	-- set our own colors
  35	self.colors = T.oUF_colors
  36	
  37	-- register click
  38	self:RegisterForClicks("AnyUp")
  39	self:SetScript('OnEnter', UnitFrame_OnEnter)
  40	self:SetScript('OnLeave', UnitFrame_OnLeave)
  41	
  42	-- menu? lol
  43	self.menu = T.SpawnMenu
  44	
  45	------------------------------------------------------------------------
  46	--	Features we want for all units at the same time
  47	------------------------------------------------------------------------
  48	
  49	-- here we create an invisible frame for all element we want to show over health/power.
  50	local InvFrame = CreateFrame("Frame", nil, self)
  51	InvFrame:SetFrameStrata("HIGH")
  52	InvFrame:SetFrameLevel(5)
  53	InvFrame:SetAllPoints()
  54	
  55	-- symbols, now put the symbol on the frame we created above.
  56	local RaidIcon = InvFrame:CreateTexture(nil, "OVERLAY")
  57	RaidIcon:SetTexture("Interface\\AddOns\\Tukui\\medias\\textures\\raidicons.blp") -- thx hankthetank for texture
  58	RaidIcon:SetHeight(20)
  59	RaidIcon:SetWidth(20)
  60	RaidIcon:SetPoint("TOP", 0, 11)
  61	self.RaidIcon = RaidIcon
  62	
  63	------------------------------------------------------------------------
  64	--	Player and Target units layout (mostly mirror'd)
  65	------------------------------------------------------------------------
  66	
  67	if (unit == "player" or unit == "target") then
  68		-- create a panel
  69		local panel = CreateFrame("Frame", nil, self)
  70		if T.lowversion then
  71			panel:CreatePanel("Default", 186, 21, "BOTTOM", self, "BOTTOM", 0, 0)
  72		else
  73			panel:CreatePanel("Default", 186, 21, "BOTTOM", self, "BOTTOM", 0, 0)
  74		end
  75		panel:SetFrameLevel(2)
  76		panel:SetFrameStrata("MEDIUM")
  77		panel:SetBackdropBorderColor(unpack(C["media"].altbordercolor))
  78		panel:SetAlpha(0)
  79		self.panel = panel
  80	
  81		-- health bar
  82		local health = CreateFrame('StatusBar', nil, self)
  83		health:Height(13)
  84		health:SetPoint("TOPLEFT")
  85		health:SetPoint("TOPRIGHT")
  86		health:SetStatusBarTexture(normTex)
  87
  88		-- Border for HealthBar
  89		local HealthBorder = CreateFrame("Frame", nil, health)
  90		HealthBorder:SetPoint("TOPLEFT", health, "TOPLEFT", -2, 2)
  91		HealthBorder:SetPoint("BOTTOMRIGHT", health, "BOTTOMRIGHT", 2, -2)
  92		HealthBorder:SetTemplate("Default")
  93		HealthBorder:CreateShadow("Default")
  94		HealthBorder:SetFrameLevel(2)
  95		self.HealthBorder = HealthBorder
  96
  97		-- health bar background
  98		local healthBG = health:CreateTexture(nil, 'BORDER')
  99		healthBG:SetAllPoints()
 100		healthBG:SetTexture(0, 0, 0)
 101
 102		health.value = T.SetFontString(health, font, C["datatext"].fontsize, "MONOCHROMEOUTLINE")
 103		health.value:Point("RIGHT", health, "RIGHT", -4, 1)
 104		health.PostUpdate = T.PostUpdateHealth
 105
 106		self.Health = health
 107		self.Health.bg = healthBG
 108
 109		health.frequentUpdates = true
 110		if C["unitframes"].showsmooth == true then
 111			health.Smooth = true
 112		end
 113
 114		if C["unitframes"].unicolor == true then
 115			health.colorTapping = false
 116			health.colorDisconnected = false
 117			health.colorClass = false
 118			health:SetStatusBarColor(.150, .150, .150, 1)
 119			healthBG:SetVertexColor(0, 0, 0, 1)		
 120		else
 121			health.colorDisconnected = true
 122			health.colorTapping = true	
 123			health.colorClass = true
 124			health.colorReaction = true			
 125		end
 126
 127		-- power
 128		local power = CreateFrame('StatusBar', nil, self)
 129		power:Size(244, 2)
 130		if unit == "player" then
 131			power:Point("TOPRIGHT", health, "BOTTOMRIGHT", 7, -11)
 132		elseif unit == "target" then
 133			power:Point("TOPLEFT", health, "BOTTOMLEFT", -7, -11)
 134		end
 135		power:SetStatusBarTexture(normTex)
 136
 137		-- Border for Power
 138		local PowerBorder = CreateFrame("Frame", nil, power)
 139		PowerBorder:SetPoint("TOPLEFT", power, "TOPLEFT", -2, 2)
 140		PowerBorder:SetPoint("BOTTOMRIGHT", power, "BOTTOMRIGHT", 2, -2)
 141		PowerBorder:SetTemplate("Default")
 142		PowerBorder:CreateShadow("Default")
 143		PowerBorder:SetFrameLevel(power:GetFrameLevel() - 1)
 144		self.PowerBorder = PowerBorder
 145
 146		local powerBG = power:CreateTexture(nil, 'BORDER')
 147		powerBG:SetAllPoints(power)
 148		powerBG:SetTexture(normTex)
 149		powerBG.multiplier = 0.3
 150
 151		power.value = T.SetFontString(health, font, C["datatext"].fontsize, "MONOCHROMEOUTLINE")
 152		power.value:Point("LEFT", health, "LEFT", 4, 1)
 153		power.PreUpdate = T.PreUpdatePower
 154		power.PostUpdate = T.PostUpdatePower
 155
 156		self.Power = power
 157		self.Power.bg = powerBG
 158
 159		power.frequentUpdates = true
 160		power.colorDisconnected = true
 161
 162		if C["unitframes"].showsmooth == true then
 163			power.Smooth = true
 164		end
 165
 166		if C["unitframes"].unicolor == true then
 167			power.colorTapping = true
 168			power.colorClass = true
 169			power.colorReaction = true
 170			powerBG.multiplier = 0.1				
 171		else
 172			power.colorPower = true
 173		end
 174
 175		--[[-- portraits
 176		if (C["unitframes"].charportrait == true) then
 177			local portrait = CreateFrame("PlayerModel", nil, health)
 178			portrait:SetFrameLevel(health:GetFrameLevel())
 179			portrait:SetAllPoints(health)
 180			portrait:SetAlpha(.15)
 181			portrait.PostUpdate = T.PortraitUpdate 
 182			self.Portrait = portrait
 183		end--]]
 184		
 185		-- portraits
 186		if (C["unitframes"].charportrait == true) then
 187			local portrait = CreateFrame("PlayerModel", self:GetName().."_Portrait", self)
 188			portrait:SetFrameLevel(8)
 189			portrait:SetHeight(12)
 190			portrait:SetWidth(230)
 191			portrait:SetAlpha(1)
 192			if unit == "player" then
 193				portrait:SetPoint("TOPRIGHT", health, "BOTTOMRIGHT", 0, -24)
 194			elseif unit == "target" then
 195				portrait:SetPoint("TOPLEFT", health, "BOTTOMLEFT", 0, -24)
 196			end
 197			table.insert(self.__elements, T.HidePortrait)
 198			self.Portrait = portrait
 199			
 200			-- Border for Portrait
 201			local PFrame = CreateFrame("Frame", nil, portrait)
 202			PFrame:SetPoint("TOPLEFT", portrait, "TOPLEFT", T.Scale(-2), T.Scale(2))
 203			PFrame:SetPoint("BOTTOMRIGHT", portrait, "BOTTOMRIGHT", T.Scale(2), T.Scale(-2))
 204			PFrame:SetTemplate("Default")
 205			PFrame:CreateShadow("Default")
 206			PFrame:SetFrameLevel(2)
 207			self.PFrame = PFrame
 208		end
 209		
 210		if (C["unitframes"].classicon == true) then
 211		local classicon = CreateFrame("Frame", self:GetName().."_ClassIconBorder", self)
 212		--classicon:CreateShadow("Default")
 213		if unit == "player" then
 214				classicon:CreatePanel("Default", 38, 38, "RIGHT", TukuiPlayer, "LEFT", -14, -4)
 215		elseif unit == "target" then
 216				classicon:CreatePanel("Default", 38, 38, "LEFT", TukuiTarget, "RIGHT", 14, -4)
 217		end
 218
 219		local class = classicon:CreateTexture(self:GetName().."_ClassIcon", "ARTWORK")
 220		class:Point("TOPLEFT", 2, -2)
 221		class:Point("BOTTOMRIGHT", -2, 2)
 222		self.ClassIcon = class
 223	end
 224
 225		if T.myclass == "PRIEST" and C["unitframes"].weakenedsoulbar then
 226			local ws = CreateFrame("StatusBar", self:GetName().."_WeakenedSoul", power)
 227			ws:SetAllPoints(power)
 228			ws:SetStatusBarTexture(C.media.normTex)
 229			ws:GetStatusBarTexture():SetHorizTile(false)
 230			ws:SetBackdrop(backdrop)
 231			ws:SetBackdropColor(unpack(C.media.backdropcolor))
 232			ws:SetStatusBarColor(191/255, 10/255, 10/255)
 233
 234			self.WeakenedSoul = ws
 235		end
 236
 237		if (unit == "player") then
 238			-- combat icon
 239			local Combat = health:CreateTexture(nil, "OVERLAY")
 240			Combat:Height(19)
 241			Combat:Width(19)
 242			Combat:SetPoint("CENTER",0,0)
 243			Combat:SetVertexColor(0.69, 0.31, 0.31)
 244			self.Combat = Combat
 245
 246			-- custom info (low mana warning)
 247			FlashInfo = CreateFrame("Frame", "TukuiFlashInfo", self)
 248			FlashInfo:SetScript("OnUpdate", T.UpdateManaLevel)
 249			FlashInfo.parent = self
 250			FlashInfo:SetAllPoints(health)
 251			FlashInfo.ManaLevel = T.SetFontString(FlashInfo, font, C["datatext"].fontsize+1, "MONOCHROMEOUTLINE")
 252			FlashInfo.ManaLevel:SetPoint("CENTER", health, "CENTER", 0, 1)
 253			self.FlashInfo = FlashInfo
 254
 255			-- pvp status icon
 256			local PVP = health:CreateTexture(nil, "OVERLAY")
 257			PVP:SetHeight(32)
 258			PVP:SetWidth(32)
 259			PVP:SetPoint("CENTER", 5, -6)
 260			self.PvP = PVP
 261			if(UnitIsPVP(unit) and factionGroup) then
 262				if(factionGroup == 'Horde') then
 263					pvp:SetTexture([[Interface\AddOns\Tukui\medias\textures\Horde]])
 264				else
 265					pvp:SetTexture([[Interface\AddOns\Tukui\medias\textures\Alliance]])
 266				end
 267			end
 268			
 269			-- leader icon
 270			local Leader = InvFrame:CreateTexture(nil, "OVERLAY")
 271			Leader:Height(14)
 272			Leader:Width(14)
 273			Leader:Point("TOPLEFT", -9, 9)
 274			self.Leader = Leader
 275
 276			-- master looter
 277			local MasterLooter = InvFrame:CreateTexture(nil, "OVERLAY")
 278			MasterLooter:Height(14)
 279			MasterLooter:Width(14)
 280			self.MasterLooter = MasterLooter
 281			self:RegisterEvent("PARTY_LEADER_CHANGED", T.MLAnchorUpdate)
 282			self:RegisterEvent("PARTY_MEMBERS_CHANGED", T.MLAnchorUpdate)
 283			
 284			--This is the edited code for the original rep/exp bar
 285			-- experience bar on player via mouseover for player currently levelling a character
 286			if T.level ~= MAX_PLAYER_LEVEL then
 287				local Experience = CreateFrame("StatusBar", self:GetName().."_Experience", self)
 288				Experience:SetStatusBarTexture(normTex)
 289				Experience:SetStatusBarColor(0, 0.4, 1, .8)
 290				Experience:Size(TukuiChatBackgroundLeft:GetWidth() - 4, 2)
 291				Experience:Point("BOTTOM", TukuiChatBackgroundLeft, "TOP", 0, 5)
 292				Experience:SetFrameLevel(8)
 293				Experience:SetFrameStrata("HIGH")
 294				Experience.Tooltip = true
 295				self.Experience = Experience
 296				
 297				local ExperienceBG = Experience:CreateTexture(nil, 'BORDER')
 298				ExperienceBG:SetAllPoints()
 299				ExperienceBG:SetTexture(normTex)
 300				ExperienceBG:SetVertexColor(0,0,0)
 301
 302				Experience.Text = self.Experience:CreateFontString(nil, 'OVERLAY')
 303				Experience.Text:SetFont(font, C["datatext"].fontsize, "MONOCHROMEOUTLINE")
 304				Experience.Text:SetPoint('CENTER', 0, 1)
 305				Experience.Text:SetShadowOffset(T.mult, -T.mult)
 306				self.Experience.Text = Experience.Text
 307				self.Experience.PostUpdate = T.ExperienceText
 308
 309				self.Experience.Rested = CreateFrame('StatusBar', nil, self.Experience)
 310				self.Experience.Rested:SetAllPoints(self.Experience)
 311				self.Experience.Rested:SetStatusBarTexture(normTex)
 312				self.Experience.Rested:SetStatusBarColor(1, 0, 1, 0.2)		
 313				
 314				local Resting = self:CreateTexture(nil, "OVERLAY")
 315				Resting:SetHeight(28)
 316				Resting:SetWidth(28)
 317				Resting:SetPoint("BOTTOMRIGHT", self, "TOPLEFT", 10 -4)
 318				Resting:SetTexture([=[Interface\CharacterFrame\UI-StateIcon]=])
 319				Resting:SetTexCoord(0, 0.5, 0, 0.421875)
 320				self.Resting = Resting
 321
 322				local ExperienceFrame = CreateFrame("Frame", nil, self.Experience)
 323				ExperienceFrame:SetPoint("TOPLEFT", T.Scale(-2), T.Scale(2))
 324				ExperienceFrame:SetPoint("BOTTOMRIGHT", T.Scale(2), T.Scale(-2))
 325				ExperienceFrame:SetTemplate("Transparent")
 326				ExperienceFrame:CreateShadow("Default")
 327				ExperienceFrame:SetFrameLevel(self.Experience:GetFrameLevel() - 1)
 328			
 329			local function ModifiedBackdrop(self)
 330				local color = RAID_CLASS_COLORS[T.myclass]
 331				self:SetBackdropColor(unpack(C["media"].backdropcolor))
 332				self:SetBackdropBorderColor(color.r, color.g, color.b)
 333			end
 334
 335			local function OriginalBackdrop(self)
 336				self:SetBackdropColor(unpack(C["media"].backdropcolor))
 337				self:SetBackdropBorderColor(unpack(C["media"].bordercolor))
 338			end
 339		end
 340		
 341			-- reputation bar for max level character
 342			if T.level == MAX_PLAYER_LEVEL then
 343				local Reputation = CreateFrame("StatusBar", self:GetName().."_Reputation", self)
 344				Reputation:SetStatusBarTexture(normTex)
 345				Reputation:Size(TukuiChatBackgroundLeft:GetWidth() - 4, 2)
 346				Reputation:Point("BOTTOM", TukuiChatBackgroundLeft, "TOP", 0, 5)
 347				Reputation:SetFrameLevel(10)
 348				local ReputationBG = Reputation:CreateTexture(nil, 'BORDER')
 349				ReputationBG:SetAllPoints()
 350				ReputationBG:SetTexture(normTex)
 351				ReputationBG:SetVertexColor(0,0,0)
 352
 353				Reputation.Text = Reputation:CreateFontString(nil, 'OVERLAY')
 354				Reputation.Text:SetFont(font, C["datatext"].fontsize, "MONOCHROMEOUTLINE")
 355				Reputation.Text:SetPoint('CENTER', 0, 1)
 356				Reputation.Text:SetShadowOffset(T.mult, -T.mult)
 357				Reputation.Text:Show()
 358				Reputation.PostUpdate = T.UpdateReputation
 359				Reputation.Text = Reputation.Text
 360
 361				Reputation.PostUpdate = T.UpdateReputationColor
 362				Reputation.Tooltip = true
 363				self.Reputation = Reputation
 364
 365				local ReputationFrame = CreateFrame("Frame", nil, self.Reputation)
 366				ReputationFrame:SetPoint("TOPLEFT", T.Scale(-2), T.Scale(2))
 367				ReputationFrame:SetPoint("BOTTOMRIGHT", T.Scale(2), T.Scale(-2))
 368				ReputationFrame:SetTemplate("Transparent")
 369				ReputationFrame:CreateShadow("Default")
 370				ReputationFrame:SetFrameLevel(self.Reputation:GetFrameLevel() - 1)
 371				
 372			local function ModifiedBackdrop(self)
 373				local color = RAID_CLASS_COLORS[T.myclass]
 374				self:SetBackdropColor(unpack(C["media"].backdropcolor))
 375				self:SetBackdropBorderColor(color.r, color.g, color.b)
 376			end
 377
 378			local function OriginalBackdrop(self)
 379				self:SetBackdropColor(unpack(C["media"].backdropcolor))
 380				self:SetBackdropBorderColor(unpack(C["media"].bordercolor))
 381			end
 382		end	
 383			
 384			-- show druid mana when shapeshifted in bear, cat or whatever
 385			if T.myclass == "DRUID" then
 386				CreateFrame("Frame"):SetScript("OnUpdate", function() T.UpdateDruidMana(self) end)
 387				local DruidMana = T.SetFontString(health, font1, 12)
 388				DruidMana:SetTextColor(1, 0.49, 0.04)
 389				self.DruidManaText = DruidMana
 390			end
 391
 392			if C["unitframes"].classbar then
 393				if T.myclass == "DRUID" then
 394					-- DRUID MANA BAR
 395					local DruidManaBackground = CreateFrame("Frame", nil, self)
 396					DruidManaBackground:Point("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
 397					DruidManaBackground:Size(230, 2)
 398					DruidManaBackground:SetFrameLevel(8)
 399					DruidManaBackground:SetFrameStrata("MEDIUM")
 400					DruidManaBackground:SetTemplate("Default")
 401					DruidManaBackground:SetBackdropBorderColor(0,0,0,0)
 402				
 403					local DruidManaBarStatus = CreateFrame('StatusBar', nil, DruidManaBackground)
 404					DruidManaBarStatus:SetPoint('LEFT', DruidManaBackground, 'LEFT', 0, 0)
 405					DruidManaBarStatus:SetSize(DruidManaBackground:GetWidth(), DruidManaBackground:GetHeight())
 406					DruidManaBarStatus:SetStatusBarTexture(normTex)
 407					DruidManaBarStatus:SetStatusBarColor(.30, .52, .90)
 408					
 409					DruidManaBarStatus:SetScript("OnShow", function() T.DruidBarDisplay(self, false) end)
 410					DruidManaBarStatus:SetScript("OnUpdate", function() T.DruidBarDisplay(self, true) end) -- just forcing 1 update on login for buffs/shadow/etc.
 411					DruidManaBarStatus:SetScript("OnHide", function() T.DruidBarDisplay(self, false) end)
 412					
 413					self.DruidManaBackground = DruidManaBackground
 414					self.DruidMana = DruidManaBarStatus
 415					
 416					DruidManaBackground.FrameBackdrop = CreateFrame( "Frame", nil, DruidManaBackground )
 417					DruidManaBackground.FrameBackdrop:SetTemplate( "Default" )
 418					DruidManaBackground.FrameBackdrop:SetPoint( "TOPLEFT", -2, 2 )
 419					DruidManaBackground.FrameBackdrop:SetPoint( "BOTTOMRIGHT", 2, -2 )
 420					DruidManaBackground.FrameBackdrop:SetFrameLevel( DruidManaBackground:GetFrameLevel() - 1 )
 421
 422					local eclipseBar = CreateFrame('Frame', nil, self)
 423					eclipseBar:Point("LEFT", health, "TOPLEFT", 0, 8)
 424					eclipseBar:Size(230, 2)
 425					eclipseBar:SetFrameStrata("MEDIUM")
 426					eclipseBar:SetFrameLevel(8)
 427					eclipseBar:SetBackdropBorderColor(0,0,0,0)
 428					eclipseBar:SetScript("OnShow", function() T.DruidBarDisplay(self, false) end)
 429					eclipseBar:SetScript("OnHide", function() T.DruidBarDisplay(self, false) end)
 430
 431					local lunarBar = CreateFrame('StatusBar', nil, eclipseBar)
 432					lunarBar:SetPoint('LEFT', eclipseBar, 'LEFT', 0, 0)
 433					lunarBar:SetSize(eclipseBar:GetWidth(), eclipseBar:GetHeight())
 434					lunarBar:SetStatusBarTexture(normTex)
 435					lunarBar:SetStatusBarColor(.30, .52, .90)
 436					eclipseBar.LunarBar = lunarBar
 437				
 438					local solarBar = CreateFrame('StatusBar', nil, eclipseBar)
 439					solarBar:SetPoint('LEFT', lunarBar:GetStatusBarTexture(), 'RIGHT', 0, 0)
 440					solarBar:SetSize(eclipseBar:GetWidth(), eclipseBar:GetHeight())
 441					solarBar:SetStatusBarTexture(normTex)
 442					solarBar:SetStatusBarColor(.80, .82,  .60)
 443					eclipseBar.SolarBar = solarBar
 444
 445					local eclipseBarText = eclipseBar:CreateFontString(nil, 'OVERLAY')
 446					eclipseBarText:SetPoint('TOP', eclipseBar, 0, 25)
 447					eclipseBarText:SetPoint('BOTTOM', eclipseBar)
 448					eclipseBarText:SetFont(font, C["datatext"].fontsize, "MONOCHROMEOUTLINE")
 449					eclipseBarText:SetShadowOffset(T.mult, -T.mult)
 450					eclipseBarText:SetShadowColor(0, 0, 0, 0.4)
 451					eclipseBar.PostUpdatePower = T.EclipseDirection
 452
 453					-- hide "low mana" text on load if eclipseBar is shown
 454					if eclipseBar and eclipseBar:IsShown() then FlashInfo.ManaLevel:SetAlpha(0) end
 455
 456					self.EclipseBar = eclipseBar
 457					self.EclipseBar.Text = eclipseBarText
 458
 459					eclipseBar.FrameBackdrop = CreateFrame("Frame", nil, eclipseBar)
 460					eclipseBar.FrameBackdrop:SetTemplate("Default")
 461					eclipseBar.FrameBackdrop:CreateShadow("Default")
 462					eclipseBar.FrameBackdrop:SetPoint("TOPLEFT", -2, 2)
 463					eclipseBar.FrameBackdrop:SetPoint("BOTTOMRIGHT", 2, -2)
 464					eclipseBar.FrameBackdrop:SetFrameLevel(eclipseBar:GetFrameLevel() - 1)
 465				end
 466
 467				-- set holy power bar or shard bar
 468				if (T.myclass == "WARLOCK" or T.myclass == "PALADIN") then
 469
 470					local bars = CreateFrame("Frame", nil, self)
 471					bars:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
 472					bars:Size(230, 2)
 473					bars:SetBackdropBorderColor(0,0,0,0)
 474
 475					for i = 1, 3 do					
 476						bars[i]=CreateFrame("StatusBar", self:GetName().."_Shard"..i, bars)
 477						bars[i]:Height(2)					
 478						bars[i]:SetStatusBarTexture(normTex)
 479						bars[i]:GetStatusBarTexture():SetHorizTile(false)
 480
 481						bars[i].bg = bars[i]:CreateTexture(nil, 'BORDER')
 482
 483						if T.myclass == "WARLOCK" then
 484							bars[i]:SetStatusBarColor(148/255, 130/255, 201/255)
 485							bars[i].bg:SetTexture(148/255, 130/255, 201/255)
 486						elseif T.myclass == "PALADIN" then
 487							bars[i]:SetStatusBarColor(228/255,225/255,16/255)
 488							bars[i].bg:SetTexture(228/255,225/255,16/255)
 489						end
 490
 491						if i == 1 then
 492							bars[i]:SetPoint("LEFT", bars)
 493							bars[i]:Width(229/3) -- setting SetWidth here just to fit fit 250 perfectly
 494							bars[i].bg:SetAllPoints(bars[i])
 495						else
 496							bars[i]:Point("LEFT", bars[i-1], "RIGHT", 1, 0)
 497							bars[i]:Width(229/3) -- setting SetWidth here just to fit fit 250 perfectly
 498							bars[i].bg:SetAllPoints(bars[i])
 499						end
 500						
 501						bars[i].bg:SetTexture(normTex)					
 502						bars[i].bg:SetAlpha(.15)
 503					end
 504
 505					if T.myclass == "WARLOCK" then
 506						bars.Override = T.UpdateShards				
 507						self.SoulShards = bars
 508					elseif T.myclass == "PALADIN" then
 509						bars.Override = T.UpdateHoly
 510						self.HolyPower = bars
 511					end
 512					bars.FrameBackdrop = CreateFrame("Frame", nil, bars)
 513					bars.FrameBackdrop:SetTemplate("Default")
 514					bars.FrameBackdrop:CreateShadow("Default")
 515					bars.FrameBackdrop:SetPoint("TOPLEFT", -2, 2)
 516					bars.FrameBackdrop:SetPoint("BOTTOMRIGHT", 2, -2)
 517					bars.FrameBackdrop:SetFrameLevel(bars:GetFrameLevel() - 1)
 518				end
 519
 520				-- deathknight runes
 521				if T.myclass == "DEATHKNIGHT" then
 522
 523					local Runes = CreateFrame("Frame", nil, self)
 524					Runes:Point("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
 525					Runes:Size(230, 2)
 526
 527					for i = 1, 6 do
 528						Runes[i] = CreateFrame("StatusBar", self:GetName().."_Runes"..i, health)
 529						Runes[i]:SetHeight(2)
 530						if i == 1 then
 531							Runes[i]:SetWidth(35)
 532						else
 533							Runes[i]:SetWidth(229/6)
 534						end
 535						if (i == 1) then
 536							Runes[i]:Point("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
 537						else
 538							Runes[i]:Point("TOPLEFT", Runes[i-1], "TOPRIGHT", 1, 0)
 539						end
 540						Runes[i]:SetStatusBarTexture(normTex)
 541						Runes[i]:GetStatusBarTexture():SetHorizTile(false)
 542					end
 543
 544					self.Runes = Runes
 545
 546					Runes.FrameBackdrop = CreateFrame("Frame", nil, Runes)
 547					Runes.FrameBackdrop:SetTemplate("Default")
 548					Runes.FrameBackdrop:CreateShadow("Default")
 549					Runes.FrameBackdrop:SetPoint("TOPLEFT", -2, 2)
 550					Runes.FrameBackdrop:SetPoint("BOTTOMRIGHT", 2, -2)
 551					Runes.FrameBackdrop:SetFrameLevel(Runes:GetFrameLevel() - 1)
 552				end
 553
 554				-- shaman totem bar
 555				if T.myclass == "SHAMAN" then
 556
 557					local TotemBar = {}
 558					TotemBar.Destroy = true
 559					for i = 1, 4 do
 560						TotemBar[i] = CreateFrame("StatusBar", self:GetName().."_TotemBar"..i, self)
 561						if (i == 1) then
 562						   TotemBar[i]:Point("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
 563						else
 564						   TotemBar[i]:Point("TOPLEFT", TotemBar[i-1], "TOPRIGHT", 5, 0)
 565						end
 566						TotemBar[i]:SetStatusBarTexture(normTex)
 567						TotemBar[i]:Height(2)
 568						if i == 4 then
 569							TotemBar[i]:SetWidth(215/4)
 570						else
 571							TotemBar[i]:SetWidth(215/4)
 572						end
 573						TotemBar[i]:SetBackdrop(backdrop)
 574						TotemBar[i]:SetBackdropColor(0, 0, 0)
 575						TotemBar[i]:SetMinMaxValues(0, 1)
 576
 577						TotemBar[i].bg = TotemBar[i]:CreateTexture(nil, "BORDER")
 578						TotemBar[i].bg:SetAllPoints(TotemBar[i])
 579						TotemBar[i].bg:SetTexture(normTex)
 580						TotemBar[i].bg.multiplier = 0.3
 581						
 582						TotemBar[i].FrameBackdrop = CreateFrame("Frame", nil, TotemBar[i])
 583						TotemBar[i].FrameBackdrop:SetTemplate("Default")
 584						TotemBar[i].FrameBackdrop:CreateShadow("Default")
 585						TotemBar[i].FrameBackdrop:SetPoint("TOPLEFT", -2, 2)
 586						TotemBar[i].FrameBackdrop:SetPoint("BOTTOMRIGHT", 2, -2)
 587						TotemBar[i].FrameBackdrop:SetFrameLevel(TotemBar[i]:GetFrameLevel() - 1)
 588					end
 589					self.TotemBar = TotemBar
 590				end
 591			end	
 592
 593			-- script for low mana
 594			self:SetScript("OnEnter", function(self)
 595				if self.EclipseBar and self.EclipseBar:IsShown() then 
 596					self.EclipseBar.Text:Hide()
 597				end
 598				FlashInfo.ManaLevel:Hide()
 599				UnitFrame_OnEnter(self) 
 600			end)
 601			self:SetScript("OnLeave", function(self) 
 602				if self.EclipseBar and self.EclipseBar:IsShown() then 
 603					self.EclipseBar.Text:Show()
 604				end
 605				FlashInfo.ManaLevel:Show()
 606				UnitFrame_OnLeave(self) 
 607			end)
 608		end
 609
 610		if (unit == "target") then			
 611			-- Unit name on target
 612			local Name = health:CreateFontString(nil, "OVERLAY")
 613			Name:Point("CENTER", health, "CENTER", 0, 1)
 614			Name:SetJustifyH("LEFT")
 615			Name:SetFont(font, C["datatext"].fontsize+1, "MONOCHROMEOUTLINE")
 616			Name:SetShadowOffset(1.25, -1.25)
 617
 618			self:Tag(Name, '[Tukui:getnamecolor][Tukui:nameshort] [Tukui:diffcolor][level] [shortclassification]')
 619			--self.Name = Name
 620			
 621			--combo points change to support sCombo
 622			local cp = T.SetFontString(self, font, 15, "MONOCHROMEOUTLINE")
 623			cp:SetPoint("RIGHT", health.border, "LEFT", -5, 0)
 624			self.CPoints = cp
 625		end
 626		
 627		if (unit == "target" and C["unitframes"].targetauras) or (unit == "player" and C["unitframes"].playerauras) then
 628			local buffs = CreateFrame("Frame", nil, self)
 629			local debuffs = CreateFrame("Frame", nil, self)
 630			
 631			if (T.myclass == "SHAMAN" or T.myclass == "DEATHKNIGHT" or T.myclass == "PALADIN" or T.myclass == "WARLOCK") and (C["unitframes"].playerauras) and (unit == "player") then
 632				if T.lowversion then
 633					buffs:SetPoint("TOPLEFT", self, "TOPLEFT", 0, 34)
 634				else
 635					buffs:SetPoint("TOPLEFT", self, "TOPLEFT", 0, 38)
 636				end
 637			else
 638				if T.lowversion then
 639					buffs:SetPoint("TOPLEFT", self, "TOPLEFT", 0, 26)
 640				else
 641					buffs:SetPoint("TOPLEFT", self, "TOPLEFT", -2, 32)
 642				end
 643			end
 644			
 645			if T.lowversion then
 646				buffs:SetHeight(21.5)
 647				buffs:SetWidth(186)
 648				buffs.size = 21.5
 649				buffs.num = 8
 650				
 651				debuffs:SetHeight(21.5)
 652				debuffs:SetWidth(186)
 653				debuffs:SetPoint("BOTTOMLEFT", buffs, "TOPLEFT", 0, 2)
 654				debuffs.size = 21.5	
 655				debuffs.num = 24
 656			else				
 657				buffs:SetHeight(26)
 658				buffs:SetWidth(252)
 659				buffs.size = 27.5
 660				buffs.num = 8
 661				
 662				debuffs:SetHeight(26)
 663				debuffs:SetWidth(247)
 664				debuffs:SetPoint("BOTTOMLEFT", buffs, "TOPLEFT", -2, 2)
 665				debuffs.size = 26
 666				debuffs.num = 24
 667			end
 668						
 669			buffs.spacing = 2
 670			buffs.initialAnchor = 'TOPLEFT'
 671			buffs.PostCreateIcon = T.PostCreateAura
 672			buffs.PostUpdateIcon = T.PostUpdateAura
 673			self.Buffs = buffs	
 674						
 675			debuffs.spacing = 2
 676			debuffs.initialAnchor = 'TOPRIGHT'
 677			debuffs["growth-y"] = "UP"
 678			debuffs["growth-x"] = "LEFT"
 679			debuffs.PostCreateIcon = T.PostCreateAura
 680			debuffs.PostUpdateIcon = T.PostUpdateAura
 681			
 682			-- An option to show only our debuffs on target
 683			if unit == "target" then
 684				debuffs.onlyShowPlayer = C.unitframes.onlyselfdebuffs
 685			end
 686			
 687			self.Debuffs = debuffs
 688		end
 689
 690		-- cast bar for player and target
 691		if (C["unitframes"].unitcastbar == true) then
 692			local castbar = CreateFrame("StatusBar", self:GetName().."CastBar", self)
 693			castbar:SetStatusBarTexture(normTex)
 694			
 695			castbar.bg = castbar:CreateTexture(nil, "BORDER")
 696			castbar.bg:SetAllPoints(castbar)
 697			castbar.bg:SetTexture(normTex)
 698			castbar.bg:SetVertexColor(.05, .05, .05)
 699			if unit == "player" then
 700				if C["unitframes"].cbicons == true then
 701					castbar:SetWidth(TukuiBar1:GetWidth() - 31)
 702				else
 703					castbar:SetWidth(TukuiBar1:GetWidth() - 4)
 704				end
 705				castbar:SetHeight(20)
 706				castbar:Point("BOTTOMRIGHT", TukuiBar1, "TOPRIGHT", -2, 5)
 707			elseif unit == "target" then
 708				if C["unitframes"].cbicons == true then
 709					castbar:SetWidth(225 - 28)
 710				else
 711					castbar:SetWidth(246)
 712				end
 713				castbar:SetHeight(20)
 714				castbar:Point("BOTTOM", TukuiBar1, "TOP", 0, 60)
 715			end
 716			castbar:SetFrameLevel(6)
 717			
 718			if( C["unitframes"].cbspark == true ) then
 719					castbar.Spark = castbar:CreateTexture(nil, 'OVERLAY')
 720					castbar.Spark:SetHeight(36)
 721					castbar.Spark:SetWidth(15)
 722					castbar.Spark:SetBlendMode('ADD')
 723				end
 724
 725			-- Border
 726			castbar.border = CreateFrame("Frame", nil, castbar)
 727			castbar.border:CreatePanel("Default",1,1,"TOPLEFT", castbar, "TOPLEFT", -2, 2)
 728			castbar.border:CreateShadow("Default")
 729			castbar.border:Point("BOTTOMRIGHT", castbar, "BOTTOMRIGHT", 2, -2)
 730			
 731			castbar.CustomTimeText = T.CustomCastTimeText
 732			castbar.CustomDelayText = T.CustomCastDelayText
 733			castbar.PostCastStart = T.PostCastStart
 734			castbar.PostChannelStart = T.PostCastStart
 735
 736			castbar.time = T.SetFontString(castbar,font, C["datatext"].fontsize, "MONOCHROMEOUTLINE")
 737			castbar.time:Point("RIGHT", castbar.bg, "RIGHT", -4, 0)
 738			castbar.time:SetTextColor(0, 4, 0)
 739			castbar.time:SetJustifyH("RIGHT")
 740
 741			castbar.Text = T.SetFontString(castbar,font, C["datatext"].fontsize, "MONOCHROMEOUTLINE")
 742			castbar.Text:Point("LEFT", castbar.bg, "LEFT", 4, 0)
 743			castbar.Text:SetTextColor(0.3, 0.2, 1)
 744			castbar.Text:Width(100)
 745			castbar.Text:Height(10)
 746			
 747			if C["unitframes"].cbicons == true then
 748				castbar.button = CreateFrame("Frame", nil, castbar)
 749				castbar.button:Size(24)
 750				castbar.button:SetTemplate("Default")
 751				castbar.button:CreateShadow("Default")
 752				castbar.button:SetPoint("RIGHT",castbar,"LEFT", -5, 0)
 753
 754				castbar.icon = castbar.button:CreateTexture(nil, "ARTWORK")
 755				castbar.icon:Point("TOPLEFT", castbar.button, 2, -2)
 756				castbar.icon:Point("BOTTOMRIGHT", castbar.button, -2, 2)
 757				castbar.icon:SetTexCoord(0.08, 0.92, 0.08, .92)
 758			end
 759			
 760			-- cast bar latency on player
 761			if unit == "player" and C["unitframes"].cblatency == true then
 762				castbar.safezone = castbar:CreateTexture(nil, "ARTWORK")
 763				castbar.safezone:SetTexture(normTex)
 764				castbar.safezone:SetVertexColor(0.8, 0.2, 0.2, 0.75)
 765				castbar.SafeZone = castbar.safezone
 766			end
 767					
 768			self.Castbar = castbar
 769			self.Castbar.Time = castbar.time
 770			self.Castbar.Icon = castbar.icon
 771		end
 772
 773		-- add combat feedback support
 774		if C["unitframes"].combatfeedback == true then
 775			local CombatFeedbackText 
 776			CombatFeedbackText = T.SetFontString(health, font,  C["datatext"].fontsize+1, "MONOCHROMEOUTLINE")
 777			CombatFeedbackText:SetPoint("CENTER", 0, 1)
 778			CombatFeedbackText.colors = {
 779				DAMAGE = {0.69, 0.31, 0.31},
 780				CRUSHING = {0.69, 0.31, 0.31},
 781				CRITICAL = {0.69, 0.31, 0.31},
 782				GLANCING = {0.69, 0.31, 0.31},
 783				STANDARD = {0.84, 0.75, 0.65},
 784				IMMUNE = {0.84, 0.75, 0.65},
 785				ABSORB = {0.84, 0.75, 0.65},
 786				BLOCK = {0.84, 0.75, 0.65},
 787				RESIST = {0.84, 0.75, 0.65},
 788				MISS = {0.84, 0.75, 0.65},
 789				HEAL = {0.33, 0.59, 0.33},
 790				CRITHEAL = {0.33, 0.59, 0.33},
 791				ENERGIZE = {0.31, 0.45, 0.63},
 792				CRITENERGIZE = {0.31, 0.45, 0.63},
 793			}
 794			self.CombatFeedbackText = CombatFeedbackText
 795		end
 796		
 797		if C["unitframes"].healcomm then
 798			local mhpb = CreateFrame('StatusBar', nil, self.Health)
 799			mhpb:SetPoint('TOPLEFT', self.Health:GetStatusBarTexture(), 'TOPRIGHT', 0, 0)
 800			mhpb:SetPoint('BOTTOMLEFT', self.Health:GetStatusBarTexture(), 'BOTTOMRIGHT', 0, 0)
 801			if T.lowversion then
 802				mhpb:SetWidth(186)
 803			else
 804				mhpb:SetWidth(250)
 805			end
 806			mhpb:SetStatusBarTexture(normTex)
 807			mhpb:SetStatusBarColor(0, 1, 0.5, 0.25)
 808			mhpb:SetMinMaxValues(0,1)
 809
 810			local ohpb = CreateFrame('StatusBar', nil, self.Health)
 811			ohpb:SetPoint('TOPLEFT', mhpb:GetStatusBarTexture(), 'TOPRIGHT', 0, 0)
 812			ohpb:SetPoint('BOTTOMLEFT', mhpb:GetStatusBarTexture(), 'BOTTOMRIGHT', 0, 0)
 813			ohpb:SetWidth(250)
 814			ohpb:SetStatusBarTexture(normTex)
 815			ohpb:SetStatusBarColor(0, 1, 0, 0.25)
 816
 817			self.HealPrediction = {
 818				myBar = mhpb,
 819				otherBar = ohpb,
 820				maxOverflow = 1,
 821			}
 822		end
 823		
 824		-- player aggro
 825		if C["unitframes"].playeraggro == true then
 826			table.insert(self.__elements, T.UpdateThreat)
 827			self:RegisterEvent('PLAYER_TARGET_CHANGED', T.UpdateThreat)
 828			self:RegisterEvent('UNIT_THREAT_LIST_UPDATE', T.UpdateThreat)
 829			self:RegisterEvent('UNIT_THREAT_SITUATION_UPDATE', T.UpdateThreat)
 830		end
 831	end
 832	
 833	------------------------------------------------------------------------
 834	--	Target of Target unit layout
 835	------------------------------------------------------------------------
 836	
 837	if (unit == "targettarget") then
 838	
 839		-- create panel for both high and low version
 840		local panel = CreateFrame("Frame", nil, self)
 841		if T.lowversion then
 842			panel:CreatePanel("Default", 129, 17, "BOTTOM", self, "BOTTOM", 0, T.Scale(0))
 843			panel:SetFrameLevel(2)
 844			panel:SetFrameStrata("MEDIUM")
 845			panel:SetBackdropBorderColor(unpack(C["media"].bordercolor))
 846			panel:SetAlpha(0)
 847			self.panel = panel
 848		else
 849			panel:CreatePanel("Default", 129, 17, "BOTTOM", self, "BOTTOM", 0, T.Scale(0))
 850			panel:SetFrameLevel(2)
 851			panel:SetFrameStrata("MEDIUM")
 852			panel:SetBackdropBorderColor(unpack(C["media"].bordercolor))
 853			panel:SetAlpha(0)
 854			self.panel = panel
 855		end
 856		
 857		-- health bar
 858		local health = CreateFrame('StatusBar', nil, self)
 859		health:Height(15)
 860		health:SetPoint("TOPLEFT")
 861		health:SetPoint("TOPRIGHT")
 862		health:SetStatusBarTexture(normTex)
 863		
 864		-- Border for ToT
 865		local HealthBorder = CreateFrame("Frame", nil, health)
 866		HealthBorder:SetPoint("TOPLEFT", health, "TOPLEFT", -2, 2)
 867		HealthBorder:SetPoint("BOTTOMRIGHT", health, "BOTTOMRIGHT", 2, -2)
 868		HealthBorder:SetTemplate("Default")
 869		HealthBorder:CreateShadow("Default")
 870		HealthBorder:SetFrameLevel(2)
 871		self.HealthBorder = HealthBorder
 872		
 873		local healthBG = health:CreateTexture(nil, 'BORDER')
 874		healthBG:SetAllPoints()
 875		healthBG:SetTexture(0, 0, 0)
 876		
 877		self.Health = health
 878		self.Health.bg = healthBG
 879		
 880		health.frequentUpdates = true
 881		if C["unitframes"].showsmooth == true then
 882			health.Smooth = true
 883		end
 884		
 885		if C["unitframes"].unicolor == true then
 886			health.colorDisconnected = false
 887			health.colorClass = false
 888			health:SetStatusBarColor(.150, .150, .150, 1)
 889			healthBG:SetVertexColor(0, 0, 0, 1)		
 890		else
 891			health.colorDisconnected = true
 892			health.colorClass = true
 893			health.colorReaction = true			
 894		end
 895		
 896		-- power
 897		local power = CreateFrame('StatusBar', nil, self)
 898		power:Size(130, 2)
 899		power:Point("TOP", health, "BOTTOM", 0, -7)
 900		power:SetStatusBarTexture(normTex)
 901		
 902		-- Border for Power
 903		local PowerBorder = CreateFrame("Frame", nil, power)
 904		PowerBorder:SetPoint("TOPLEFT", power, "TOPLEFT", -2, 2)
 905		PowerBorder:SetPoint("BOTTOMRIGHT", power, "BOTTOMRIGHT", 2, -2)
 906		PowerBorder:SetTemplate("Default")
 907		PowerBorder:CreateShadow("Default")
 908		PowerBorder:SetFrameLevel(power:GetFrameLevel() - 1)
 909		self.PowerBorder = PowerBorder
 910		
 911		power.frequentUpdates = true
 912
 913		if C["unitframes"].showsmooth == true then
 914			power.Smooth = true
 915		end
 916
 917		local powerBG = power:CreateTexture(nil, 'BORDER')
 918		powerBG:SetAllPoints(power)
 919		powerBG:SetTexture(normTex)
 920		powerBG.multiplier = 0.3
 921				
 922		self.Power = power
 923		self.Power.bg = powerBG
 924
 925		if C["unitframes"].showsmooth == true then
 926			power.Smooth = true
 927		end
 928		
 929		if C["unitframes"].unicolor == true then
 930			power.colorTapping = true
 931			power.colorClass = true
 932			power.colorReaction = true
 933			powerBG.multiplier = 0.1				
 934		else
 935			power.colorPower = true
 936		end
 937		
 938		-- Unit name
 939		local Name = health:CreateFontString(nil, "OVERLAY")
 940		Name:SetPoint("CENTER", self.Health, "CENTER", 0, 1)
 941		Name:SetFont(font, C["datatext"].fontsize+1, "MONOCHROMEOUTLINE")
 942		Name:SetJustifyH("CENTER")
 943
 944		self:Tag(Name, '[Tukui:getnamecolor][Tukui:namemedium]')
 945		self.Name = Name
 946		
 947		if C["unitframes"].totdebuffs == true then
 948			local debuffs = CreateFrame("Frame", nil, health)
 949			debuffs:SetHeight(24)
 950			debuffs:SetWidth(128)
 951			debuffs.size = 24
 952			debuffs.spacing = 3
 953			debuffs.num = 5
 954
 955			debuffs:SetPoint("TOPLEFT", health, "TOPLEFT", -2, 29)
 956			debuffs.initialAnchor = "TOPLEFT"
 957			debuffs["growth-y"] = "UP"
 958			debuffs.PostCreateIcon = T.PostCreateAura
 959			debuffs.PostUpdateIcon = T.PostUpdateAura
 960			self.Debuffs = debuffs
 961		end
 962	end
 963	
 964	------------------------------------------------------------------------
 965	--	Pet unit layout
 966	------------------------------------------------------------------------
 967	
 968	if (unit == "pet") then
 969	
 970		-- create panel for both high and low version
 971		local panel = CreateFrame("Frame", nil, self)
 972		if T.lowversion then
 973			panel:CreatePanel("Default", 129, 17, "BOTTOM", self, "BOTTOM", 0, T.Scale(0))
 974			panel:SetFrameLevel(2)
 975			panel:SetFrameStrata("MEDIUM")
 976			panel:SetBackdropBorderColor(unpack(C["media"].bordercolor))
 977			panel:SetAlpha(0)
 978			self.panel = panel
 979		else
 980			panel:CreatePanel("Default", 129, 17, "BOTTOM", self, "BOTTOM", 0, T.Scale(0))
 981			panel:SetFrameLevel(2)
 982			panel:SetFrameStrata("MEDIUM")
 983			panel:SetBackdropBorderColor(unpack(C["media"].bordercolor))
 984			panel:SetAlpha(0)
 985			self.panel = panel
 986		end
 987		
 988		-- health bar
 989		local health = CreateFrame('StatusBar', nil, self)
 990		if C["unitframes"].extendedpet == true then
 991			health:Height(15)
 992		else
 993			health:Height(22)
 994		end
 995		health:SetPoint("TOPLEFT")
 996		health:SetPoint("TOPRIGHT")
 997		health:SetStatusBarTexture(normTex)
 998		
 999		-- Border for Health
1000		local HealthBorder = CreateFrame("Frame", nil, health)
1001		HealthBorder:SetPoint("TOPLEFT", health, "TOPLEFT", -2, 2)
1002		HealthBorder:SetPoint("BOTTOMRIGHT", health, "BOTTOMRIGHT", 2, -2)
1003		HealthBorder:SetTemplate("Default")
1004		HealthBorder:CreateShadow("Default")
1005		HealthBorder:SetFrameLevel(2)
1006		self.HealthBorder = HealthBorder
1007		
1008		health.PostUpdate = T.PostUpdatePetColor
1009				
1010		self.Health = health
1011		self.Health.bg = healthBG
1012		
1013		local healthBG = health:CreateTexture(nil, 'BORDER')
1014		healthBG:SetAllPoints()
1015		healthBG:SetTexture(0, 0, 0)
1016		
1017		health.frequentUpdates = true
1018		if C["unitframes"].showsmooth == true then
1019			health.Smooth = true
1020		end
1021		
1022		if C["unitframes"].unicolor == true then
1023			health.colorDisconnected = false
1024			health.colorClass = false
1025			health:SetStatusBarColor(.150, .150, .150, 1)
1026			healthBG:SetVertexColor(0, 0, 0, 1)		
1027		else
1028			health.colorDisconnected = true	
1029			health.colorClass = true
1030			health.colorReaction = true	
1031			if T.myclass == "HUNTER" then
1032				health.colorHappiness = true
1033			end
1034		end
1035		
1036		-- power
1037		if C["unitframes"].extendedpet == true then
1038			local power = CreateFrame('StatusBar', nil, self)
1039			power:Size(130, 2)
1040			power:Point("TOP", health, "BOTTOM", 0, -7)
1041			power:SetStatusBarTexture(normTex)
1042
1043			power.frequentUpdates = true
1044			power.colorPower = true
1045			if C["unitframes"].showsmooth == true then
1046				power.Smooth = true
1047			end
1048
1049			local powerBG = power:CreateTexture(nil, 'BORDER')
1050			powerBG:SetAllPoints(power)
1051			powerBG:SetTexture(normTex)
1052			powerBG.multiplier = 0.3
1053			
1054			-- Border for Power
1055			local PowerBorder = CreateFrame("Frame", nil, power)
1056			PowerBorder:SetPoint("TOPLEFT", power, "TOPLEFT", -2, 2)
1057			PowerBorder:SetPoint("BOTTOMRIGHT", power, "BOTTOMRIGHT", 2, -2)
1058			PowerBorder:SetTemplate("Default")
1059			PowerBorder:CreateShadow("Default")
1060			PowerBorder:SetFrameLevel(power:GetFrameLevel() - 1)
1061			self.PowerBorder = PowerBorder
1062
1063			self.Power = power
1064			self.Power.bg = powerBG
1065		end
1066				
1067		-- Unit name
1068		local Name = health:CreateFontString(nil, "OVERLAY")
1069		Name:SetPoint("CENTER", self.Health, "CENTER", 1, 1)
1070		Name:SetFont(font, C["datatext"].fontsize+1, "MONOCHROMEOUTLINE")
1071		Name:SetJustifyH("CENTER")
1072
1073		self:Tag(Name, '[Tukui:getnamecolor][Tukui:namemedium]')
1074		self.Name = Name
1075		
1076		-- update pet name, this should fix "UNKNOWN" pet names on pet unit, health and bar color sometime being "grayish".
1077		self:RegisterEvent("UNIT_PET", T.updateAllElements)
1078	end
1079	
1080	------------------------------------------------------------------------
1081	--	Pet target unit layout
1082	------------------------------------------------------------------------
1083	
1084	if (unit == "pettarget") then
1085		-- health bar
1086		local health = CreateFrame('StatusBar', nil, self)
1087		health:Height(15)
1088		health:SetPoint("TOPLEFT")
1089		health:SetPoint("TOPRIGHT")
1090		health:SetStatusBarTexture(normTex)
1091		
1092		-- Border for ToT
1093		local HealthBorder = CreateFrame("Frame", nil, health)
1094		HealthBorder:SetPoint("TOPLEFT", health, "TOPLEFT", -2, 2)
1095		HealthBorder:SetPoint("BOTTOMRIGHT", health, "BOTTOMRIGHT", 2, -2)
1096		HealthBorder:SetTemplate("Default")
1097		HealthBorder:CreateShadow("Default")
1098		HealthBorder:SetFrameLevel(2)
1099		self.HealthBorder = HealthBorder
1100		
1101		local healthBG = health:CreateTexture(nil, 'BORDER')
1102		healthBG:SetAllPoints()
1103		healthBG:SetTexture(0, 0, 0)
1104		
1105		self.Health = health
1106		self.Health.bg = healthBG
1107		
1108		health.frequentUpdates = true
1109		if C["unitframes"].showsmooth == true then
1110			health.Smooth = true
1111		end
1112		
1113		if C["unitframes"].unicolor == true then
1114			health.colorDisconnected = false
1115			health.colorClass = false
1116			health:SetStatusBarColor(.150, .150, .150, 1)
1117			healthBG:SetVertexColor(0, 0, 0, 1)		
1118		else
1119			health.colorDisconnected = true
1120			health.colorClass = true
1121			health.colorReaction = true			
1122		end
1123		
1124		-- power
1125		local power = CreateFrame('StatusBar', nil, self)
1126		power:Size(128, 2)
1127		power:Point("TOP", health, "BOTTOM", 0, -7)
1128		power:SetStatusBarTexture(normTex)
1129		
1130		-- Border for Power
1131		local PowerBorder = CreateFrame("Frame", nil, power)
1132		PowerBorder:SetPoint("TOPLEFT", power, "TOPLEFT", -2, 2)
1133		PowerBorder:SetPoint("BOTTOMRIGHT", power, "BOTTOMRIGHT", 2, -2)
1134		PowerBorder:SetTemplate("Default")
1135		PowerBorder:CreateShadow("Default")
1136		PowerBorder:SetFrameLevel(power:GetFrameLevel() - 1)
1137		self.PowerBorder = PowerBorder
1138		
1139		power.frequentUpdates = true
1140
1141		if C["unitframes"].showsmooth == true then
1142			power.Smooth = true
1143		end
1144
1145		local powerBG = power:CreateTexture(nil, 'BORDER')
1146		powerBG:SetAllPoints(power)
1147		powerBG:SetTexture(normTex)
1148		powerBG.multiplier = 0.3
1149				
1150		self.Power = power
1151		self.Power.bg = powerBG
1152
1153		if C["unitframes"].showsmooth == true then
1154			power.Smooth = true
1155		end
1156		
1157		if C["unitframes"].unicolor == true then
1158			power.colorTapping = true
1159			power.colorClass = true
1160			power.colorReaction = true
1161			powerBG.multiplier = 0.1				
1162		else
1163			power.colorPower = true
1164		end
1165		
1166		-- Unit name
1167		local Name = health:CreateFontString(nil, "OVERLAY")
1168		Name:SetPoint("CENTER", self.Health, "CENTER", 0, 1)
1169		Name:SetFont(font, C["datatext"].fontsize+1, "MONOCHROMEOUTLINE")
1170		Name:SetJustifyH("CENTER")
1171
1172		self:Tag(Name, '[Tukui:getnamecolor][Tukui:namemedium]')
1173		self.Name = Name
1174		
1175		-- update pet name, this should fix "UNKNOWN" pet names on pet unit, health and bar color sometime being "grayish".
1176		self:RegisterEvent("UNIT_PET", T.updateAllElements)
1177	end
1178
1179
1180	------------------------------------------------------------------------
1181	--	Focus unit layout
1182	------------------------------------------------------------------------
1183	
1184	if (unit == "focus") then
1185		-- health 
1186		local health = CreateFrame('StatusBar', nil, self)
1187		health:Height(18)
1188		health:SetPoint("TOPLEFT")
1189		health:SetPoint("TOPRIGHT")
1190		health:SetStatusBarTexture(normTex)
1191		
1192		-- Border for Health
1193		local HealthBorder = CreateFrame("Frame", nil, health)
1194		HealthBorder:SetPoint("TOPLEFT", health, "TOPLEFT", -2, 2)
1195		HealthBorder:SetPoint("BOTTOMRIGHT", health, "BOTTOMRIGHT", 2, -2)
1196		HealthBorder:SetTemplate("Default")
1197		HealthBorder:CreateShadow("Default")
1198		HealthBorder:SetFrameLevel(2)
1199		self.HealthBorder = HealthBorder
1200
1201		health.frequentUpdates = true
1202		health.colorDisconnected = true
1203		if C["unitframes"].showsmooth == true then
1204			health.Smooth = true
1205		end
1206		health.colorClass = true
1207		
1208		local healthBG = health:CreateTexture(nil, 'BORDER')
1209		healthBG:SetAllPoints()
1210		healthBG:SetTexture(0, 0, 0)
1211
1212		health.value = T.SetFontString(health, font,  C["datatext"].fontsize+1, "MONOCHROMEOUTLINE")
1213		health.value:Point("LEFT", 2, 0)
1214		health.PostUpdate = T.PostUpdateHealth
1215				
1216		self.Health = health
1217		self.Health.bg = healthBG
1218		
1219		health.frequentUpdates = true
1220		if C["unitframes"].showsmooth == true then
1221			health.Smooth = true
1222		end
1223		
1224		if C["unitframes"].unicolor == true then
1225			health.colorDisconnected = false
1226			health.colorClass = false
1227			health:SetStatusBarColor(.150, .150, .150, 1)
1228			healthBG:SetVertexColor(0, 0, 0, 1)		
1229		else
1230			health.colorDisconnected = true
1231			health.colorClass = true
1232			health.colorReaction = true	
1233		end
1234	
1235		-- power
1236		local power = CreateFrame('StatusBar', nil, self)
1237		power:Size(200, 2)
1238		power:Point("TOP", health, "BOTTOM", 0, -7)
1239		power:SetStatusBarTexture(normTex)
1240		
1241		-- Border for Power
1242		local PowerBorder = CreateFrame("Frame", nil, power)
1243		PowerBorder:SetPoint("TOPLEFT", power, "TOPLEFT", -2, 2)
1244		PowerBorder:SetPoint("BOTTOMRIGHT", power, "BOTTOMRIGHT", 2, -2)
1245		PowerBorder:SetTemplate("Default")
1246		PowerBorder:CreateShadow("Default")
1247		PowerBorder:SetFrameLevel(power:GetFrameLevel() - 1)
1248		self.PowerBorder = PowerBorder
1249		
1250		power.frequentUpdates = true
1251		power.colorPower = true
1252		if C["unitframes"].showsmooth == true then
1253			power.Smooth = true
1254		end
1255
1256		local powerBG = power:CreateTexture(nil, 'BORDER')
1257		powerBG:SetAllPoints(power)
1258		powerBG:SetTexture(normTex)
1259		powerBG.multiplier = 0.3
1260		
1261		power.value = T.SetFontString(health, font,  C["datatext"].fontsize+1, "MONOCHROMEOUTLINE")
1262		power.value:Point("RIGHT", -2, 1)
1263		power.PreUpdate = T.PreUpdatePower
1264		power.PostUpdate = T.PostUpdatePower
1265				
1266		self.Power = power
1267		self.Power.bg = powerBG
1268		
1269		-- names
1270		local Name = health:CreateFontString(nil, "OVERLAY")
1271		Name:SetPoint("CENTER", health, "CENTER", 0, 1)
1272		Name:SetJustifyH("CENTER")
1273		Name:SetFont(font, C["datatext"].fontsize+1, "MONOCHROMEOUTLINE")
1274		Name:SetShadowColor(0, 0, 0)
1275		Name:SetShadowOffset(1.25, -1.25)
1276		
1277		self:Tag(Name, '[Tukui:getnamecolor][Tukui:nameshort]')
1278		self.Name = Name
1279
1280		-- create debuff for arena units
1281		local debuffs = CreateFrame("Frame", nil, self)
1282		debuffs:SetHeight(26)
1283		debuffs:SetWidth(200)
1284		debuffs:Point('RIGHT', self, 'LEFT', -4, 0)
1285		debuffs.size = 26
1286		debuffs.num = 8
1287		debuffs.spacing = 2
1288		debuffs.initialAnchor = 'RIGHT'
1289		debuffs["growth-x"] = "LEFT"
1290		debuffs.PostCreateIcon = T.PostCreateAura
1291		debuffs.PostUpdateIcon = T.PostUpdateAura
1292		self.Debuffs = debuffs
1293		
1294		local castbar = CreateFrame("StatusBar", self:GetName().."CastBar", self)
1295		castbar:SetPoint("LEFT", 0, 0)
1296		castbar:SetPoint("RIGHT", -23, 0)
1297		castbar:SetPoint("BOTTOM", 0, -20)
1298		
1299		castbar:SetHeight(16)
1300		castbar:SetStatusBarTexture(normTex)
1301		castbar:SetFrameLevel(6)
1302		
1303		castbar.bg = CreateFrame("Frame", nil, castbar)
1304		castbar.bg:SetTemplate("Default")
1305		castbar.bg:CreateShadow("Default")
1306		castbar.bg:SetBackdropBorderColor(unpack(C["media"].bordercolor))
1307		castbar.bg:Point("TOPLEFT", -2, 2)
1308		castbar.bg:Point("BOTTOMRIGHT", 2, -2)
1309		castbar.bg:SetFrameLevel(5)
1310		
1311		castbar.time = T.SetFontString(castbar,font, C["datatext"].fontsize, "MONOCHROMEOUTLINE")
1312		castbar.time:Point("RIGHT", castbar, "RIGHT", -4, 0)
1313		castbar.time:SetTextColor(0, 4, 0)
1314		castbar.time:SetJustifyH("RIGHT")
1315		castbar.CustomTimeText = T.CustomCastTimeText
1316
1317		castbar.Text = T.SetFontString(castbar,font, C["datatext"].fontsize, "MONOCHROMEOUTLINE")
1318		castbar.Text:SetPoint("LEFT", castbar, "LEFT", 4, 0)
1319		castbar.Text:SetTextColor(0.3, 0.2, 1)
1320		castbar.Text:Width(100)
1321		castbar.Text:Height(12)
1322		
1323		castbar.CustomDelayText = T.CustomCastDelayText
1324		castbar.PostCastStart =T.PostCastStart
1325		castbar.PostChannelStart = T.PostCastStart
1326								
1327		castbar.button = CreateFrame("Frame", nil, castbar)
1328		castbar.button:Height(castbar:GetHeight()+4)
1329		castbar.button:Width(castbar:GetHeight()+4)
1330		castbar.button:Point("LEFT", castbar, "RIGHT", 5, 0)
1331		castbar.button:SetTemplate("Default")
1332		castbar.button:CreateShadow("Default")
1333		castbar.button:SetBackdropBorderColor(unpack(C["media"].bordercolor))
1334		castbar.icon = castbar.button:CreateTexture(nil, "ARTWORK")
1335		castbar.icon:Point("TOPLEFT", castbar.button, 2, -2)
1336		castbar.icon:Point("BOTTOMRIGHT", castbar.button, -2, 2)
1337		castbar.icon:SetTexCoord(0.08, 0.92, 0.08, .92)
1338
1339		self.Castbar = castbar
1340		self.Castbar.Time = castbar.time
1341		self.Castbar.Icon = castbar.icon
1342	end
1343	
1344	------------------------------------------------------------------------
1345	--	Focus target unit layout
1346	------------------------------------------------------------------------
1347
1348	if (unit == "focustarget") then
1349		-- health 
1350		local health = CreateFrame('StatusBar', nil, self)
1351		health:Height(18)
1352		health:SetPoint("TOPLEFT")
1353		health:SetPoint("TOPRIGHT")
1354		health:SetStatusBarTexture(normTex)
1355		
1356		-- Border for Health
1357		local HealthBorder = CreateFrame("Frame", nil, health)
1358		HealthBorder:SetPoint("TOPLEFT", health, "TOPLEFT", -2, 2)
1359		HealthBorder:SetPoint("BOTTOMRIGHT", health, "BOTTOMRIGHT", 2, -2)
1360		HealthBorder:SetTemplate("Default")
1361		HealthBorder:CreateShadow("Default")
1362		HealthBorder:SetFrameLevel(2)
1363		self.HealthBorder = HealthBorder
1364
1365		health.frequentUpdates = true
1366		health.colorDisconnected = true
1367		if C["unitframes"].showsmooth == true then
1368			health.Smooth = true
1369		end
1370		health.colorClass = true
1371		
1372		local healthBG = health:CreateTexture(nil, 'BORDER')
1373		healthBG:SetAllPoints()
1374		healthBG:SetTexture(0, 0, 0)
1375
1376		health.value = T.SetFontString(health, font,  C["datatext"].fontsize+1, "MONOCHROMEOUTLINE")
1377		health.value:Point("LEFT", 2, 0)
1378		health.PostUpdate = T.PostUpdateHealth
1379				
1380		self.Health = health
1381		self.Health.bg = healthBG
1382		
1383		health.frequentUpdates = true
1384		if C["unitframes"].showsmooth == true then
1385			health.Smooth = true
1386		end
1387		
1388		if C["unitframes"].unicolor == true then
1389			health.colorDisconnected = false
1390			health.colorClass = false
1391			health:SetStatusBarColor(.150, .150, .150, 1)
1392			healthBG:SetVertexColor(0, 0, 0, 1)		
1393		else
1394			health.colorDisconnected = true
1395			health.colorClass = true
1396			health.colorReaction = true	
1397		end
1398	
1399		-- power
1400		local power = CreateFrame('StatusBar', nil, self)
1401		power:Size(200, 2)
1402		power:Point("TOP", health, "BOTTOM", 0, -7)
1403		power:SetStatusBarTexture(normTex)
1404		
1405		-- Border for Power
1406		local PowerBorder = CreateFrame("Frame", nil, power)
1407		PowerBorder:SetPoint("TOPLEFT", power, "TOPLEFT", -2, 2)
1408		PowerBorder:SetPoint("BOTTOMRIGHT", power, "BOTTOMRIGHT", 2, -2)
1409		PowerBorder:SetTemplate("Default")
1410		PowerBorder:CreateShadow("Default")
1411		PowerBorder:SetFrameLevel(power:GetFrameLevel() - 1)
1412		self.PowerBorder = PowerBorder
1413		
1414		power.frequentUpdates = true
1415		power.colorPower = true
1416		if C["unitframes"].showsmooth == true then
1417			power.Smooth = true
1418		end
1419
1420		local powerBG = power:CreateTexture(nil, 'BORDER')
1421		powerBG:SetAllPoints(power)
1422		powerBG:SetTexture(normTex)
1423		powerBG.multiplier = 0.3
1424		
1425		power.value = T.SetFontString(health, font,  C["datatext"].fontsize+1, "MONOCHROMEOUTLINE")
1426		power.value:Point("RIGHT", -2, 1)
1427		power.PreUpdate = T.PreUpdatePower
1428		power.PostUpdate = T.PostUpdatePower
1429				
1430		self.Power = power
1431		self.Power.bg = powerBG
1432		
1433		-- names
1434		local Name = health:CreateFontString(nil, "OVERLAY")
1435		Name:SetPoint("CENTER", health, "CENTER", 0, 1)
1436		Name:SetJustifyH("CENTER")
1437		Name:SetFont(font, C["datatext"].fontsize+1, "MONOCHROMEOUTLINE")
1438		Name:SetShadowColor(0, 0, 0)
1439		Name:SetShadowOffset(1.25, -1.25)
1440		
1441		self:Tag(Name, '[Tukui:getnamecolor][Tukui:nameshort]')
1442		self.Name = Name
1443
1444		-- create debuff for arena units
1445		local debuffs = CreateFrame("Frame", nil, self)
1446		debuffs:SetHeight(26)
1447		debuffs:SetWidth(200)
1448		debuffs:Point('RIGHT', self, 'LEFT', -4, 0)
1449		debuffs.size = 26
1450		debuffs.num = 0
1451		debuffs.spacing = 2
1452		debuffs.initialAnchor = 'RIGHT'
1453		debuffs["growth-x"] = "LEFT"
1454		debuffs.PostCreateIcon = T.PostCreateAura
1455		debuffs.PostUpdateIcon = T.PostUpdateAura
1456		self.Debuffs = debuffs
1457		
1458		local castbar = CreateFrame("StatusBar", self:GetName().."CastBar", self)
1459		castbar:SetPoint("LEFT", 0, 0)
1460		castbar:SetPoint("RIGHT", -23, 0)
1461		castbar:SetPoint("BOTTOM", 0, -20)
1462		
1463		castbar:SetHeight(16)
1464		castbar:SetStatusBarTexture(normTex)
1465		castbar:SetFrameLevel(6)
1466		
1467		castbar.bg = CreateFrame("Frame", nil, castbar)
1468		castbar.bg:SetTemplate("Default")
1469		castbar.bg:CreateShadow("Default")
1470		castbar.bg:SetBackdropBorderColor(unpack(C["media"].bordercolor))
1471		castbar.bg:Point("TOPLEFT", -2, 2)
1472		castbar.bg:Point("BOTTOMRIGHT", 2, -2)
1473		castbar.bg:SetFrameLevel(5)
1474		
1475		castbar.time = T.SetFontString(castbar,font, C["datatext"].fon

Large files files are truncated, but you can click here to view the full file