Advertisement
Wetxius

Untitled

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