/Tukui/modules/skins/talent.lua

http://github.com/Asphyxia/Tukui · Lua · 357 lines · 354 code · 2 blank · 1 comment · 1 complexity · a5ab70a34b047c44dfc735f42d516fc9 MD5 · raw file

  1. local T, C, L = unpack(select(2, ...))
  2. local function LoadSkin()
  3. --PLAYER TALENTS
  4. local buttons = {
  5. "PlayerTalentFrameToggleSummariesButton",
  6. "PlayerTalentFrameActivateButton",
  7. }
  8. PlayerTalentFrameToggleSummariesButton:Point("BOTTOM", PlayerTalentFrame, "BOTTOM",0,5)
  9. for i = 1, #buttons do
  10. _G[buttons[i]]:StripTextures()
  11. T.SkinButton(_G[buttons[i]])
  12. end
  13. local StripAllTextures = {
  14. "PlayerTalentFrame",
  15. "PlayerTalentFrameInset",
  16. "PlayerTalentFrameTalents",
  17. "PlayerTalentFramePanel1HeaderIcon",
  18. "PlayerTalentFramePanel2HeaderIcon",
  19. "PlayerTalentFramePanel3HeaderIcon",
  20. "PlayerTalentFramePetTalents",
  21. }
  22. for _, object in pairs(StripAllTextures) do
  23. _G[object]:StripTextures()
  24. end
  25. local function StripTalentFramePanelTextures(object)
  26. for i=1, object:GetNumRegions() do
  27. local region = select(i, object:GetRegions())
  28. if region:GetObjectType() == "Texture" then
  29. if region:GetName():find("Branch") then
  30. region:SetDrawLayer("OVERLAY")
  31. else
  32. region:SetTexture(nil)
  33. end
  34. end
  35. end
  36. end
  37. StripTalentFramePanelTextures(PlayerTalentFramePanel1)
  38. StripTalentFramePanelTextures(PlayerTalentFramePanel2)
  39. StripTalentFramePanelTextures(PlayerTalentFramePanel3)
  40. StripTalentFramePanelTextures(PlayerTalentFramePetPanel)
  41. for i=1, 3 do
  42. _G["PlayerTalentFramePanel"..i.."SelectTreeButton"]:SetFrameLevel(_G["PlayerTalentFramePanel"..i.."SelectTreeButton"]:GetFrameLevel() + 5)
  43. _G["PlayerTalentFramePanel"..i.."SelectTreeButton"]:StripTextures(true)
  44. T.SkinButton(_G["PlayerTalentFramePanel"..i.."SelectTreeButton"])
  45. end
  46. local KillTextures = {
  47. "PlayerTalentFramePanel1InactiveShadow",
  48. "PlayerTalentFramePanel2InactiveShadow",
  49. "PlayerTalentFramePanel3InactiveShadow",
  50. "PlayerTalentFramePanel1SummaryRoleIcon",
  51. "PlayerTalentFramePanel2SummaryRoleIcon",
  52. "PlayerTalentFramePanel3SummaryRoleIcon",
  53. "PlayerTalentFramePetShadowOverlay",
  54. "PlayerTalentFrameHeaderHelpBox",
  55. }
  56. for _, texture in pairs(KillTextures) do
  57. _G[texture]:Kill()
  58. end
  59. for i=1, 3 do
  60. _G["PlayerTalentFramePanel"..i.."Arrow"]:SetFrameLevel(_G["PlayerTalentFramePanel"..i.."Arrow"]:GetFrameLevel() + 2)
  61. end
  62. PlayerTalentFramePetPanelArrow:SetFrameStrata("HIGH")
  63. PlayerTalentFrame:SetTemplate("Transparent")
  64. PlayerTalentFramePanel1:CreateBackdrop("Transparent")
  65. PlayerTalentFramePanel1.backdrop:Point( "TOPLEFT", PlayerTalentFramePanel1, "TOPLEFT", 3, -3 )
  66. PlayerTalentFramePanel1.backdrop:Point( "BOTTOMRIGHT", PlayerTalentFramePanel1, "BOTTOMRIGHT", -3, 3 )
  67. PlayerTalentFramePanel2:CreateBackdrop("Transparent")
  68. PlayerTalentFramePanel2.backdrop:Point( "TOPLEFT", PlayerTalentFramePanel2, "TOPLEFT", 3, -3 )
  69. PlayerTalentFramePanel2.backdrop:Point( "BOTTOMRIGHT", PlayerTalentFramePanel2, "BOTTOMRIGHT", -3, 3 )
  70. PlayerTalentFramePanel3:CreateBackdrop("Transparent")
  71. PlayerTalentFramePanel3.backdrop:Point( "TOPLEFT", PlayerTalentFramePanel3, "TOPLEFT", 3, -3 )
  72. PlayerTalentFramePanel3.backdrop:Point( "BOTTOMRIGHT", PlayerTalentFramePanel3, "BOTTOMRIGHT", -3, 3 )
  73. PlayerTalentFrame:CreateShadow("Transparent")
  74. T.SkinCloseButton(PlayerTalentFrameCloseButton)
  75. function talentpairs(inspect,pet)
  76. local tab,tal=1,0
  77. return function()
  78. tal=tal+1
  79. if tal>GetNumTalents(tab,inspect,pet) then
  80. tal=1
  81. tab=tab+1
  82. end
  83. if tab<=GetNumTalentTabs(inspect,pet) then
  84. return tab,tal
  85. end
  86. end
  87. end
  88. --Skin TalentButtons
  89. local function TalentButtons(self, first, i, j)
  90. local button = _G["PlayerTalentFramePanel"..i.."Talent"..j]
  91. local icon = _G["PlayerTalentFramePanel"..i.."Talent"..j.."IconTexture"]
  92. if first then
  93. button:StripTextures()
  94. end
  95. if button.Rank then
  96. button.Rank:SetFont(C.media.font, 12, "THINOUTLINE")
  97. button.Rank:ClearAllPoints()
  98. button.Rank:SetPoint("BOTTOMRIGHT")
  99. end
  100. if icon then
  101. icon:SetTexCoord(.08, .92, .08, .92)
  102. button:StyleButton()
  103. button.SetHighlightTexture = T.dummy
  104. button.SetPushedTexture = T.dummy
  105. button:GetNormalTexture():SetTexCoord(.08, .92, .08, .92)
  106. button:GetPushedTexture():SetTexCoord(.08, .92, .08, .92)
  107. button:GetHighlightTexture():SetAllPoints(icon)
  108. button:GetPushedTexture():SetAllPoints(icon)
  109. icon:ClearAllPoints()
  110. icon:SetAllPoints()
  111. button:SetFrameLevel(button:GetFrameLevel() +1)
  112. button:CreateBackdrop("Transparent", true)
  113. end
  114. end
  115. local function TalentSummaryButtons(self, first, active, i, j)
  116. if active then
  117. button = _G["PlayerTalentFramePanel"..i.."SummaryActiveBonus1"]
  118. icon = _G["PlayerTalentFramePanel"..i.."SummaryActiveBonus1Icon"]
  119. else
  120. button = _G["PlayerTalentFramePanel"..i.."SummaryBonus"..j]
  121. icon = _G["PlayerTalentFramePanel"..i.."SummaryBonus"..j.."Icon"]
  122. end
  123. if first then
  124. button:StripTextures()
  125. end
  126. if icon then
  127. icon:SetTexCoord(.08, .92, .08, .92)
  128. button:SetFrameLevel(button:GetFrameLevel() +1)
  129. local frame = CreateFrame("Frame",nil, button)
  130. frame:CreateBackdrop("Transparent", true)
  131. frame:SetFrameLevel(button:GetFrameLevel() -1)
  132. frame:ClearAllPoints()
  133. frame:Point( "TOPLEFT", icon, "TOPLEFT", 0, 0 )
  134. frame:Point( "BOTTOMRIGHT", icon, "BOTTOMRIGHT", 0, 0 )
  135. end
  136. end
  137. for i=1, 2 do
  138. local tab = _G["PlayerSpecTab"..i]
  139. if tab then
  140. local a = tab:GetRegions()
  141. a:Hide()
  142. tab:StripTextures()
  143. tab:GetNormalTexture():SetTexCoord(.08, .92, .08, .92)
  144. tab:GetNormalTexture():ClearAllPoints()
  145. tab:GetNormalTexture():Point("TOPLEFT", 2, -2)
  146. tab:GetNormalTexture():Point("BOTTOMRIGHT", -2, 2)
  147. tab:CreateBackdrop("Transparent")
  148. tab.backdrop:SetAllPoints()
  149. tab:StyleButton(true)
  150. end
  151. end
  152. --Reposition tabs
  153. PlayerSpecTab1:ClearAllPoints()
  154. PlayerSpecTab1:SetPoint("TOPLEFT", PlayerTalentFrame, "TOPRIGHT", 2, -32)
  155. PlayerSpecTab1.SetPoint = T.dummy
  156. local function TalentSummaryClean(i)
  157. local frame = _G["PlayerTalentFramePanel"..i.."Summary"]
  158. frame:SetFrameLevel(frame:GetFrameLevel() + 2)
  159. frame:CreateBackdrop("Transparent")
  160. frame:SetFrameLevel(frame:GetFrameLevel() +1)
  161. local a,b,_,d,_,_,_,_,_,_,_,_,m,_ = frame:GetRegions()
  162. a:Hide()
  163. b:Hide()
  164. d:Hide()
  165. m:Hide()
  166. _G["PlayerTalentFramePanel"..i.."SummaryIcon"]:SetTexCoord(.08, .92, .08, .92)
  167. end
  168. local function TalentHeaderIcon(self, first, i)
  169. local button = _G["PlayerTalentFramePanel"..i.."HeaderIcon"]
  170. local icon = _G["PlayerTalentFramePanel"..i.."HeaderIconIcon"]
  171. local panel = _G["PlayerTalentFramePanel"..i]
  172. local text = _G["PlayerTalentFramePanel"..i.."HeaderIconPointsSpent"]
  173. if first then
  174. button:StripTextures()
  175. end
  176. _G["PlayerTalentFramePanel"..i.."HeaderIconPointsSpent"]:SetFont(C.media.font, 12, "THINOUTLINE")
  177. if icon then
  178. icon:SetTexCoord(.08, .92, .08, .92)
  179. button:SetFrameLevel(button:GetFrameLevel() +1)
  180. button:ClearAllPoints()
  181. button:Point("TOPLEFT",panel,"TOPLEFT", 4, -4)
  182. text:SetFont(C.media.font, 12, "THINOUTLINE")
  183. text:Point("BOTTOMRIGHT",button, "BOTTOMRIGHT", -1, 2)
  184. local frame = CreateFrame("Frame",nil, button)
  185. frame:CreateBackdrop("Transparent", true)
  186. frame:SetFrameLevel(button:GetFrameLevel() +1)
  187. frame:ClearAllPoints()
  188. frame:Point( "TOPLEFT", icon, "TOPLEFT", 0, 0 )
  189. frame:Point( "BOTTOMRIGHT", icon, "BOTTOMRIGHT", 0, 0 )
  190. end
  191. end
  192. for i=1, 3 do
  193. TalentSummaryClean(i)
  194. TalentHeaderIcon(nil, true, i)
  195. for j=1, NUM_TALENT_COLUMNS do
  196. TalentSummaryButtons(nil, true, true, i, j)
  197. TalentSummaryButtons(nil, true, false, i, j)
  198. end
  199. end
  200. for tab,talent in talentpairs() do
  201. TalentButtons(nil, true, tab, talent)
  202. end
  203. for i=1, 3 do
  204. T.SkinTab(_G["PlayerTalentFrameTab"..i])
  205. end
  206. --PET TALENTS
  207. T.SkinRotateButton(PlayerTalentFramePetModelRotateLeftButton)
  208. T.SkinRotateButton(PlayerTalentFramePetModelRotateRightButton)
  209. PlayerTalentFramePetModelRotateLeftButton:Point("BOTTOM", PlayerTalentFramePetModel, "BOTTOM", -4, 4)
  210. PlayerTalentFramePetModelRotateRightButton:Point("TOPLEFT", PlayerTalentFramePetModelRotateLeftButton, "TOPRIGHT", 4, 0)
  211. PlayerTalentFramePetPanel:CreateBackdrop("Transparent")
  212. PlayerTalentFramePetPanel.backdrop:Point( "TOPLEFT", PlayerTalentFramePetPanel, "TOPLEFT", 3, -3 )
  213. PlayerTalentFramePetPanel.backdrop:Point( "BOTTOMRIGHT", PlayerTalentFramePetPanel, "BOTTOMRIGHT", -3, 3 )
  214. PlayerTalentFramePetModel:CreateBackdrop("Transparent")
  215. PlayerTalentFramePetModel.backdrop:Point( "TOPLEFT", PlayerTalentFramePetModel, "TOPLEFT")
  216. PlayerTalentFramePetModel.backdrop:Point( "BOTTOMRIGHT", PlayerTalentFramePetModel, "BOTTOMRIGHT")
  217. T.SkinButton(PlayerTalentFrameLearnButton, true)
  218. T.SkinButton(PlayerTalentFrameResetButton, true)
  219. local function PetHeaderIcon(self, first)
  220. local button = _G["PlayerTalentFramePetPanelHeaderIcon"]
  221. local icon = _G["PlayerTalentFramePetPanelHeaderIconIcon"]
  222. local panel = _G["PlayerTalentFramePetPanel"]
  223. local d = select(4, button:GetRegions())
  224. if first then
  225. button:StripTextures()
  226. end
  227. if icon then
  228. d:ClearAllPoints()
  229. pointsSpent = select(5,GetTalentTabInfo( 1, Partycheck, true, 1 ))
  230. icon:SetTexCoord(.08, .92, .08, .92)
  231. button:SetFrameLevel(button:GetFrameLevel() +1)
  232. button:ClearAllPoints()
  233. button:Point("TOPLEFT",panel,"TOPLEFT", 5, -5)
  234. local text = button:FontString(nil, C.media.font, 12, "THINOUTLINE")
  235. text:Point("BOTTOMRIGHT",button, "BOTTOMRIGHT", -1, 2)
  236. text:SetText(pointsSpent)
  237. local frame = CreateFrame("Frame",nil, button)
  238. frame:CreateBackdrop("Transparent", true)
  239. frame:SetFrameLevel(button:GetFrameLevel() +1)
  240. frame:ClearAllPoints()
  241. frame:Point( "TOPLEFT", icon, "TOPLEFT", 0, 0 )
  242. frame:Point( "BOTTOMRIGHT", icon, "BOTTOMRIGHT", 0, 0 )
  243. end
  244. end
  245. local function PetInfoIcon(self, first)
  246. local button = _G["PlayerTalentFramePetInfo"]
  247. local icon = _G["PlayerTalentFramePetIcon"]
  248. local panel = _G["PlayerTalentFramePetModel"]
  249. PlayerTalentFramePetDiet:Hide();
  250. local petFoodList = { GetPetFoodTypes() };
  251. if #petFoodList > 0 then
  252. diet = petFoodList[1]
  253. else
  254. diet = "None"
  255. end
  256. if first then
  257. button:StripTextures()
  258. end
  259. if icon then
  260. icon:SetTexCoord(.08, .92, .08, .92)
  261. button:SetFrameLevel(button:GetFrameLevel() +1)
  262. button:ClearAllPoints()
  263. button:Point("BOTTOMLEFT",panel,"TOPLEFT", 0, 10)
  264. local text = button:FontString(nil, C.media.font, 12, "THINOUTLINE")
  265. text:Point("TOPRIGHT",button, "TOPRIGHT", 0, -10)
  266. text:SetText(diet)
  267. local frame = CreateFrame("Frame",nil, button)
  268. frame:CreateBackdrop("Transparent", true)
  269. frame:SetFrameLevel(button:GetFrameLevel() +1)
  270. frame:ClearAllPoints()
  271. frame:Point( "TOPLEFT", icon, "TOPLEFT", 0, 0 )
  272. frame:Point( "BOTTOMRIGHT", icon, "BOTTOMRIGHT", 0, 0 )
  273. end
  274. end
  275. local function PetTalentButtons(self, first, i)
  276. local button = _G["PlayerTalentFramePetPanelTalent"..i]
  277. local icon = _G["PlayerTalentFramePetPanelTalent"..i.."IconTexture"]
  278. if first then
  279. button:StripTextures()
  280. end
  281. if button.Rank then
  282. button.Rank:SetFont(C.media.font, 12, "THINOUTLINE")
  283. button.Rank:ClearAllPoints()
  284. button.Rank:SetPoint("BOTTOMRIGHT")
  285. end
  286. if icon then
  287. button:StyleButton()
  288. button.SetHighlightTexture = T.dummy
  289. button.SetPushedTexture = T.dummy
  290. button:GetNormalTexture():SetTexCoord(.08, .92, .08, .92)
  291. button:GetPushedTexture():SetTexCoord(.08, .92, .08, .92)
  292. button:GetHighlightTexture():SetAllPoints(icon)
  293. button:GetPushedTexture():SetAllPoints(icon)
  294. icon:SetTexCoord(.08, .92, .08, .92)
  295. icon:ClearAllPoints()
  296. icon:SetAllPoints()
  297. button:SetFrameLevel(button:GetFrameLevel() +1)
  298. button:CreateBackdrop("Transparent", true)
  299. end
  300. end
  301. PetInfoIcon(nil, true)
  302. PetHeaderIcon(nil, true)
  303. for i=1,GetNumTalents(1,false,true) do
  304. PetTalentButtons(nil,true,i)
  305. end
  306. end
  307. T.SkinFuncs["Blizzard_TalentUI"] = LoadSkin