Advertisement
Wetxius

Untitled

May 16th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 65.21 KB | None | 0 0
  1. local T, C, L, _ = unpack(select(2, ...))
  2. if C.unitframe.enable ~= true then return end
  3.  
  4. ----------------------------------------------------------------------------------------
  5. -- UnitFrames based on oUF_Caellian(by Caellian)
  6. ----------------------------------------------------------------------------------------
  7. local _, ns = ...
  8. local oUF = ns.oUF
  9.  
  10. -- Create layout
  11. local function Shared(self, unit)
  12. -- Set our own colors
  13. self.colors = T.oUF_colors
  14.  
  15. -- Register click
  16. self:RegisterForClicks("AnyUp")
  17. self:SetScript("OnEnter", UnitFrame_OnEnter)
  18. self:SetScript("OnLeave", UnitFrame_OnLeave)
  19.  
  20. local unit = (unit and unit:find("arena%dtarget")) and "arenatarget"
  21. or (unit and unit:find("arena%d")) and "arena"
  22. or (unit and unit:find("boss%d")) and "boss" or unit
  23.  
  24. -- Menu
  25. if (unit == "arena" and C.unitframe.show_arena == true and unit ~= "arenatarget") or (unit == "boss" and C.unitframe.show_boss == true) then
  26. self:SetAttribute("type2", "focus")
  27. self:SetAttribute("type3", "macro")
  28. self:SetAttribute("macrotext3", "/clearfocus")
  29. else
  30. self:SetAttribute("*type2", "togglemenu")
  31. end
  32.  
  33. -- Backdrop for every units
  34. self:CreateBackdrop("Default")
  35. self:SetFrameStrata("BACKGROUND")
  36. self.backdrop:SetFrameLevel(3)
  37.  
  38. -- Health bar
  39. self.Health = CreateFrame("StatusBar", self:GetName().."_Health", self)
  40. if unit == "player" or unit == "target" or unit == "arena" or unit == "boss" then
  41. self.Health:SetHeight(21)
  42. elseif unit == "arenatarget" then
  43. self.Health:SetHeight(27)
  44. else
  45. self.Health:SetHeight(13)
  46. end
  47. self.Health:SetPoint("TOPLEFT", self, "TOPLEFT", 0, 0)
  48. self.Health:SetPoint("TOPRIGHT", self, "TOPRIGHT", 0, 0)
  49. self.Health:SetStatusBarTexture(C.media.texture)
  50.  
  51. self.Health.frequentUpdates = true
  52. if C.unitframe.own_color == true then
  53. self.Health.colorTapping = false
  54. self.Health.colorDisconnected = false
  55. self.Health.colorClass = false
  56. self.Health.colorReaction = false
  57. self.Health:SetStatusBarColor(unpack(C.unitframe.uf_color))
  58. else
  59. self.Health.colorTapping = true
  60. self.Health.colorDisconnected = true
  61. self.Health.colorClass = true
  62. self.Health.colorReaction = true
  63. end
  64. if C.unitframe.plugins_smooth_bar == true then
  65. self.Health.Smooth = true
  66. end
  67.  
  68. self.Health.PostUpdate = T.PostUpdateHealth
  69.  
  70. -- Health bar background
  71. self.Health.bg = self.Health:CreateTexture(nil, "BORDER")
  72. self.Health.bg:SetAllPoints()
  73. self.Health.bg:SetTexture(C.media.texture)
  74. if C.unitframe.own_color == true then
  75. self.Health.bg:SetVertexColor(C.unitframe.uf_color[1], C.unitframe.uf_color[2], C.unitframe.uf_color[3], 0.2)
  76. else
  77. self.Health.bg.multiplier = 0.2
  78. end
  79.  
  80. self.Health.value = T.SetFontString(self.Health, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  81. if unit == "player" or unit == "pet" or unit == "focus" then
  82. self.Health.value:SetPoint("RIGHT", self.Health, "RIGHT", 0, 0)
  83. self.Health.value:SetJustifyH("RIGHT")
  84. elseif unit == "arena" then
  85. if C.unitframe.arena_on_right == true then
  86. self.Health.value:SetPoint("LEFT", self.Health, "LEFT", 2, 0)
  87. self.Health.value:SetJustifyH("LEFT")
  88. else
  89. self.Health.value:SetPoint("RIGHT", self.Health, "RIGHT", 0, 0)
  90. self.Health.value:SetJustifyH("RIGHT")
  91. end
  92. elseif unit == "boss" then
  93. if C.unitframe.boss_on_right == true then
  94. self.Health.value:SetPoint("LEFT", self.Health, "LEFT", 2, 0)
  95. self.Health.value:SetJustifyH("LEFT")
  96. else
  97. self.Health.value:SetPoint("RIGHT", self.Health, "RIGHT", 0, 0)
  98. self.Health.value:SetJustifyH("RIGHT")
  99. end
  100. elseif unit == "arenatarget" then
  101. self.Health.value:Hide()
  102. else
  103. self.Health.value:SetPoint("LEFT", self.Health, "LEFT", 2, 0)
  104. self.Health.value:SetJustifyH("LEFT")
  105. end
  106.  
  107. -- Power bar
  108. self.Power = CreateFrame("StatusBar", self:GetName().."_Power", self)
  109. if unit == "player" or unit == "target" or unit == "arena" or unit == "boss" then
  110. self.Power:SetHeight(5)
  111. elseif unit == "arenatarget" then
  112. self.Power:SetHeight(0)
  113. else
  114. self.Power:SetHeight(2)
  115. end
  116. self.Power:SetPoint("TOPLEFT", self.Health, "BOTTOMLEFT", 0, -1)
  117. self.Power:SetPoint("TOPRIGHT", self.Health, "BOTTOMRIGHT", 0, -1)
  118. self.Power:SetStatusBarTexture(C.media.texture)
  119.  
  120. self.Power.frequentUpdates = true
  121. self.Power.colorDisconnected = true
  122. self.Power.colorTapping = true
  123. if C.unitframe.own_color == true then
  124. self.Power.colorClass = true
  125. else
  126. self.Power.colorPower = true
  127. end
  128. if C.unitframe.plugins_smooth_bar == true then
  129. self.Power.Smooth = true
  130. end
  131.  
  132. self.Power.PreUpdate = T.PreUpdatePower
  133. self.Power.PostUpdate = T.PostUpdatePower
  134.  
  135. self.Power.bg = self.Power:CreateTexture(nil, "BORDER")
  136. self.Power.bg:SetAllPoints()
  137. self.Power.bg:SetTexture(C.media.texture)
  138. if C.unitframe.own_color == true and unit == "pet" then
  139. self.Power.bg:SetVertexColor(C.unitframe.uf_color[1], C.unitframe.uf_color[2], C.unitframe.uf_color[3], 0.2)
  140. else
  141. self.Power.bg.multiplier = 0.2
  142. end
  143.  
  144. self.Power.value = T.SetFontString(self.Power, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  145. if unit == "player" then
  146. self.Power.value:SetPoint("RIGHT", self.Power, "RIGHT", 0, 0)
  147. self.Power.value:SetJustifyH("RIGHT")
  148. elseif unit == "arena" then
  149. if C.unitframe.arena_on_right == true then
  150. self.Power.value:SetPoint("LEFT", self.Power, "LEFT", 2, 0)
  151. self.Power.value:SetJustifyH("LEFT")
  152. else
  153. self.Power.value:SetPoint("RIGHT", self.Power, "RIGHT", 0, 0)
  154. self.Power.value:SetJustifyH("RIGHT")
  155. end
  156. elseif unit == "boss" then
  157. if C.unitframe.boss_on_right == true then
  158. self.Power.value:SetPoint("LEFT", self.Power, "LEFT", 2, 0)
  159. self.Power.value:SetJustifyH("LEFT")
  160. else
  161. self.Power.value:SetPoint("RIGHT", self.Power, "RIGHT", 0, 0)
  162. self.Power.value:SetJustifyH("RIGHT")
  163. end
  164. elseif unit == "pet" or unit == "focus" or unit == "focustarget" or unit == "targettarget" then
  165. self.Power.value:Hide()
  166. else
  167. self.Power.value:SetPoint("LEFT", self.Power, "LEFT", 2, 0)
  168. self.Power.value:SetJustifyH("LEFT")
  169. end
  170.  
  171. -- Names
  172. if unit ~= "player" then
  173. self.Info = T.SetFontString(self.Health, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  174. if unit ~= "arenatarget" then
  175. self.Level = T.SetFontString(self.Power, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  176. end
  177. if unit == "target" then
  178. self.Info:SetPoint("RIGHT", self.Health, "RIGHT", 0, 0)
  179. self:Tag(self.Info, "[GetNameColor][NameLong]")
  180. self.Level:SetPoint("RIGHT", self.Power, "RIGHT", 0, 0)
  181. self:Tag(self.Level, "[cpoints] [Threat] [DiffColor][level][shortclassification]")
  182. elseif unit == "focus" or unit == "pet" then
  183. self.Info:SetPoint("LEFT", self.Health, "LEFT", 2, 0)
  184. if unit == "pet" then
  185. self:Tag(self.Info, "[PetNameColor][NameMedium]")
  186. else
  187. self:Tag(self.Info, "[GetNameColor][NameMedium]")
  188. end
  189. elseif unit == "arenatarget" then
  190. self.Info:SetPoint("CENTER", self.Health, "CENTER", 1, 0)
  191. self:Tag(self.Info, "[GetNameColor][NameArena]")
  192. elseif unit == "arena" then
  193. if C.unitframe.arena_on_right == true then
  194. self.Info:SetPoint("RIGHT", self.Health, "RIGHT", 0, 0)
  195. else
  196. self.Info:SetPoint("LEFT", self.Health, "LEFT", 2, 0)
  197. end
  198. self:Tag(self.Info, "[GetNameColor][NameMedium]")
  199. elseif unit == "boss" then
  200. if C.unitframe.boss_on_right == true then
  201. self.Info:SetPoint("RIGHT", self.Health, "RIGHT", 0, 0)
  202. else
  203. self.Info:SetPoint("LEFT", self.Health, "LEFT", 2, 0)
  204. end
  205. self:Tag(self.Info, "[GetNameColor][NameMedium]")
  206. else
  207. self.Info:SetPoint("RIGHT", self.Health, "RIGHT", 0, 0)
  208. self:Tag(self.Info, "[GetNameColor][NameMedium]")
  209. end
  210. end
  211.  
  212. if unit == "player" then
  213. self.FlashInfo = CreateFrame("Frame", "FlashInfo", self)
  214. self.FlashInfo:SetScript("OnUpdate", T.UpdateManaLevel)
  215. self.FlashInfo:SetToplevel(true)
  216. self.FlashInfo:SetAllPoints(self.Health)
  217.  
  218. self.FlashInfo.ManaLevel = T.SetFontString(self.FlashInfo, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  219. self.FlashInfo.ManaLevel:SetPoint("CENTER", 0, 0)
  220.  
  221. -- Combat icon
  222. if C.unitframe.icons_combat == true then
  223. self.Combat = self.Health:CreateTexture(nil, "OVERLAY")
  224. self.Combat:SetSize(18, 18)
  225. self.Combat:SetPoint("TOPRIGHT", 4, 8)
  226. end
  227.  
  228. -- Resting icon
  229. if C.unitframe.icons_resting == true and T.level ~= MAX_PLAYER_LEVEL then
  230. self.Resting = self.Power:CreateTexture(nil, "OVERLAY")
  231. self.Resting:SetSize(18, 18)
  232. self.Resting:SetPoint("BOTTOMLEFT", -8, -8)
  233. end
  234.  
  235. -- Leader/Assistant/ML icons
  236. if C.raidframe.icons_leader == true then
  237. -- Leader icon
  238. self.Leader = self.Health:CreateTexture(nil, "OVERLAY")
  239. self.Leader:SetSize(14, 14)
  240. self.Leader:SetPoint("TOPLEFT", -3, 9)
  241.  
  242. -- Assistant icon
  243. self.Assistant = self.Health:CreateTexture(nil, "OVERLAY")
  244. self.Assistant:SetSize(12, 12)
  245. self.Assistant:SetPoint("TOPLEFT", -3, 8)
  246.  
  247. -- Master looter icon
  248. self.MasterLooter = self.Health:CreateTexture(nil, "OVERLAY")
  249. self.MasterLooter:SetSize(12, 12)
  250. self.MasterLooter:SetPoint("TOPRIGHT", 3, 8)
  251. end
  252.  
  253. -- LFD role icons
  254. if C.raidframe.icons_role == true then
  255. self.LFDRole = self.Health:CreateTexture(nil, "OVERLAY")
  256. self.LFDRole:SetSize(12, 12)
  257. self.LFDRole:SetPoint("TOPLEFT", 10, 8)
  258. end
  259.  
  260. -- Rune bar
  261. if C.unitframe_class_bar.rune == true and T.class == "DEATHKNIGHT" then
  262. self.Runes = CreateFrame("Frame", self:GetName().."_RuneBar", self)
  263. self.Runes:CreateBackdrop("Default")
  264. self.Runes:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  265. self.Runes:SetSize(217, 7)
  266.  
  267. for i = 1, 6 do
  268. self.Runes[i] = CreateFrame("StatusBar", self:GetName().."_RuneBar", self.Runes)
  269. self.Runes[i]:SetSize(212 / 6, 7)
  270. if i == 1 then
  271. self.Runes[i]:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  272. else
  273. self.Runes[i]:SetPoint("TOPLEFT", self.Runes[i-1], "TOPRIGHT", 1, 0)
  274. end
  275. self.Runes[i]:SetStatusBarTexture(C.media.texture)
  276.  
  277. self.Runes[i].bg = self.Runes[i]:CreateTexture(nil, "BORDER")
  278. self.Runes[i].bg:SetAllPoints()
  279. self.Runes[i].bg:SetTexture(C.media.texture)
  280. self.Runes[i].bg.multiplier = 0.2
  281. end
  282. end
  283.  
  284. if T.class == "MONK" then
  285. -- Chi bar
  286. if C.unitframe_class_bar.chi == true then
  287. self.HarmonyBar = CreateFrame("Frame", self:GetName().."_HarmonyBar", self)
  288. self.HarmonyBar:CreateBackdrop("Default")
  289. self.HarmonyBar:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  290. self.HarmonyBar:SetSize(217, 7)
  291.  
  292. for i = 1, 6 do
  293. self.HarmonyBar[i] = CreateFrame("StatusBar", self:GetName().."_HarmonyBar", self.HarmonyBar)
  294. self.HarmonyBar[i]:SetSize(213 / 6, 7)
  295. if i == 1 then
  296. self.HarmonyBar[i]:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  297. else
  298. self.HarmonyBar[i]:SetPoint("TOPLEFT", self.HarmonyBar[i-1], "TOPRIGHT", 1, 0)
  299. end
  300. self.HarmonyBar[i]:SetStatusBarTexture(C.media.texture)
  301. self.HarmonyBar[i]:SetStatusBarColor(0.33, 0.63, 0.33)
  302.  
  303. self.HarmonyBar[i].bg = self.HarmonyBar[i]:CreateTexture(nil, "BORDER")
  304. self.HarmonyBar[i].bg:SetAllPoints()
  305. self.HarmonyBar[i].bg:SetTexture(C.media.texture)
  306. self.HarmonyBar[i].bg:SetVertexColor(0.33, 0.63, 0.33, 0.2)
  307. end
  308. end
  309.  
  310. -- Statue bar
  311. if C.unitframe_class_bar.totem == true then
  312. self.TotemBar = CreateFrame("Frame", self:GetName().."_TotemBar", self)
  313. self.TotemBar:SetFrameLevel(self.Health:GetFrameLevel() + 2)
  314. self.TotemBar:SetPoint("TOPLEFT", self, "TOPLEFT", 0, 0)
  315. self.TotemBar:SetSize(53, 7)
  316. self.TotemBar.Destroy = true
  317.  
  318. for i = 1, 1 do
  319. self.TotemBar[i] = CreateFrame("StatusBar", self:GetName().."_TotemBar", self.TotemBar)
  320. self.TotemBar[i]:SetSize(53, 7)
  321. self.TotemBar[i]:SetPoint("TOPLEFT", self, "TOPLEFT", 0, 0)
  322. self.TotemBar[i]:SetStatusBarTexture(C.media.texture)
  323. self.TotemBar[i]:SetMinMaxValues(0, 1)
  324. self.TotemBar[i]:CreateBorder(false, true)
  325.  
  326. self.TotemBar[i].bg = self.TotemBar[i]:CreateTexture(nil, "BORDER")
  327. self.TotemBar[i].bg:SetAllPoints()
  328. self.TotemBar[i].bg:SetTexture(C.media.texture)
  329. self.TotemBar[i].bg.multiplier = 0.2
  330. end
  331. end
  332. end
  333.  
  334. -- Shadow Orbs bar
  335. if C.unitframe_class_bar.shadow == true and T.class == "PRIEST" then
  336. self.ShadowOrbsBar = CreateFrame("Frame", self:GetName().."_ShadowOrbsBar", self)
  337. self.ShadowOrbsBar:CreateBackdrop("Default")
  338. self.ShadowOrbsBar:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  339. self.ShadowOrbsBar:SetSize(217, 7)
  340.  
  341. for i = 1, 5 do
  342. self.ShadowOrbsBar[i] = CreateFrame("StatusBar", self:GetName().."_ShadowOrbsBar", self.ShadowOrbsBar)
  343. self.ShadowOrbsBar[i]:SetSize(215 / 5, 7)
  344. if i == 1 then
  345. self.ShadowOrbsBar[i]:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  346. else
  347. self.ShadowOrbsBar[i]:SetPoint("TOPLEFT", self.ShadowOrbsBar[i-1], "TOPRIGHT", 1, 0)
  348. end
  349. self.ShadowOrbsBar[i]:SetStatusBarTexture(C.media.texture)
  350. self.ShadowOrbsBar[i]:SetStatusBarColor(0.70, 0.32, 0.75)
  351.  
  352. self.ShadowOrbsBar[i].bg = self.ShadowOrbsBar[i]:CreateTexture(nil, "BORDER")
  353. self.ShadowOrbsBar[i].bg:SetAllPoints()
  354. self.ShadowOrbsBar[i].bg:SetTexture(C.media.texture)
  355. self.ShadowOrbsBar[i].bg:SetVertexColor(0.70, 0.32, 0.75, 0.2)
  356.  
  357. self.ShadowOrbsBar[i].width = self.ShadowOrbsBar[i]:GetWidth()
  358. end
  359.  
  360. self.ShadowOrbsBar.Override = T.UpdateShadowOrb
  361. end
  362.  
  363. -- Holy Power bar
  364. if C.unitframe_class_bar.holy == true and T.class == "PALADIN" then
  365. self.HolyPower = CreateFrame("Frame", self:GetName().."_HolyPowerBar", self)
  366. self.HolyPower:CreateBackdrop("Default")
  367. self.HolyPower:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  368. self.HolyPower:SetSize(217, 7)
  369.  
  370. for i = 1, 5 do
  371. self.HolyPower[i] = CreateFrame("StatusBar", self:GetName().."_HolyPowerBar", self.HolyPower)
  372. self.HolyPower[i]:SetSize(213 / 5, 7)
  373. if i == 1 then
  374. self.HolyPower[i]:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  375. else
  376. self.HolyPower[i]:SetPoint("TOPLEFT", self.HolyPower[i-1], "TOPRIGHT", 1, 0)
  377. end
  378. self.HolyPower[i]:SetStatusBarTexture(C.media.texture)
  379. self.HolyPower[i]:SetStatusBarColor(0.89, 0.88, 0.1)
  380.  
  381. self.HolyPower[i].bg = self.HolyPower[i]:CreateTexture(nil, "BORDER")
  382. self.HolyPower[i].bg:SetAllPoints()
  383. self.HolyPower[i].bg:SetTexture(C.media.texture)
  384. self.HolyPower[i].bg:SetVertexColor(0.89, 0.88, 0.1, 0.2)
  385.  
  386. self.HolyPower[i].width = self.HolyPower[i]:GetWidth()
  387. end
  388.  
  389. self.HolyPower.Override = T.UpdateHoly
  390. end
  391.  
  392. -- Shard/Burning bar
  393. if C.unitframe_class_bar.shard == true and T.class == "WARLOCK" then
  394. self.WarlockSpecBars = CreateFrame("Frame", self:GetName().."_WarlockSpecBar", self)
  395. self.WarlockSpecBars:CreateBackdrop("Default")
  396. self.WarlockSpecBars:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  397. self.WarlockSpecBars:SetSize(217, 7)
  398.  
  399. for i = 1, 4 do
  400. self.WarlockSpecBars[i] = CreateFrame("StatusBar", self:GetName().."WarlockSpecBar"..i, self.WarlockSpecBars)
  401. self.WarlockSpecBars[i]:SetSize(214 / 4, 7)
  402. if i == 1 then
  403. self.WarlockSpecBars[i]:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  404. else
  405. self.WarlockSpecBars[i]:SetPoint("TOPLEFT", self.WarlockSpecBars[i-1], "TOPRIGHT", 1, 0)
  406. end
  407. self.WarlockSpecBars[i]:SetStatusBarTexture(C.media.texture)
  408. self.WarlockSpecBars[i]:SetStatusBarColor(0.9, 0.37, 0.37)
  409.  
  410. self.WarlockSpecBars[i].bg = self.WarlockSpecBars[i]:CreateTexture(nil, "BORDER")
  411. self.WarlockSpecBars[i].bg:SetAllPoints()
  412. self.WarlockSpecBars[i].bg:SetTexture(C.media.texture)
  413. self.WarlockSpecBars[i].bg:SetVertexColor(0.9, 0.37, 0.37, 0.2)
  414. end
  415.  
  416. self.WarlockSpecBars.text = T.SetFontString(self.WarlockSpecBars[1], C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  417. self.WarlockSpecBars.text:SetPoint("CENTER", self.WarlockSpecBars, "CENTER", 0, 0)
  418. self:Tag(self.WarlockSpecBars.text, "[DemonicFury]")
  419. end
  420.  
  421. -- Rogue/Druid Combo bar
  422. if C.unitframe_class_bar.combo == true and C.unitframe_class_bar.combo_old ~= true and (T.class == "ROGUE" or T.class == "DRUID") then
  423. self.CPoints = CreateFrame("Frame", self:GetName().."_ComboBar", self)
  424. self.CPoints:CreateBackdrop("Default")
  425. self.CPoints:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  426. self.CPoints:SetSize(217, 7)
  427.  
  428. for i = 1, 5 do
  429. self.CPoints[i] = CreateFrame("StatusBar", self:GetName().."_ComboBar", self.CPoints)
  430. self.CPoints[i]:SetSize(213 / 5, 7)
  431. if i == 1 then
  432. self.CPoints[i]:SetPoint("LEFT", self.CPoints)
  433. else
  434. self.CPoints[i]:SetPoint("LEFT", self.CPoints[i-1], "RIGHT", 1, 0)
  435. end
  436. self.CPoints[i]:SetStatusBarTexture(C.media.texture)
  437. end
  438.  
  439. self.CPoints[1]:SetStatusBarColor(0.9, 0.1, 0.1)
  440. self.CPoints[2]:SetStatusBarColor(0.9, 0.1, 0.1)
  441. self.CPoints[3]:SetStatusBarColor(0.9, 0.9, 0.1)
  442. self.CPoints[4]:SetStatusBarColor(0.9, 0.9, 0.1)
  443. self.CPoints[5]:SetStatusBarColor(0.1, 0.9, 0.1)
  444.  
  445. self.CPoints.Override = T.UpdateComboPoint
  446.  
  447. -- Anticipation bar
  448. if T.class == "ROGUE" then
  449. self.Anticipation = CreateFrame("Frame", self:GetName().."_Anticipation", self)
  450. self.Anticipation:SetFrameLevel(self.Health:GetFrameLevel() + 2)
  451. self.Anticipation:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  452. self.Anticipation:SetSize(217, 4)
  453.  
  454. for i = 1, 5 do
  455. self.Anticipation[i] = CreateFrame("StatusBar", self:GetName().."_Anticipation"..i, self.Anticipation)
  456. self.Anticipation[i]:SetSize(213 / 5, 4)
  457. if i == 1 then
  458. self.Anticipation[i]:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  459. else
  460. self.Anticipation[i]:SetPoint("LEFT", self.Anticipation[i-1], "RIGHT", 1, 0)
  461. end
  462. self.Anticipation[i]:SetStatusBarTexture(C.media.texture)
  463. self.Anticipation[i]:SetStatusBarColor(0.2, 0.2, 0.2)
  464. end
  465. end
  466. end
  467.  
  468. -- Totem bar
  469. if C.unitframe_class_bar.totem == true and T.class == "SHAMAN" then
  470. self.TotemBar = CreateFrame("Frame", self:GetName().."_TotemBar", self)
  471. self.TotemBar:CreateBackdrop("Default")
  472. self.TotemBar:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  473. self.TotemBar:SetSize(217, 7)
  474. self.TotemBar.Destroy = true
  475.  
  476. for i = 1, 4 do
  477. self.TotemBar[i] = CreateFrame("StatusBar", self:GetName().."_TotemBar", self.TotemBar)
  478. self.TotemBar[i]:SetSize(213 / 4, 7)
  479.  
  480. local fixpos
  481. if i == 2 then
  482. self.TotemBar[i]:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  483. elseif i == 1 then
  484. self.TotemBar[i]:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 55, 7)
  485. else
  486. fixpos = i
  487. if i == 3 then fixpos = i-1 end
  488. self.TotemBar[i]:SetPoint("TOPLEFT", self.TotemBar[fixpos-1], "TOPRIGHT", 1, 0)
  489. end
  490. self.TotemBar[i]:SetStatusBarTexture(C.media.texture)
  491. self.TotemBar[i]:SetMinMaxValues(0, 1)
  492.  
  493. self.TotemBar[i].bg = self.TotemBar[i]:CreateTexture(nil, "BORDER")
  494. self.TotemBar[i].bg:SetAllPoints()
  495. self.TotemBar[i].bg:SetTexture(C.media.texture)
  496. self.TotemBar[i].bg.multiplier = 0.2
  497. end
  498. end
  499.  
  500. if T.class == "DRUID" then
  501. -- Druid mana
  502. CreateFrame("Frame"):SetScript("OnUpdate", function() T.UpdateClassMana(self) end)
  503. self.ClassMana = T.SetFontString(self.Power, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  504. self.ClassMana:SetTextColor(1, 0.49, 0.04)
  505.  
  506. -- Eclipse bar
  507. if C.unitframe_class_bar.eclipse == true then
  508. self.EclipseBar = CreateFrame("Frame", self:GetName().."_EclipseBar", self)
  509. self.EclipseBar:CreateBackdrop("Default")
  510. self.EclipseBar:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  511. self.EclipseBar:SetSize(217, 7)
  512.  
  513. self.EclipseBar.LunarBar = CreateFrame("StatusBar", nil, self.EclipseBar)
  514. self.EclipseBar.LunarBar:SetPoint("LEFT", self.EclipseBar, "LEFT", 0, 0)
  515. self.EclipseBar.LunarBar:SetSize(self.EclipseBar:GetWidth(), self.EclipseBar:GetHeight())
  516. self.EclipseBar.LunarBar:SetStatusBarTexture(C.media.texture)
  517. self.EclipseBar.LunarBar:SetStatusBarColor(0.80, 0.80, 0.20)
  518.  
  519. self.EclipseBar.SolarBar = CreateFrame("StatusBar", nil, self.EclipseBar)
  520. self.EclipseBar.SolarBar:SetPoint("LEFT", self.EclipseBar.LunarBar:GetStatusBarTexture(), "RIGHT", 0, 0)
  521. self.EclipseBar.SolarBar:SetSize(self.EclipseBar:GetWidth(), self.EclipseBar:GetHeight())
  522. self.EclipseBar.SolarBar:SetStatusBarTexture(C.media.texture)
  523. self.EclipseBar.SolarBar:SetStatusBarColor(0.30, 0.30, 0.80)
  524.  
  525. self.EclipseBar.Text = T.SetFontString(self.EclipseBar.SolarBar, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  526. self.EclipseBar.Text:SetPoint("CENTER", self.EclipseBar, "CENTER", -6, 0)
  527.  
  528. self.EclipseBar.Pers = T.SetFontString(self.EclipseBar.SolarBar, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  529. self.EclipseBar.Pers:SetPoint("LEFT", self.EclipseBar.Text, "RIGHT", 2, 0)
  530. self:Tag(self.EclipseBar.Pers, "[pereclipse]%")
  531.  
  532. self.EclipseBar:SetScript("OnShow", function() T.UpdateEclipse(self, false) end)
  533. self.EclipseBar:SetScript("OnUpdate", function() T.UpdateEclipse(self, true) end)
  534. self.EclipseBar:SetScript("OnHide", function() T.UpdateEclipse(self, false) end)
  535. self.EclipseBar.PostUpdatePower = T.EclipseDirection
  536. end
  537.  
  538. -- Mushroom bar
  539. if C.unitframe_class_bar.totem == true then
  540. self.TotemBar = CreateFrame("Frame", self:GetName().."_TotemBar", self)
  541. self.TotemBar:SetFrameLevel(self.Health:GetFrameLevel() + 2)
  542. self.TotemBar:SetPoint("TOPLEFT", self, "TOPLEFT", 0, 0)
  543. self.TotemBar:SetSize(108, 7)
  544. self.TotemBar.Destroy = true
  545.  
  546. for i = 1, 3 do
  547. self.TotemBar[i] = CreateFrame("StatusBar", self:GetName().."_TotemBar", self.TotemBar)
  548. self.TotemBar[i]:SetSize(108 / 3, 7)
  549. if i == 1 then
  550. self.TotemBar[i]:SetPoint("TOPLEFT", self, "TOPLEFT", 0, 0)
  551. else
  552. self.TotemBar[i]:SetPoint("TOPLEFT", self.TotemBar[i-1], "TOPRIGHT", 0, 0)
  553. end
  554. self.TotemBar[i]:SetStatusBarTexture(C.media.texture)
  555. self.TotemBar[i]:SetMinMaxValues(0, 1)
  556. self.TotemBar[i]:CreateBorder(false, true)
  557.  
  558. self.TotemBar[i].bg = self.TotemBar[i]:CreateTexture(nil, "BORDER")
  559. self.TotemBar[i].bg:SetAllPoints()
  560. self.TotemBar[i].bg:SetTexture(C.media.texture)
  561. self.TotemBar[i].bg.multiplier = 0.2
  562. end
  563. end
  564. end
  565.  
  566. -- Mocking Banner bar
  567. if C.unitframe_class_bar.totem == true and T.class == "WARRIOR" then
  568. if C.unitframe_class_bar.totem == true then
  569. self.TotemBar = CreateFrame("Frame", self:GetName().."_TotemBar", self)
  570. self.TotemBar:SetFrameLevel(self.Health:GetFrameLevel() + 2)
  571. self.TotemBar:SetPoint("TOPLEFT", self, "TOPLEFT", 0, 0)
  572. self.TotemBar:SetSize(53, 7)
  573. self.TotemBar.Destroy = true
  574.  
  575. for i = 1, 1 do
  576. self.TotemBar[i] = CreateFrame("StatusBar", self:GetName().."_TotemBar", self.TotemBar)
  577. self.TotemBar[i]:SetSize(53, 7)
  578. self.TotemBar[i]:SetPoint("TOPLEFT", self, "TOPLEFT", 0, 0)
  579. self.TotemBar[i]:SetStatusBarTexture(C.media.texture)
  580. self.TotemBar[i]:SetMinMaxValues(0, 1)
  581. self.TotemBar[i]:CreateBorder(false, true)
  582.  
  583. self.TotemBar[i].bg = self.TotemBar[i]:CreateTexture(nil, "BORDER")
  584. self.TotemBar[i].bg:SetAllPoints()
  585. self.TotemBar[i].bg:SetTexture(C.media.texture)
  586. self.TotemBar[i].bg.multiplier = 0.2
  587. end
  588. end
  589. end
  590.  
  591. -- Rune of Power bar
  592. if C.unitframe_class_bar.totem == true and T.class == "MAGE" then
  593. self.TotemBar = CreateFrame("Frame", self:GetName().."_TotemBar", self)
  594. self.TotemBar:SetFrameLevel(self.Health:GetFrameLevel() + 2)
  595. self.TotemBar:SetPoint("TOPLEFT", self, "TOPLEFT", 0, 0)
  596. self.TotemBar:SetSize(108, 7)
  597. self.TotemBar.Destroy = true
  598.  
  599. for i = 1, 2 do
  600. self.TotemBar[i] = CreateFrame("StatusBar", self:GetName().."_TotemBar", self.TotemBar)
  601. self.TotemBar[i]:SetSize(108 / 2, 7)
  602. if i == 1 then
  603. self.TotemBar[i]:SetPoint("TOPLEFT", self, "TOPLEFT", 0, 0)
  604. else
  605. self.TotemBar[i]:SetPoint("TOPLEFT", self.TotemBar[i-1], "TOPRIGHT", 0, 0)
  606. end
  607. self.TotemBar[i]:SetStatusBarTexture(C.media.texture)
  608. self.TotemBar[i]:SetMinMaxValues(0, 1)
  609. self.TotemBar[i]:CreateBorder(false, true)
  610.  
  611. self.TotemBar[i].bg = self.TotemBar[i]:CreateTexture(nil, "BORDER")
  612. self.TotemBar[i].bg:SetAllPoints()
  613. self.TotemBar[i].bg:SetTexture(C.media.texture)
  614. self.TotemBar[i].bg.multiplier = 0.2
  615. end
  616. end
  617.  
  618. -- Resolve bar
  619. if C.unitframe_class_bar.resolve == true then
  620. self.ResolveBar = CreateFrame("Frame", self:GetName().."_ResolveBar", self)
  621. self.ResolveBar:CreateBackdrop("Default")
  622. if (T.class == "PALADIN" and C.unitframe_class_bar.holy == true)
  623. or (T.class == "DEATHKNIGHT" and C.unitframe_class_bar.rune == true)
  624. or (T.class == "MONK" and C.unitframe_class_bar.chi == true) then
  625. self.ResolveBar:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 21)
  626. else
  627. self.ResolveBar:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  628. end
  629. self.ResolveBar:SetSize(217, 7)
  630.  
  631. self.ResolveBar.Bar = CreateFrame("StatusBar", nil, self.ResolveBar)
  632. self.ResolveBar.Bar:SetPoint("LEFT", self.ResolveBar, "LEFT", 0, 0)
  633. self.ResolveBar.Bar:SetSize(217, 7)
  634. self.ResolveBar.Bar:SetStatusBarTexture(C.media.texture)
  635. self.ResolveBar.Bar:SetStatusBarColor(T.color.r, T.color.g, T.color.b)
  636.  
  637. self.ResolveBar.bg = self.ResolveBar.Bar:CreateTexture(nil, "BORDER")
  638. self.ResolveBar.bg:SetAllPoints()
  639. self.ResolveBar.bg:SetTexture(C.media.texture)
  640. self.ResolveBar.bg:SetVertexColor(T.color.r, T.color.g, T.color.b, 0.2)
  641.  
  642. self.ResolveBar.Text = T.SetFontString(self.ResolveBar.Bar, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  643. self.ResolveBar.Text:SetPoint("CENTER", self.ResolveBar.Bar, "CENTER", 0, 0)
  644. end
  645.  
  646. -- Experience bar
  647. if T.level ~= MAX_PLAYER_LEVEL and C.unitframe.plugins_experience_bar == true then
  648. self.Experience = CreateFrame("StatusBar", self:GetName().."_Experience", self)
  649. self.Experience:CreateBackdrop("Default")
  650. if C.unitframe.portrait_enable == true then
  651. self.Experience:SetPoint("TOPLEFT", self, "TOPLEFT", -25 - C.unitframe.portrait_width, 28)
  652. else
  653. self.Experience:SetPoint("TOPLEFT", self, "TOPLEFT", -18, 28)
  654. end
  655. self.Experience:SetSize(7, 94)
  656. self.Experience:SetOrientation("Vertical")
  657. self.Experience:SetStatusBarTexture(C.media.texture)
  658. self.Experience:SetStatusBarColor(T.color.r, T.color.g, T.color.b)
  659. self.Experience:SetAlpha(0)
  660.  
  661. self.Experience.bg = self.Experience:CreateTexture(nil, "BORDER")
  662. self.Experience.bg:SetAllPoints()
  663. self.Experience.bg:SetTexture(C.media.texture)
  664. self.Experience.bg:SetVertexColor(T.color.r, T.color.g, T.color.b, 0.2)
  665.  
  666. self.Experience.Rested = CreateFrame("StatusBar", nil, self.Experience)
  667. self.Experience.Rested:SetParent(self.Experience)
  668. self.Experience.Rested:SetOrientation("Vertical")
  669. self.Experience.Rested:SetAllPoints()
  670. self.Experience.Rested:SetStatusBarTexture(C.media.texture)
  671. self.Experience.Rested:SetStatusBarColor(0, 0.5, 1, 0.5)
  672.  
  673. self.Experience:HookScript("OnEnter", function(self) self:SetAlpha(1) end)
  674. self.Experience:HookScript("OnLeave", function(self) self:SetAlpha(0) end)
  675. self.Experience.Tooltip = true
  676. end
  677.  
  678. -- Reputation bar
  679. if C.unitframe.plugins_reputation_bar == true then
  680. self.Reputation = CreateFrame("StatusBar", self:GetName().."_Reputation", self)
  681. self.Reputation:CreateBackdrop("Default")
  682. if C.unitframe.portrait_enable == true then
  683. if T.level == MAX_PLAYER_LEVEL then
  684. self.Reputation:SetPoint("TOPLEFT", self, "TOPLEFT", -25 - C.unitframe.portrait_width, 28)
  685. else
  686. self.Reputation:SetPoint("TOPLEFT", self, "TOPLEFT", -39 - C.unitframe.portrait_width, 28)
  687. end
  688. else
  689. if T.level == MAX_PLAYER_LEVEL then
  690. self.Reputation:SetPoint("TOPLEFT", self, "TOPLEFT", -18, 28)
  691. else
  692. self.Reputation:SetPoint("TOPLEFT", self, "TOPLEFT", -32, 28)
  693. end
  694. end
  695. self.Reputation:SetSize(7, 94)
  696. self.Reputation:SetOrientation("Vertical")
  697. self.Reputation:SetStatusBarTexture(C.media.texture)
  698. self.Reputation:SetAlpha(0)
  699.  
  700. self.Reputation.bg = self.Reputation:CreateTexture(nil, "BORDER")
  701. self.Reputation.bg:SetAllPoints()
  702. self.Reputation.bg:SetTexture(C.media.texture)
  703.  
  704. self.Reputation:HookScript("OnEnter", function(self) self:SetAlpha(1) end)
  705. self.Reputation:HookScript("OnLeave", function(self) self:SetAlpha(0) end)
  706. self.Reputation.PostUpdate = T.UpdateReputationColor
  707. self.Reputation.Tooltip = true
  708. end
  709.  
  710. -- GCD spark
  711. if C.unitframe.plugins_gcd == true then
  712. self.GCD = CreateFrame("Frame", self:GetName().."_GCD", self)
  713. self.GCD:SetWidth(220)
  714. self.GCD:SetHeight(3)
  715. self.GCD:SetFrameStrata("HIGH")
  716. self.GCD:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 0)
  717.  
  718. self.GCD.Color = {1, 1, 1}
  719. self.GCD.Height = T.Scale(3)
  720. self.GCD.Width = T.Scale(4)
  721. end
  722. end
  723.  
  724. -- Counter bar
  725. if unit == "player" or unit == "pet" then
  726. self.CounterBar = CreateFrame("StatusBar", self:GetName().."_CounterBar", self)
  727. self.CounterBar:CreateBackdrop("Default")
  728. self.CounterBar:SetWidth(217)
  729. self.CounterBar:SetHeight(20)
  730. self.CounterBar:SetStatusBarTexture(C.media.texture)
  731. self.CounterBar:SetPoint("TOP", UIParent, "TOP", 0, -102)
  732.  
  733. self.CounterBar.bg = self.CounterBar:CreateTexture(nil, "BORDER")
  734. self.CounterBar.bg:SetAllPoints()
  735. self.CounterBar.bg:SetTexture(C.media.texture)
  736.  
  737. self.CounterBar.Text = T.SetFontString(self.CounterBar, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  738. self.CounterBar.Text:SetPoint("CENTER")
  739.  
  740. local r, g, b
  741. local max
  742.  
  743. self.CounterBar:SetScript("OnValueChanged", function(_, value)
  744. _, max = self.CounterBar:GetMinMaxValues()
  745. r, g, b = oUF.ColorGradient(value, max, 1, 0, 0, 1, 1, 0, 0, 1, 0)
  746. self.CounterBar:SetStatusBarColor(r, g, b)
  747. self.CounterBar.bg:SetVertexColor(r, g, b, 0.2)
  748. self.CounterBar.Text:SetText(floor(value))
  749. end)
  750. end
  751.  
  752. if unit == "pet" or unit == "targettarget" or unit == "focus" or unit == "focustarget" then
  753. self.Debuffs = CreateFrame("Frame", self:GetName().."Debuffs", self)
  754. self.Debuffs:SetHeight(25)
  755. self.Debuffs:SetWidth(109)
  756. self.Debuffs.size = T.Scale(25)
  757. self.Debuffs.spacing = T.Scale(3)
  758. self.Debuffs.num = 4
  759. self.Debuffs["growth-y"] = "DOWN"
  760. if unit == "pet" or unit == "focus" then
  761. self.Debuffs:SetPoint("TOPRIGHT", self, "BOTTOMRIGHT", 2, -17)
  762. self.Debuffs.initialAnchor = "TOPRIGHT"
  763. self.Debuffs["growth-x"] = "LEFT"
  764. else
  765. self.Debuffs:SetPoint("TOPLEFT", self, "BOTTOMLEFT", -2, -17)
  766. self.Debuffs.initialAnchor = "TOPLEFT"
  767. self.Debuffs["growth-x"] = "RIGHT"
  768. end
  769. self.Debuffs.PostCreateIcon = T.PostCreateAura
  770. self.Debuffs.PostUpdateIcon = T.PostUpdateIcon
  771.  
  772. if unit == "pet" then
  773. self:RegisterEvent("UNIT_PET", T.UpdateAllElements)
  774. end
  775. end
  776.  
  777. if unit == "player" or unit == "target" then
  778. if C.unitframe.portrait_enable == true then
  779. self.Portrait = CreateFrame("PlayerModel", self:GetName().."_Portrait", self)
  780. self.Portrait:SetHeight(C.unitframe.portrait_height)
  781. self.Portrait:SetWidth(C.unitframe.portrait_width)
  782. if unit == "player" then
  783. self.Portrait:SetPoint(unpack(C.position.unitframes.player_portrait))
  784. elseif unit == "target" then
  785. self.Portrait:SetPoint(unpack(C.position.unitframes.target_portrait))
  786. end
  787.  
  788. self.Portrait:CreateBackdrop("Transparent")
  789. self.Portrait.backdrop:SetPoint("TOPLEFT", -2 + T.mult, 2 + T.mult)
  790. self.Portrait.backdrop:SetPoint("BOTTOMRIGHT", 2 + T.mult, -2 - T.mult)
  791.  
  792. if C.unitframe.portrait_classcolor_border == true then
  793. if unit == "player" then
  794. self.Portrait.backdrop:SetBackdropBorderColor(T.color.r, T.color.g, T.color.b)
  795. elseif unit == "target" then
  796. self.Portrait.backdrop:RegisterEvent("PLAYER_TARGET_CHANGED")
  797. self.Portrait.backdrop:SetScript("OnEvent", function()
  798. local _, class = UnitClass("target")
  799. local color = (CUSTOM_CLASS_COLORS or RAID_CLASS_COLORS)[class]
  800. if color then
  801. self.Portrait.backdrop:SetBackdropBorderColor(color.r, color.g, color.b)
  802. else
  803. self.Portrait.backdrop:SetBackdropBorderColor(unpack(C.media.border_color))
  804. end
  805. end)
  806. end
  807. end
  808. end
  809.  
  810. if unit == "player" then
  811. self.Debuffs = CreateFrame("Frame", self:GetName().."Debuffs", self)
  812. self.Debuffs:SetHeight(165)
  813. self.Debuffs:SetWidth(221)
  814. self.Debuffs.size = T.Scale(25)
  815. self.Debuffs.spacing = T.Scale(3)
  816. self.Debuffs.initialAnchor = "BOTTOMRIGHT"
  817. self.Debuffs["growth-y"] = "UP"
  818. self.Debuffs["growth-x"] = "LEFT"
  819. if (T.class == "DEATHKNIGHT" and C.unitframe_class_bar.rune == true)
  820. or (T.class == "DRUID" and C.unitframe_class_bar.eclipse == true)
  821. or ((T.class == "DRUID" or T.class == "ROGUE") and C.unitframe_class_bar.combo == true and C.unitframe_class_bar.combo_old ~= true)
  822. or (T.class == "MONK" and C.unitframe_class_bar.chi == true)
  823. or (T.class == "PALADIN" and C.unitframe_class_bar.holy == true)
  824. or (T.class == "SHAMAN" and C.unitframe_class_bar.totem == true)
  825. or (T.class == "WARLOCK" and C.unitframe_class_bar.shard == true) then
  826. self.Debuffs:SetPoint("BOTTOMRIGHT", self, "TOPRIGHT", 2, 19)
  827. else
  828. self.Debuffs:SetPoint("BOTTOMRIGHT", self, "TOPRIGHT", 2, 5)
  829. end
  830.  
  831. self.Debuffs.PostCreateIcon = T.PostCreateAura
  832. self.Debuffs.PostUpdateIcon = T.PostUpdateIcon
  833. end
  834.  
  835. if unit == "target" then
  836. self.Auras = CreateFrame("Frame", self:GetName().."Auras", self)
  837. self.Auras:SetPoint("BOTTOMLEFT", self, "TOPLEFT", -2, 5)
  838. self.Auras.initialAnchor = "BOTTOMLEFT"
  839. self.Auras["growth-x"] = "RIGHT"
  840. self.Auras["growth-y"] = "UP"
  841. self.Auras.numDebuffs = 16
  842. self.Auras.numBuffs = 32
  843. self.Auras:SetHeight(165)
  844. self.Auras:SetWidth(221)
  845. self.Auras.spacing = T.Scale(3)
  846. self.Auras.size = T.Scale(25)
  847. self.Auras.gap = true
  848. self.Auras.PostCreateIcon = T.PostCreateAura
  849. self.Auras.PostUpdateIcon = T.PostUpdateIcon
  850.  
  851. -- Rogue/Druid Combo bar
  852. if C.unitframe_class_bar.combo == true and C.unitframe_class_bar.combo_old == true and (T.class == "ROGUE" or T.class == "DRUID") then
  853. self.CPoints = CreateFrame("Frame", self:GetName().."_ComboBar", self)
  854. self.CPoints:CreateBackdrop("Default")
  855. self.CPoints:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  856. self.CPoints:SetSize(217, 7)
  857.  
  858. for i = 1, 5 do
  859. self.CPoints[i] = CreateFrame("StatusBar", self:GetName().."_ComboBar", self.CPoints)
  860. self.CPoints[i]:SetSize(213 / 5, 7)
  861. if i == 1 then
  862. self.CPoints[i]:SetPoint("LEFT", self.CPoints)
  863. else
  864. self.CPoints[i]:SetPoint("LEFT", self.CPoints[i-1], "RIGHT", 1, 0)
  865. end
  866. self.CPoints[i]:SetStatusBarTexture(C.media.texture)
  867. end
  868.  
  869. self.CPoints[1]:SetStatusBarColor(0.9, 0.1, 0.1)
  870. self.CPoints[2]:SetStatusBarColor(0.9, 0.1, 0.1)
  871. self.CPoints[3]:SetStatusBarColor(0.9, 0.9, 0.1)
  872. self.CPoints[4]:SetStatusBarColor(0.9, 0.9, 0.1)
  873. self.CPoints[5]:SetStatusBarColor(0.1, 0.9, 0.1)
  874.  
  875. self.CPoints.Override = T.UpdateComboPointOld
  876. end
  877.  
  878. -- Priest Range bar
  879. if C.unitframe_class_bar.range == true and T.class == "PRIEST" then
  880. self.RangeBar = CreateFrame("StatusBar", self:GetName().."_RangeBar", self)
  881. self.RangeBar:CreateBackdrop("Default")
  882. self.RangeBar:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  883. self.RangeBar:SetSize(217, 7)
  884. self.RangeBar:SetStatusBarTexture(C.media.texture)
  885.  
  886. self.RangeBar.bg = self.RangeBar:CreateTexture(nil, "BORDER")
  887. self.RangeBar.bg:SetAllPoints()
  888. self.RangeBar.bg:SetTexture(C.media.texture)
  889. end
  890.  
  891. -- Enemy specialization
  892. if C.unitframe.plugins_enemy_spec == true then
  893. self.EnemySpec = T.SetFontString(self.Power, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  894. self.EnemySpec:SetTextColor(1, 0, 0)
  895. self.EnemySpec:SetPoint("BOTTOM", self.Power, "BOTTOM", 0, -1)
  896. end
  897.  
  898. -- Quest icon
  899. self.QuestIcon = self.Health:CreateTexture(nil, "OVERLAY")
  900. self.QuestIcon:SetSize(20, 20)
  901. self.QuestIcon:SetPoint("RIGHT", self.Info, "LEFT", -10, 0)
  902.  
  903. -- Friendship bar
  904. if C.unitframe.plugins_friendship_bar == true then
  905. self.Friendship = CreateFrame("StatusBar", self:GetName().."_Friendship", self)
  906. self.Friendship:CreateBackdrop("Default")
  907. self.Friendship:SetPoint("BOTTOMLEFT", self, "TOPLEFT", 0, 7)
  908. self.Friendship:SetSize(217, 7)
  909. self.Friendship:SetStatusBarTexture(C.media.texture)
  910. self.Friendship:SetStatusBarColor(1, 0, 0)
  911.  
  912. self.Friendship.bg = self.Friendship:CreateTexture(nil, "BORDER")
  913. self.Friendship.bg:SetAllPoints()
  914. self.Friendship.bg:SetTexture(C.media.texture)
  915. self.Friendship.bg:SetVertexColor(1, 0, 0, 0.2)
  916.  
  917. self.Friendship.Tooltip = true
  918.  
  919. self.Friendship.Value = T.SetFontString(self.Friendship, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  920. self.Friendship.Value:SetPoint("CENTER")
  921. self.Friendship.Value:SetTextColor(1, 1, 1)
  922. self:Tag(self.Friendship.Value, "[friendshipstanding] - [curfriendship]/[maxfriendship]")
  923. end
  924. end
  925.  
  926. if C.unitframe.plugins_combat_feedback == true then
  927. self.CombatFeedbackText = T.SetFontString(self.Health, C.font.unit_frames_font, C.font.unit_frames_font_size * 2, C.font.unit_frames_font_style)
  928. if C.unitframe.portrait_enable == true then
  929. self.CombatFeedbackText:SetPoint("BOTTOM", self.Portrait, "BOTTOM", 0, 0)
  930. self.CombatFeedbackText:SetParent(self.Portrait)
  931. else
  932. self.CombatFeedbackText:SetPoint("CENTER", 0, 1)
  933. end
  934. end
  935.  
  936. if C.unitframe.icons_pvp == true then
  937. self.Status = T.SetFontString(self.Health, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  938. self.Status:SetPoint("CENTER", self.Health, "CENTER", 0, 0)
  939. self.Status:SetTextColor(0.69, 0.31, 0.31)
  940. self.Status:Hide()
  941. self.Status.Override = T.dummy
  942.  
  943. self.Status.Update = CreateFrame("Frame", nil, self)
  944. self.Status.Update:SetScript("OnUpdate", function(self, elapsed) T.UpdatePvPStatus(self:GetParent(), elapsed) end)
  945.  
  946. self:SetScript("OnEnter", function(self) FlashInfo.ManaLevel:Hide() self.Status:Show() UnitFrame_OnEnter(self) end)
  947. self:SetScript("OnLeave", function(self) FlashInfo.ManaLevel:Show() self.Status:Hide() UnitFrame_OnLeave(self) end)
  948. end
  949. end
  950.  
  951. if C.unitframe.unit_castbar == true and unit ~= "arenatarget" then
  952. self.Castbar = CreateFrame("StatusBar", self:GetName().."_Castbar", self)
  953. self.Castbar:SetStatusBarTexture(C.media.texture, "ARTWORK")
  954.  
  955. self.Castbar.bg = self.Castbar:CreateTexture(nil, "BORDER")
  956. self.Castbar.bg:SetAllPoints()
  957. self.Castbar.bg:SetTexture(C.media.texture)
  958.  
  959. self.Castbar.Overlay = CreateFrame("Frame", nil, self.Castbar)
  960. self.Castbar.Overlay:SetTemplate("Default")
  961. self.Castbar.Overlay:SetFrameStrata("BACKGROUND")
  962. self.Castbar.Overlay:SetFrameLevel(3)
  963. self.Castbar.Overlay:SetPoint("TOPLEFT", -2, 2)
  964. self.Castbar.Overlay:SetPoint("BOTTOMRIGHT", 2, -2)
  965.  
  966. self.Castbar.PostCastStart = T.PostCastStart
  967. self.Castbar.PostChannelStart = T.PostChannelStart
  968.  
  969. if unit == "player" then
  970. if C.unitframe.castbar_icon == true then
  971. self.Castbar:SetPoint(C.position.unitframes.player_castbar[1], C.position.unitframes.player_castbar[2], C.position.unitframes.player_castbar[3], C.position.unitframes.player_castbar[4] + 11, C.position.unitframes.player_castbar[5])
  972. self.Castbar:SetWidth(258)
  973. else
  974. self.Castbar:SetPoint(unpack(C.position.unitframes.player_castbar))
  975. self.Castbar:SetWidth(281)
  976. end
  977. self.Castbar:SetHeight(16)
  978. elseif unit == "target" then
  979. if C.unitframe.castbar_icon == true then
  980. if C.unitframe.plugins_swing == true then
  981. self.Castbar:SetPoint(C.position.unitframes.target_castbar[1], C.position.unitframes.target_castbar[2], C.position.unitframes.target_castbar[3], C.position.unitframes.target_castbar[4] - 23, C.position.unitframes.target_castbar[5] + 12)
  982. else
  983. self.Castbar:SetPoint(C.position.unitframes.target_castbar[1], C.position.unitframes.target_castbar[2], C.position.unitframes.target_castbar[3], C.position.unitframes.target_castbar[4] - 23, C.position.unitframes.target_castbar[5])
  984. end
  985. self.Castbar:SetWidth(258)
  986. else
  987. if C.unitframe.plugins_swing == true then
  988. self.Castbar:SetPoint(C.position.unitframes.target_castbar[1], C.position.unitframes.target_castbar[2], C.position.unitframes.target_castbar[3], C.position.unitframes.target_castbar[4], C.position.unitframes.target_castbar[5] + 12)
  989. else
  990. self.Castbar:SetPoint(unpack(C.position.unitframes.target_castbar))
  991. end
  992. self.Castbar:SetWidth(281)
  993. end
  994. self.Castbar:SetHeight(16)
  995. elseif unit == "arena" or unit == "boss" then
  996. self.Castbar:SetPoint("TOPLEFT", self, "BOTTOMLEFT", 0, -7)
  997. self.Castbar:SetWidth(150)
  998. self.Castbar:SetHeight(16)
  999. else
  1000. self.Castbar:SetPoint("TOPLEFT", self, "BOTTOMLEFT", 0, -7)
  1001. self.Castbar:SetWidth(105)
  1002. self.Castbar:SetHeight(5)
  1003. end
  1004.  
  1005. if unit == "focus" then
  1006. self.Castbar.Button = CreateFrame("Frame", nil, self.Castbar)
  1007. self.Castbar.Button:SetHeight(65)
  1008. self.Castbar.Button:SetWidth(65)
  1009. self.Castbar.Button:SetPoint(unpack(C.position.unitframes.focus_castbar))
  1010. self.Castbar.Button:SetTemplate("Default")
  1011.  
  1012. self.Castbar.Icon = self.Castbar.Button:CreateTexture(nil, "ARTWORK")
  1013. self.Castbar.Icon:SetPoint("TOPLEFT", self.Castbar.Button, 2, -2)
  1014. self.Castbar.Icon:SetPoint("BOTTOMRIGHT", self.Castbar.Button, -2, 2)
  1015. self.Castbar.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
  1016.  
  1017. self.Castbar.Time = T.SetFontString(self.Castbar, C.font.unit_frames_font, C.font.unit_frames_font_size * 2, C.font.unit_frames_font_style)
  1018. self.Castbar.Time:SetParent(self.Castbar.Button)
  1019. self.Castbar.Time:SetPoint("CENTER", self.Castbar.Icon, "CENTER", 0, 10)
  1020. self.Castbar.Time:SetTextColor(1, 1, 1)
  1021.  
  1022. self.Castbar.Time2 = T.SetFontString(self.Castbar, C.font.unit_frames_font, C.font.unit_frames_font_size * 2, C.font.unit_frames_font_style)
  1023. self.Castbar.Time2:SetParent(self.Castbar.Button)
  1024. self.Castbar.Time2:SetPoint("CENTER", self.Castbar.Icon, "CENTER", 0, -10)
  1025. self.Castbar.Time2:SetTextColor(1, 1, 1)
  1026.  
  1027. self.Castbar.CustomTimeText = function(self, duration)
  1028. self.Time:SetText(("%.1f"):format(self.max))
  1029. self.Time2:SetText(("%.1f"):format(self.channeling and duration or self.max - duration))
  1030. end
  1031. self.Castbar.CustomDelayText = function(self)
  1032. self.Time:SetText(("|cffaf5050%s %.1f|r"):format(self.channeling and "-" or "+", abs(self.delay)))
  1033. end
  1034. end
  1035.  
  1036. if unit == "player" or unit == "target" or unit == "arena" or unit == "boss" then
  1037. self.Castbar.Time = T.SetFontString(self.Castbar, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  1038. self.Castbar.Time:SetPoint("RIGHT", self.Castbar, "RIGHT", 0, 0)
  1039. self.Castbar.Time:SetTextColor(1, 1, 1)
  1040. self.Castbar.Time:SetJustifyH("RIGHT")
  1041. self.Castbar.CustomTimeText = T.CustomCastTimeText
  1042. self.Castbar.CustomDelayText = T.CustomCastDelayText
  1043.  
  1044. self.Castbar.Text = T.SetFontString(self.Castbar, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  1045. self.Castbar.Text:SetPoint("LEFT", self.Castbar, "LEFT", 2, 0)
  1046. self.Castbar.Text:SetPoint("RIGHT", self.Castbar.Time, "LEFT", -1, 0)
  1047. self.Castbar.Text:SetTextColor(1, 1, 1)
  1048. self.Castbar.Text:SetJustifyH("LEFT")
  1049. self.Castbar.Text:SetHeight(C.font.unit_frames_font_size)
  1050.  
  1051. if C.unitframe.castbar_icon == true and unit ~= "arena" then
  1052. self.Castbar.Button = CreateFrame("Frame", nil, self.Castbar)
  1053. self.Castbar.Button:SetHeight(20)
  1054. self.Castbar.Button:SetWidth(20)
  1055. self.Castbar.Button:SetTemplate("Default")
  1056.  
  1057. self.Castbar.Icon = self.Castbar.Button:CreateTexture(nil, "ARTWORK")
  1058. self.Castbar.Icon:SetPoint("TOPLEFT", self.Castbar.Button, 2, -2)
  1059. self.Castbar.Icon:SetPoint("BOTTOMRIGHT", self.Castbar.Button, -2, 2)
  1060. self.Castbar.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
  1061.  
  1062. if unit == "player" then
  1063. self.Castbar.Button:SetPoint("RIGHT", self.Castbar, "LEFT", -5, 0)
  1064. elseif unit == "target" then
  1065. self.Castbar.Button:SetPoint("LEFT", self.Castbar, "RIGHT", 5, 0)
  1066. end
  1067. end
  1068.  
  1069. if unit == "arena" or unit == "boss" then
  1070. self.Castbar.Button = CreateFrame("Frame", nil, self.Castbar)
  1071. self.Castbar.Button:SetHeight(20)
  1072. self.Castbar.Button:SetWidth(20)
  1073. self.Castbar.Button:SetTemplate("Default")
  1074. if unit == "boss" then
  1075. if C.unitframe.boss_on_right == true then
  1076. self.Castbar.Button:SetPoint("TOPRIGHT", self.Castbar, "TOPLEFT", -5, 2)
  1077. else
  1078. self.Castbar.Button:SetPoint("TOPLEFT", self.Castbar, "TOPRIGHT", 5, 2)
  1079. end
  1080. else
  1081. self.Castbar.Button:SetPoint("TOPRIGHT", self.Castbar, "TOPLEFT", -5, 2)
  1082. end
  1083.  
  1084. self.Castbar.Icon = self.Castbar.Button:CreateTexture(nil, "ARTWORK")
  1085. self.Castbar.Icon:SetPoint("TOPLEFT", self.Castbar.Button, 2, -2)
  1086. self.Castbar.Icon:SetPoint("BOTTOMRIGHT", self.Castbar.Button, -2, 2)
  1087. self.Castbar.Icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
  1088. end
  1089.  
  1090. if unit == "player" and C.unitframe.castbar_latency == true then
  1091. self.Castbar.SafeZone = self.Castbar:CreateTexture(nil, "BORDER", nil, 1)
  1092. self.Castbar.SafeZone:SetTexture(C.media.texture)
  1093. self.Castbar.SafeZone:SetVertexColor(0.85, 0.27, 0.27)
  1094.  
  1095. self.Castbar.Latency = T.SetFontString(self.Castbar, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  1096. self.Castbar.Latency:SetTextColor(1, 1, 1)
  1097. self.Castbar.Latency:SetPoint("TOPRIGHT", self.Castbar.Time, "BOTTOMRIGHT", 0, 0)
  1098. self.Castbar.Latency:SetJustifyH("RIGHT")
  1099.  
  1100. self:RegisterEvent("UNIT_SPELLCAST_SENT", function(self, event, caster)
  1101. if (caster == "player" or caster == "vehicle") then
  1102. self.Castbar.castSent = GetTime()
  1103. end
  1104. end)
  1105. end
  1106. end
  1107. end
  1108.  
  1109. -- Swing bar
  1110. if C.unitframe.plugins_swing == true and unit == "player" then
  1111. self.Swing = CreateFrame("StatusBar", self:GetName().."_Swing", self)
  1112. self.Swing:CreateBackdrop("Default")
  1113. self.Swing:SetPoint("BOTTOMRIGHT", "oUF_Player_Castbar", "TOPRIGHT", 0, 7)
  1114. self.Swing:SetSize(281, 5)
  1115. self.Swing:SetStatusBarTexture(C.media.texture)
  1116. if C.unitframe.own_color == true then
  1117. self.Swing:SetStatusBarColor(unpack(C.unitframe.uf_color))
  1118. else
  1119. self.Swing:SetStatusBarColor(T.color.r, T.color.g, T.color.b)
  1120. end
  1121.  
  1122. self.Swing.bg = self.Swing:CreateTexture(nil, "BORDER")
  1123. self.Swing.bg:SetAllPoints(self.Swing)
  1124. self.Swing.bg:SetTexture(C.media.texture)
  1125. if C.unitframe.own_color == true then
  1126. self.Swing.bg:SetVertexColor(C.unitframe.uf_color[1], C.unitframe.uf_color[2], C.unitframe.uf_color[3], 0.2)
  1127. else
  1128. self.Swing.bg:SetVertexColor(T.color.r, T.color.g, T.color.b, 0.2)
  1129. end
  1130.  
  1131. self.Swing.Text = T.SetFontString(self.Swing, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  1132. self.Swing.Text:SetPoint("CENTER", 0, 0)
  1133. self.Swing.Text:SetTextColor(1, 1, 1)
  1134. end
  1135.  
  1136. if C.unitframe.show_arena and unit == "arena" then
  1137. self.Trinket = CreateFrame("Frame", self:GetName().."_Trinket", self)
  1138. self.Trinket:SetSize(31, 31)
  1139.  
  1140. self.FactionIcon = CreateFrame("Frame", nil, self)
  1141. self.FactionIcon:SetSize(31, 31)
  1142.  
  1143. if C.unitframe.arena_on_right == true then
  1144. self.Trinket:SetPoint("TOPRIGHT", self, "TOPLEFT", -5, 2)
  1145. self.FactionIcon:SetPoint("TOPRIGHT", self, "TOPLEFT", -5, 2)
  1146. else
  1147. self.Trinket:SetPoint("TOPLEFT", self, "TOPRIGHT", 5, 2)
  1148. self.FactionIcon:SetPoint("TOPLEFT", self, "TOPRIGHT", 5, 2)
  1149. end
  1150. self.Trinket:SetTemplate("Default")
  1151. self.FactionIcon:SetTemplate("Default")
  1152.  
  1153. self.AuraTracker = CreateFrame("Frame", self:GetName().."_Auratracker", self)
  1154. self.AuraTracker:SetWidth(self.Trinket:GetWidth())
  1155. self.AuraTracker:SetHeight(self.Trinket:GetHeight())
  1156. self.AuraTracker:SetPoint("CENTER", self.Trinket, "CENTER")
  1157. self.AuraTracker:SetFrameStrata("HIGH")
  1158.  
  1159. self.AuraTracker.icon = self.AuraTracker:CreateTexture(nil, "ARTWORK")
  1160. self.AuraTracker.icon:SetWidth(self.Trinket:GetWidth())
  1161. self.AuraTracker.icon:SetHeight(self.Trinket:GetHeight())
  1162. self.AuraTracker.icon:SetPoint("TOPLEFT", self.Trinket, 2, -2)
  1163. self.AuraTracker.icon:SetPoint("BOTTOMRIGHT", self.Trinket, -2, 2)
  1164. self.AuraTracker.icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
  1165.  
  1166. self.AuraTracker.text = T.SetFontString(self.AuraTracker, C.font.unit_frames_font, C.font.unit_frames_font_size * 2, C.font.unit_frames_font_style)
  1167. self.AuraTracker.text:SetPoint("CENTER", self.AuraTracker, 0, 0)
  1168. self.AuraTracker:SetScript("OnUpdate", T.AuraTrackerTime)
  1169.  
  1170. if C.unitframe.plugins_enemy_spec == true then
  1171. self.EnemySpec = T.SetFontString(self.Power, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  1172. self.EnemySpec:SetTextColor(1, 0, 0)
  1173. if C.unitframe.arena_on_right == true then
  1174. self.EnemySpec:SetPoint("RIGHT", self.Power, "RIGHT", 0, 0)
  1175. self.EnemySpec:SetJustifyH("LEFT")
  1176. else
  1177. self.EnemySpec:SetPoint("LEFT", self.Power, "LEFT", 2, 0)
  1178. self.EnemySpec:SetJustifyH("RIGHT")
  1179. end
  1180. end
  1181. end
  1182.  
  1183. if C.unitframe.show_boss and unit == "boss" then
  1184. self.AltPowerBar = CreateFrame("StatusBar", nil, self.Health)
  1185. self.AltPowerBar:SetFrameLevel(self.Health:GetFrameLevel() + 1)
  1186. self.AltPowerBar:SetHeight(4)
  1187. self.AltPowerBar:SetStatusBarTexture(C.media.texture)
  1188. self.AltPowerBar:SetStatusBarColor(1, 0, 0)
  1189. self.AltPowerBar:SetPoint("LEFT")
  1190. self.AltPowerBar:SetPoint("RIGHT")
  1191. self.AltPowerBar:SetPoint("TOP", self.Health, "TOP")
  1192. self.AltPowerBar:SetBackdrop({
  1193. bgFile = C.media.blank,
  1194. edgeFile = C.media.blank,
  1195. tile = false, tileSize = 0, edgeSize = T.Scale(1),
  1196. insets = {left = 0, right = 0, top = 0, bottom = T.Scale(-1)}
  1197. })
  1198. self.AltPowerBar:SetBackdropColor(0, 0, 0)
  1199. self.AltPowerBar:SetBackdropBorderColor(0, 0, 0)
  1200.  
  1201. self.AltPowerBar.text = T.SetFontString(self.AltPowerBar, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  1202. self.AltPowerBar.text:SetPoint("CENTER", self.AltPowerBar, "CENTER", 0, 0)
  1203. self:Tag(self.AltPowerBar.text, "[AltPower]")
  1204.  
  1205. if C.aura.boss_buffs == true then
  1206. self.Auras = CreateFrame("Frame", self:GetName().."_AuraBossBuff", self)
  1207. if C.unitframe.boss_on_right == true then
  1208. self.Auras:SetPoint("RIGHT", self, "LEFT", -5, 0)
  1209. self.Auras.initialAnchor = "RIGHT"
  1210. self.Auras["growth-x"] = "LEFT"
  1211. else
  1212. self.Auras:SetPoint("LEFT", self, "RIGHT", 5, 0)
  1213. self.Auras.initialAnchor = "LEFT"
  1214. self.Auras["growth-x"] = "RIGHT"
  1215. end
  1216. self.Auras.numDebuffs = C.unitframe.boss_debuffs
  1217. self.Auras.numBuffs = C.unitframe.boss_buffs
  1218. self.Auras:SetHeight(31)
  1219. self.Auras:SetWidth(87)
  1220. self.Auras.spacing = T.Scale(3)
  1221. self.Auras.size = T.Scale(31)
  1222. self.Auras.gap = true
  1223. self.Auras.PostCreateIcon = T.PostCreateAura
  1224. self.Auras.PostUpdateIcon = T.PostUpdateIcon
  1225. end
  1226.  
  1227. self:HookScript("OnShow", T.UpdateAllElements)
  1228. end
  1229.  
  1230. -- Agro border
  1231. if C.raidframe.aggro_border == true and unit ~= "arenatarget" then
  1232. table.insert(self.__elements, T.UpdateThreat)
  1233. self:RegisterEvent("PLAYER_TARGET_CHANGED", T.UpdateThreat)
  1234. self:RegisterEvent("UNIT_THREAT_LIST_UPDATE", T.UpdateThreat)
  1235. self:RegisterEvent("UNIT_THREAT_SITUATION_UPDATE", T.UpdateThreat)
  1236. end
  1237.  
  1238. -- Raid marks
  1239. if C.raidframe.icons_raid_mark == true then
  1240. self.RaidIcon = self:CreateTexture(nil, "OVERLAY")
  1241. self.RaidIcon:SetParent(self.Health)
  1242. self.RaidIcon:SetSize((unit == "player" or unit == "target") and 15 or 12, (unit == "player" or unit == "target") and 15 or 12)
  1243. self.RaidIcon:SetPoint("TOP", self.Health, 0, 0)
  1244. end
  1245.  
  1246. -- Debuff highlight
  1247. if unit ~= "arenatarget" then
  1248. self.DebuffHighlight = self.Health:CreateTexture(nil, "OVERLAY")
  1249. self.DebuffHighlight:SetAllPoints(self.Health)
  1250. self.DebuffHighlight:SetTexture(C.media.highlight)
  1251. self.DebuffHighlight:SetVertexColor(0, 0, 0, 0)
  1252. self.DebuffHighlight:SetBlendMode("ADD")
  1253. self.DebuffHighlightAlpha = 1
  1254. self.DebuffHighlightFilter = true
  1255. end
  1256.  
  1257. -- Incoming heal text/bar
  1258. if C.raidframe.plugins_healcomm == true then
  1259. local mhpb = CreateFrame("StatusBar", nil, self.Health)
  1260. mhpb:SetPoint("TOPLEFT", self.Health:GetStatusBarTexture(), "TOPRIGHT", 0, 0)
  1261. mhpb:SetPoint("BOTTOMLEFT", self.Health:GetStatusBarTexture(), "BOTTOMRIGHT", 0, 0)
  1262. if unit == "player" or unit == "target" then
  1263. mhpb:SetWidth(217)
  1264. elseif unit == "pet" or unit == "focus" or unit == "focustarget" or unit == "targettarget" then
  1265. mhpb:SetWidth(105)
  1266. elseif unit == "arenatarget" then
  1267. mhpb:SetWidth(30)
  1268. else
  1269. mhpb:SetWidth(150)
  1270. end
  1271. mhpb:SetStatusBarTexture(C.media.texture)
  1272. mhpb:SetStatusBarColor(0, 1, 0.5, 0.2)
  1273. mhpb:SetFrameLevel(3)
  1274.  
  1275. local ohpb = CreateFrame("StatusBar", nil, self.Health)
  1276. ohpb:SetPoint("TOPLEFT", mhpb:GetStatusBarTexture(), "TOPRIGHT", 0, 0)
  1277. ohpb:SetPoint("BOTTOMLEFT", mhpb:GetStatusBarTexture(), "BOTTOMRIGHT", 0, 0)
  1278. ohpb:SetWidth(mhpb:GetWidth())
  1279. ohpb:SetStatusBarTexture(C.media.texture)
  1280. ohpb:SetStatusBarColor(0, 1, 0, 0.2)
  1281. ohpb:SetFrameLevel(3)
  1282.  
  1283. local ahpb = CreateFrame("StatusBar", nil, self.Health)
  1284. ahpb:SetPoint("TOPLEFT", self.Health:GetStatusBarTexture(), "TOPRIGHT", 0, 0)
  1285. ahpb:SetPoint("BOTTOMLEFT", self.Health:GetStatusBarTexture(), "BOTTOMRIGHT", 0, 0)
  1286. ahpb:SetWidth(mhpb:GetWidth())
  1287. ahpb:SetStatusBarTexture(C.media.texture)
  1288. ahpb:SetStatusBarColor(1, 1, 0, 0.2)
  1289. ahpb:SetFrameLevel(3)
  1290.  
  1291. self.HealPrediction = {
  1292. myBar = mhpb,
  1293. otherBar = ohpb,
  1294. absorbBar = ahpb,
  1295. maxOverflow = 1,
  1296. frequentUpdates = true,
  1297. PostUpdate = function(frame)
  1298. if frame.myBar:GetValue() == 0 then frame.myBar:SetAlpha(0) else frame.myBar:SetAlpha(1) end
  1299. if frame.otherBar:GetValue() == 0 then frame.otherBar:SetAlpha(0) else frame.otherBar:SetAlpha(1) end
  1300. if frame.absorbBar:GetValue() == 0 then frame.absorbBar:SetAlpha(0) else frame.absorbBar:SetAlpha(1) end
  1301. end
  1302. }
  1303. end
  1304.  
  1305. -- Fader
  1306. if C.unitframe.plugins_fader == true then
  1307. if unit ~= "arena" or unit ~= "arenatarget" or unit ~= "boss" then
  1308. self.Fader = {
  1309. [1] = {Combat = 1, Arena = 1, Instance = 1},
  1310. [2] = {PlayerTarget = 1, PlayerNotMaxHealth = 1, PlayerNotMaxMana = 1},
  1311. [3] = {Stealth = 0.5},
  1312. [4] = {notCombat = 0, PlayerTaxi = 0},
  1313. }
  1314. end
  1315. self.NormalAlpha = 1
  1316. end
  1317.  
  1318. T.HideAuraFrame(self)
  1319. return self
  1320. end
  1321.  
  1322. ----------------------------------------------------------------------------------------
  1323. -- Default position of ShestakUI unitframes
  1324. ----------------------------------------------------------------------------------------
  1325. oUF:RegisterStyle("Shestak", Shared)
  1326.  
  1327. local player = oUF:Spawn("player", "oUF_Player")
  1328. player:SetPoint(unpack(C.position.unitframes.player))
  1329. player:SetSize(217, 27)
  1330.  
  1331. local target = oUF:Spawn("target", "oUF_Target")
  1332. target:SetPoint(unpack(C.position.unitframes.target))
  1333. target:SetSize(217, 27)
  1334.  
  1335. if C.unitframe.show_pet == true then
  1336. local pet = oUF:Spawn("pet", "oUF_Pet")
  1337. pet:SetPoint(unpack(C.position.unitframes.pet))
  1338. pet:SetSize(105, 16)
  1339. end
  1340.  
  1341. if C.unitframe.show_focus == true then
  1342. local focus = oUF:Spawn("focus", "oUF_Focus")
  1343. focus:SetPoint(unpack(C.position.unitframes.focus))
  1344. focus:SetSize(105, 16)
  1345.  
  1346. local focustarget = oUF:Spawn("focustarget", "oUF_FocusTarget")
  1347. focustarget:SetPoint(unpack(C.position.unitframes.focus_target))
  1348. focustarget:SetSize(105, 16)
  1349. else
  1350. local focus = oUF:Spawn("focus", "oUF_Focus")
  1351. end
  1352.  
  1353. if C.unitframe.show_target_target == true then
  1354. local targettarget = oUF:Spawn("targettarget", "oUF_TargetTarget")
  1355. targettarget:SetPoint(unpack(C.position.unitframes.target_target))
  1356. targettarget:SetSize(105, 16)
  1357. end
  1358.  
  1359. if C.unitframe.show_boss == true then
  1360. local boss = {}
  1361. for i = 1, MAX_BOSS_FRAMES do
  1362. boss[i] = oUF:Spawn("boss"..i, "oUF_Boss"..i)
  1363. if i == 1 then
  1364. if C.unitframe.boss_on_right == true then
  1365. boss[i]:SetPoint(unpack(C.position.unitframes.boss))
  1366. else
  1367. boss[i]:SetPoint("BOTTOMLEFT", C.position.unitframes.boss[2], "LEFT", C.position.unitframes.boss[4] + 46, C.position.unitframes.boss[5])
  1368. end
  1369. else
  1370. boss[i]:SetPoint("BOTTOM", boss[i-1], "TOP", 0, 30)
  1371. end
  1372. boss[i]:SetSize(150, 27)
  1373. end
  1374. end
  1375.  
  1376. if C.unitframe.show_arena == true then
  1377. local arena = {}
  1378. for i = 1, 5 do
  1379. arena[i] = oUF:Spawn("arena"..i, "oUF_Arena"..i)
  1380. if i == 1 then
  1381. if C.unitframe.arena_on_right == true then
  1382. arena[i]:SetPoint(unpack(C.position.unitframes.arena))
  1383. else
  1384. arena[i]:SetPoint("BOTTOMLEFT", C.position.unitframes.arena[2], "LEFT", C.position.unitframes.arena[4] + 120, C.position.unitframes.arena[5])
  1385. end
  1386. else
  1387. arena[i]:SetPoint("BOTTOM", arena[i-1], "TOP", 0, 30)
  1388. end
  1389. arena[i]:SetSize(150, 27)
  1390. end
  1391.  
  1392. local arenatarget = {}
  1393. for i = 1, 5 do
  1394. arenatarget[i] = oUF:Spawn("arena"..i.."target", "oUF_Arena"..i.."Target")
  1395. if i == 1 then
  1396. if C.unitframe.arena_on_right == true then
  1397. arenatarget[i]:SetPoint("TOPLEFT", arena[i], "TOPRIGHT", 7, 0)
  1398. else
  1399. arenatarget[i]:SetPoint("TOPRIGHT", arena[i], "TOPLEFT", -7, 0)
  1400. end
  1401. else
  1402. arenatarget[i]:SetPoint("BOTTOM", arenatarget[i-1], "TOP", 0, 30)
  1403. end
  1404. arenatarget[i]:SetSize(30, 27)
  1405. end
  1406. end
  1407.  
  1408. ----------------------------------------------------------------------------------------
  1409. -- Arena preparation(by Blizzard)(../Blizzard_ArenaUI/Blizzard_ArenaUI.lua)
  1410. ----------------------------------------------------------------------------------------
  1411. if C.unitframe.show_arena == true then
  1412. local arenaprep = {}
  1413. for i = 1, 5 do
  1414. arenaprep[i] = CreateFrame("Frame", "oUF_ArenaPrep"..i, UIParent)
  1415. arenaprep[i]:SetAllPoints(_G["oUF_Arena"..i])
  1416. arenaprep[i]:CreateBackdrop("Default")
  1417. arenaprep[i]:SetFrameStrata("BACKGROUND")
  1418.  
  1419. arenaprep[i].Health = CreateFrame("StatusBar", nil, arenaprep[i])
  1420. arenaprep[i].Health:SetAllPoints()
  1421. arenaprep[i].Health:SetStatusBarTexture(C.media.texture)
  1422.  
  1423. arenaprep[i].Spec = T.SetFontString(arenaprep[i].Health, C.font.unit_frames_font, C.font.unit_frames_font_size, C.font.unit_frames_font_style)
  1424. arenaprep[i].Spec:SetPoint("CENTER")
  1425.  
  1426. arenaprep[i]:Hide()
  1427. end
  1428.  
  1429. local arenaprepupdate = CreateFrame("Frame")
  1430. arenaprepupdate:RegisterEvent("PLAYER_LOGIN")
  1431. arenaprepupdate:RegisterEvent("PLAYER_ENTERING_WORLD")
  1432. arenaprepupdate:RegisterEvent("ARENA_OPPONENT_UPDATE")
  1433. arenaprepupdate:RegisterEvent("ARENA_PREP_OPPONENT_SPECIALIZATIONS")
  1434. arenaprepupdate:SetScript("OnEvent", function(self, event)
  1435. if event == "PLAYER_LOGIN" then
  1436. for i = 1, 5 do
  1437. arenaprep[i]:SetAllPoints(_G["oUF_Arena"..i])
  1438. end
  1439. elseif event == "ARENA_OPPONENT_UPDATE" then
  1440. for i = 1, 5 do
  1441. arenaprep[i]:Hide()
  1442. end
  1443. else
  1444. local numOpps = GetNumArenaOpponentSpecs()
  1445.  
  1446. if numOpps > 0 then
  1447. for i = 1, 5 do
  1448. local f = arenaprep[i]
  1449.  
  1450. if i <= numOpps then
  1451. local s = GetArenaOpponentSpec(i)
  1452. local _, spec, class = nil, "UNKNOWN", "UNKNOWN"
  1453.  
  1454. if s and s > 0 then
  1455. _, spec, _, _, _, _, class = GetSpecializationInfoByID(s)
  1456. end
  1457.  
  1458. if class and spec then
  1459. local color = (CUSTOM_CLASS_COLORS or RAID_CLASS_COLORS)[class]
  1460. if C.unitframe.own_color == true then
  1461. f.Health:SetStatusBarColor(unpack(C.unitframe.uf_color))
  1462. f.Spec:SetText(spec)
  1463. f.Spec:SetTextColor(color.r, color.g, color.b)
  1464. else
  1465. if color then
  1466. f.Health:SetStatusBarColor(color.r, color.g, color.b)
  1467. else
  1468. f.Health:SetStatusBarColor(unpack(C.unitframe.uf_color))
  1469. end
  1470. f.Spec:SetText(spec)
  1471. end
  1472. f:Show()
  1473. end
  1474. else
  1475. f:Hide()
  1476. end
  1477. end
  1478. else
  1479. for i = 1, 5 do
  1480. arenaprep[i]:Hide()
  1481. end
  1482. end
  1483. end
  1484. end)
  1485. end
  1486.  
  1487. ----------------------------------------------------------------------------------------
  1488. -- Test UnitFrames(by community)
  1489. ----------------------------------------------------------------------------------------
  1490. local moving = false
  1491. SlashCmdList.TEST_UF = function(msg)
  1492. if InCombatLockdown() then print("|cffffff00"..ERR_NOT_IN_COMBAT.."|r") return end
  1493. if not moving then
  1494. for _, frames in pairs({"oUF_Target", "oUF_TargetTarget", "oUF_Pet", "oUF_Focus", "oUF_FocusTarget"}) do
  1495. _G[frames].oldunit = _G[frames].unit
  1496. _G[frames]:SetAttribute("unit", "player")
  1497. end
  1498.  
  1499. if C.unitframe.show_arena == true then
  1500. for i = 1, 5 do
  1501. _G["oUF_Arena"..i].oldunit = _G["oUF_Arena"..i].unit
  1502. _G["oUF_Arena"..i].Trinket.Hide = T.dummy
  1503. _G["oUF_Arena"..i].Trinket.Icon:SetTexture("Interface\\Icons\\INV_Jewelry_Necklace_37")
  1504. _G["oUF_Arena"..i]:SetAttribute("unit", "player")
  1505.  
  1506. _G["oUF_Arena"..i.."Target"].oldunit = _G["oUF_Arena"..i.."Target"].unit
  1507. _G["oUF_Arena"..i.."Target"]:SetAttribute("unit", "player")
  1508.  
  1509. if C.unitframe.plugins_enemy_spec == true then
  1510. _G["oUF_Arena"..i].EnemySpec:SetText(SPECIALIZATION)
  1511. end
  1512.  
  1513. if C.unitframe.plugins_diminishing == true then
  1514. SlashCmdList.DIMINISHINGCD()
  1515. end
  1516. end
  1517. end
  1518.  
  1519. if C.unitframe.show_boss == true then
  1520. for i = 1, MAX_BOSS_FRAMES do
  1521. _G["oUF_Boss"..i].oldunit = _G["oUF_Boss"..i].unit
  1522. _G["oUF_Boss"..i]:SetAttribute("unit", "player")
  1523. end
  1524. end
  1525. moving = true
  1526. else
  1527. for _, frames in pairs({"oUF_Target", "oUF_TargetTarget", "oUF_Pet", "oUF_Focus", "oUF_FocusTarget"}) do
  1528. _G[frames]:SetAttribute("unit", _G[frames].oldunit)
  1529. end
  1530.  
  1531. if C.unitframe.show_arena == true then
  1532. for i = 1, 5 do
  1533. _G["oUF_Arena"..i].Trinket.Hide = nil
  1534. _G["oUF_Arena"..i]:SetAttribute("unit", _G["oUF_Arena"..i].oldunit)
  1535. _G["oUF_Arena"..i.."Target"]:SetAttribute("unit", _G["oUF_Arena"..i.."Target"].oldunit)
  1536. end
  1537. end
  1538.  
  1539. if C.unitframe.show_boss == true then
  1540. for i = 1, MAX_BOSS_FRAMES do
  1541. _G["oUF_Boss"..i]:SetAttribute("unit", _G["oUF_Boss"..i].oldunit)
  1542. end
  1543. end
  1544. moving = false
  1545. end
  1546. end
  1547. SLASH_TEST_UF1 = "/testui"
  1548. SLASH_TEST_UF2 = "/еуыегш"
  1549. SLASH_TEST_UF3 = "/testuf"
  1550. SLASH_TEST_UF4 = "/еуыега"
  1551.  
  1552. ----------------------------------------------------------------------------------------
  1553. -- Player line
  1554. ----------------------------------------------------------------------------------------
  1555. if C.unitframe.lines == true then
  1556. local HorizontalPlayerLine = CreateFrame("Frame", "HorizontalPlayerLine", oUF_Player)
  1557. HorizontalPlayerLine:CreatePanel("ClassColor", 228, 1, "TOPLEFT", "oUF_Player", "BOTTOMLEFT", -5, -5)
  1558.  
  1559. local VerticalPlayerLine = CreateFrame("Frame", "VerticalPlayerLine", oUF_Player)
  1560. VerticalPlayerLine:CreatePanel("ClassColor", 1, 98, "RIGHT", HorizontalPlayerLine, "LEFT", 0, 13)
  1561. end
  1562.  
  1563. ----------------------------------------------------------------------------------------
  1564. -- Target line
  1565. ----------------------------------------------------------------------------------------
  1566. if C.unitframe.lines == true then
  1567. local HorizontalTargetLine = CreateFrame("Frame", "HorizontalTargetLine", oUF_Target)
  1568. HorizontalTargetLine:CreatePanel("ClassColor", 228, 1, "TOPRIGHT", "oUF_Target", "BOTTOMRIGHT", 5, -5)
  1569. HorizontalTargetLine:RegisterEvent("PLAYER_TARGET_CHANGED")
  1570. HorizontalTargetLine:SetScript("OnEvent", function(self)
  1571. local _, class = UnitClass("target")
  1572. local color = (CUSTOM_CLASS_COLORS or RAID_CLASS_COLORS)[class]
  1573. if color then
  1574. self:SetBackdropBorderColor(color.r, color.g, color.b)
  1575. else
  1576. self:SetBackdropBorderColor(unpack(C.media.border_color))
  1577. end
  1578. end)
  1579.  
  1580. local VerticalTargetLine = CreateFrame("Frame", "VerticalTargetLine", oUF_Target)
  1581. VerticalTargetLine:CreatePanel("ClassColor", 1, 98, "LEFT", HorizontalTargetLine, "RIGHT", 0, 13)
  1582. VerticalTargetLine:RegisterEvent("PLAYER_TARGET_CHANGED")
  1583. VerticalTargetLine:SetScript("OnEvent", function(self)
  1584. local _, class = UnitClass("target")
  1585. local color = (CUSTOM_CLASS_COLORS or RAID_CLASS_COLORS)[class]
  1586. if color then
  1587. self:SetBackdropBorderColor(color.r, color.g, color.b)
  1588. else
  1589. self:SetBackdropBorderColor(unpack(C.media.border_color))
  1590. end
  1591. end)
  1592. end
  1593.  
  1594. ----------------------------------------------------------------------------------------
  1595. -- Auto reposition heal raid frame
  1596. ----------------------------------------------------------------------------------------
  1597. local function Reposition()
  1598. if SavedOptions and SavedOptions.RaidLayout == "HEAL" and not C.raidframe.raid_groups_vertical then
  1599. if C.raidframe.raid_groups < 6 then return end
  1600.  
  1601. if C.unitframe.castbar_icon == true then
  1602. oUF_Player_Castbar:SetPoint(C.position.unitframes.player_castbar[1], C.position.unitframes.player_castbar[2], C.position.unitframes.player_castbar[3], C.position.unitframes.player_castbar[4] + 11, C.position.unitframes.player_castbar[5] + (C.raidframe.raid_groups - 5) * 33)
  1603. else
  1604. oUF_Player_Castbar:SetPoint(C.position.unitframes.player_castbar[1], C.position.unitframes.player_castbar[2], C.position.unitframes.player_castbar[3], C.position.unitframes.player_castbar[4], C.position.unitframes.player_castbar[5] + (C.raidframe.raid_groups - 5) * 33)
  1605. end
  1606.  
  1607. player:SetPoint(C.position.unitframes.player[1], C.position.unitframes.player[2], C.position.unitframes.player[3], C.position.unitframes.player[4], C.position.unitframes.player[5] + (C.raidframe.raid_groups - 5) * 33)
  1608. target:SetPoint(C.position.unitframes.target[1], C.position.unitframes.target[2], C.position.unitframes.target[3], C.position.unitframes.target[4], C.position.unitframes.target[5] + (C.raidframe.raid_groups - 5) * 33)
  1609. end
  1610. end
  1611.  
  1612. local frame = CreateFrame("Frame")
  1613. frame:RegisterEvent("PLAYER_LOGIN")
  1614. frame:SetScript("OnEvent", Reposition)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement