local E, L, V, P, G = unpack(select(2, ...)) --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB local S = E:GetModule("Skins") --Lua functions local _G = _G local getmetatable = getmetatable local ipairs = ipairs local select = select local unpack = unpack local find = string.find --WoW API / Variables local GetCurrencyListInfo = GetCurrencyListInfo local GetInventoryItemQuality = GetInventoryItemQuality local GetInventoryItemTexture = GetInventoryItemTexture local GetItemInfo = GetItemInfo local GetItemQualityColor = GetItemQualityColor local GetNumFactions = GetNumFactions local GetPetHappiness = GetPetHappiness local HasPetUI = HasPetUI local UnitFactionGroup = UnitFactionGroup local hooksecurefunc = hooksecurefunc local NUM_COMPANIONS_PER_PAGE = NUM_COMPANIONS_PER_PAGE local NUM_FACTIONS_DISPLAYED = NUM_FACTIONS_DISPLAYED local NUM_GEARSET_ICONS_PER_ROW = NUM_GEARSET_ICONS_PER_ROW S:AddCallback("Skin_Character", function() if not E.private.skins.blizzard.enable or not E.private.skins.blizzard.character then return end -- CharacterFrame CharacterFrame:StripTextures(true) CharacterFrame:CreateBackdrop("Transparent") CharacterFrame.backdrop:Point("TOPLEFT", 11, -12) CharacterFrame.backdrop:Point("BOTTOMRIGHT", -32, 76) S:SetUIPanelWindowInfo(CharacterFrame, "width") S:SetBackdropHitRect(PaperDollFrame, CharacterFrame.backdrop) S:SetBackdropHitRect(PetPaperDollFrame, CharacterFrame.backdrop) S:SetBackdropHitRect(PetPaperDollFrameCompanionFrame, CharacterFrame.backdrop) S:SetBackdropHitRect(PetPaperDollFramePetFrame, CharacterFrame.backdrop) S:SetBackdropHitRect(ReputationFrame, CharacterFrame.backdrop) S:SetBackdropHitRect(SkillFrame, CharacterFrame.backdrop) S:SetBackdropHitRect(TokenFrame, CharacterFrame.backdrop) S:HandleCloseButton(CharacterFrameCloseButton, CharacterFrame.backdrop) PaperDollFrame:StripTextures(true) for i = 1, #CHARACTERFRAME_SUBFRAMES do S:HandleTab(_G["CharacterFrameTab"..i]) end hooksecurefunc("PetPaperDollFrame_UpdateIsAvailable", function() if not PetPaperDollFrame.hidden then CharacterFrameTab3:Point("LEFT", "CharacterFrameTab2", "RIGHT", -15, 0) end end) -- PaperDollFrame PlayerTitleFrame:StripTextures() PlayerTitleFrame:CreateBackdrop("Default") PlayerTitleFrame.backdrop:Point("TOPLEFT", 20, 3) PlayerTitleFrame.backdrop:Point("BOTTOMRIGHT", -16, 15) PlayerTitleFrame.backdrop:SetFrameLevel(PlayerTitleFrame:GetFrameLevel()) S:HandleNextPrevButton(PlayerTitleFrameButton) PlayerTitleFrameButton:Size(16) PlayerTitleFrameButton:Point("TOPRIGHT", PlayerTitleFrameRight, "TOPRIGHT", -18, -16) PlayerTitlePickerFrame:StripTextures() PlayerTitlePickerFrame:CreateBackdrop("Transparent") PlayerTitlePickerFrame.backdrop:Point("TOPLEFT", 6, -10) PlayerTitlePickerFrame.backdrop:Point("BOTTOMRIGHT", -13, 6) PlayerTitlePickerFrame.backdrop:SetFrameLevel(PlayerTitlePickerFrame:GetFrameLevel()) S:HandleScrollBar(PlayerTitlePickerScrollFrameScrollBar) PlayerTitlePickerScrollFrameScrollBar:Point("TOPLEFT", PlayerTitlePickerScrollFrame, "TOPRIGHT", 1, -14) PlayerTitlePickerScrollFrameScrollBar:Point("BOTTOMLEFT", PlayerTitlePickerScrollFrame, "BOTTOMRIGHT", 1, 15) for _, button in ipairs(PlayerTitlePickerScrollFrame.buttons) do button.text:FontTemplate() S:HandleButtonHighlight(button) end S:HandleRotateButton(CharacterModelFrameRotateLeftButton) S:HandleRotateButton(CharacterModelFrameRotateRightButton) PlayerStatFrameLeftDropDown:Point("BOTTOMLEFT", PlayerStatLeftTop, "TOPLEFT", -19, -8) S:HandleDropDownBox(PlayerStatFrameLeftDropDown, 140, "down") S:HandleDropDownBox(PlayerStatFrameRightDropDown, 140, "down") CharacterAttributesFrame:StripTextures() PaperDollFrameItemFlyoutButtons:EnableMouse(false) PaperDollFrameItemFlyoutHighlight:Kill() GearManagerToggleButton:Size(25, 29) GearManagerToggleButton:Point("TOPRIGHT", -46, -40) GearManagerToggleButton:CreateBackdrop("Default") -- texWidth, texHeight, cropWidth, cropHeight, offsetX, offsetY = 64, 64, 40, 46, 13, 10 GearManagerToggleButton:GetNormalTexture():SetTexCoord(0.203125, 0.828125, 0.15625, 0.875) -- texWidth, texHeight, cropWidth, cropHeight, offsetX, offsetY = 64, 64, 40, 46, 12, 12 GearManagerToggleButton:GetPushedTexture():SetTexCoord(0.1875, 0.8125, 0.1875, 0.90625) GearManagerToggleButton:GetHighlightTexture():SetTexture(1, 1, 1, 0.3) GearManagerToggleButton:GetHighlightTexture():SetAllPoints() PlayerTitleFrame:Point("TOP", CharacterLevelText, "BOTTOM", -7, -7) PlayerTitlePickerFrame:Point("TOPLEFT", PlayerTitleFrame, "BOTTOMLEFT", 14, 26) CharacterModelFrame:Size(237, 217) CharacterModelFrame:Point("TOPLEFT", 63, -76) CharacterModelFrameRotateLeftButton:Point("TOPLEFT", 4, -4) CharacterModelFrameRotateRightButton:Point("TOPLEFT", CharacterModelFrameRotateLeftButton, "TOPRIGHT", 3, 0) CharacterResistanceFrame:Point("TOPRIGHT", PaperDollFrame, "TOPLEFT", 300, -81) CharacterHeadSlot:Point("TOPLEFT", 19, -76) CharacterHandsSlot:Point("TOPLEFT", 307, -76) CharacterMainHandSlot:Point("TOPLEFT", PaperDollFrame, "BOTTOMLEFT", 110, 131) CharacterAttributesFrame:Point("TOPLEFT", 66, -292) local popoutButtonOnEnter = function(self) self.icon:SetVertexColor(unpack(E.media.rgbvaluecolor)) end local popoutButtonOnLeave = function(self) self.icon:SetVertexColor(1, 1, 1) end local slots = { [1] = CharacterHeadSlot, [2] = CharacterNeckSlot, [3] = CharacterShoulderSlot, [4] = CharacterShirtSlot, [5] = CharacterChestSlot, [6] = CharacterWaistSlot, [7] = CharacterLegsSlot, [8] = CharacterFeetSlot, [9] = CharacterWristSlot, [10] = CharacterHandsSlot, [11] = CharacterFinger0Slot, [12] = CharacterFinger1Slot, [13] = CharacterTrinket0Slot, [14] = CharacterTrinket1Slot, [15] = CharacterBackSlot, [16] = CharacterMainHandSlot, [17] = CharacterSecondaryHandSlot, [18] = CharacterRangedSlot, [19] = CharacterTabardSlot, [20] = CharacterAmmoSlot, -- 0 } for i, slotFrame in ipairs(slots) do local slotFrameName = slotFrame:GetName() local icon = _G[slotFrameName.."IconTexture"] slotFrame:StripTextures() slotFrame:StyleButton(false) slotFrame:SetTemplate("Default", true, true) icon:SetInside() icon:SetTexCoord(unpack(E.TexCoords)) slotFrame:SetFrameLevel(PaperDollFrame:GetFrameLevel() + 2) if i ~= 20 then local cooldown = _G[slotFrameName.."Cooldown"] local popout = _G[slotFrameName.."PopoutButton"] E:RegisterCooldown(cooldown) popout:StripTextures() popout:HookScript("OnEnter", popoutButtonOnEnter) popout:HookScript("OnLeave", popoutButtonOnLeave) popout.icon = popout:CreateTexture(nil, "ARTWORK") popout.icon:Size(24) popout.icon:Point("CENTER") popout.icon:SetTexture(E.Media.Textures.ArrowUp) if slotFrame.verticalFlyout then popout.icon:SetRotation(S.ArrowRotation.down) else popout.icon:SetRotation(S.ArrowRotation.right) end end end local function updateSlotFrame(self, event, slotID, exist) if event then self = slots[slotID] end if exist then local quality = GetInventoryItemQuality("player", slotID) if quality then self:SetBackdropBorderColor(GetItemQualityColor(quality)) else self:SetBackdropBorderColor(unpack(E.media.bordercolor)) end else self:SetBackdropBorderColor(unpack(E.media.bordercolor)) end end local function colorItemBorder() for _, slotFrame in ipairs(slots) do local slotID = slotFrame:GetID() updateSlotFrame(slotFrame, nil, slotID, GetInventoryItemTexture("player", slotID) ~= nil) end end hooksecurefunc(CharacterAmmoSlotIconTexture, "SetTexture", function(self, texture) updateSlotFrame(self:GetParent(), nil, 0, texture ~= "Interface\\PaperDoll\\UI-PaperDoll-Slot-Ranged") end) local f = CreateFrame("Frame") f:RegisterEvent("PLAYER_EQUIPMENT_CHANGED") f:SetScript("OnEvent", updateSlotFrame) CharacterFrame:HookScript("OnShow", colorItemBorder) colorItemBorder() local nStripped = 0 hooksecurefunc("PaperDollFrameItemFlyout_Show", function() if nStripped < PaperDollFrameItemFlyoutButtons.numBGs then nStripped = PaperDollFrameItemFlyoutButtons.numBGs PaperDollFrameItemFlyoutButtons:StripTextures() end end) hooksecurefunc("PaperDollFrameItemPopoutButton_SetReversed", function(self, isReversed) if self:GetParent().verticalFlyout then if isReversed then self.icon:SetRotation(S.ArrowRotation.up) else self.icon:SetRotation(S.ArrowRotation.down) end else if isReversed then self.icon:SetRotation(S.ArrowRotation.left) else self.icon:SetRotation(S.ArrowRotation.right) end end end) hooksecurefunc("PaperDollFrameItemFlyout_DisplayButton", function(button) if not button.isSkinned then button.icon = _G[button:GetName().."IconTexture"] button:GetNormalTexture():SetTexture(nil) button:SetTemplate("Default") button:StyleButton() button.icon:SetInside() button.icon:SetTexCoord(unpack(E.TexCoords)) E:RegisterCooldown(button.cooldown) end if not button.location or button.location >= PDFITEMFLYOUT_FIRST_SPECIAL_LOCATION then return end local id = EquipmentManager_GetItemInfoByLocation(button.location) local _, _, quality = GetItemInfo(id) button:SetBackdropBorderColor(GetItemQualityColor(quality)) end) local function handleResistanceFrame(frameName) for i = 1, 5 do local frame = _G[frameName..i] frame:Size(24) frame:SetTemplate("Default") if i ~= 1 then frame:ClearAllPoints() frame:Point("TOP", _G[frameName..i-1], "BOTTOM", 0, -(E.Border + E.Spacing)) end local texture, text = frame:GetRegions() texture:SetInside() texture:SetDrawLayer("ARTWORK") text:SetDrawLayer("OVERLAY") text:Point("CENTER", -1, 0) if i == 1 then -- Arcane -- texWidth, texHeight, cropWidth, cropHeight, offsetX, offsetY = 32, 256, 18, 18, 8, 64 texture:SetTexCoord(0.25, 0.8125, 0.25, 0.3203125) elseif i == 2 then -- Fire -- texWidth, texHeight, cropWidth, cropHeight, offsetX, offsetY = 32, 256, 18, 18, 8, 6 texture:SetTexCoord(0.25, 0.8125, 0.0234375, 0.09375) elseif i == 3 then -- Nature -- texWidth, texHeight, cropWidth, cropHeight, offsetX, offsetY = 32, 256, 18, 18, 8, 35 texture:SetTexCoord(0.25, 0.8125, 0.13671875, 0.20703125) elseif i == 4 then -- Frost -- texWidth, texHeight, cropWidth, cropHeight, offsetX, offsetY = 32, 256, 18, 18, 8, 94 texture:SetTexCoord(0.25, 0.8125, 0.3671875, 0.4375) elseif i == 5 then -- Shadow -- texWidth, texHeight, cropWidth, cropHeight, offsetX, offsetY = 32, 256, 18, 18, 8, 122 texture:SetTexCoord(0.25, 0.8125, 0.4765625, 0.546875) end end end handleResistanceFrame("MagicResFrame") -- GearManager Dialog GearManagerDialog:StripTextures() GearManagerDialog:CreateBackdrop("Transparent") GearManagerDialog.backdrop:Point("TOPLEFT", 5, -2) GearManagerDialog.backdrop:Point("BOTTOMRIGHT", -3, 4) S:SetBackdropHitRect(GearManagerDialog) S:HandleCloseButton(GearManagerDialogClose, GearManagerDialog.backdrop) for i, button in ipairs(GearManagerDialog.buttons) do button:StripTextures() button:CreateBackdrop("Default") button.backdrop:SetAllPoints() button:StyleButton(nil, true) button.icon:SetInside() button.icon:SetTexCoord(unpack(E.TexCoords)) end S:HandleButton(GearManagerDialogDeleteSet) S:HandleButton(GearManagerDialogEquipSet) S:HandleButton(GearManagerDialogSaveSet) GearSetButton1:Point("TOPLEFT", 15, -29) GearSetButton6:Point("TOP", GearSetButton1, "BOTTOM", 0, -13) GearManagerDialogDeleteSet:Point("BOTTOMLEFT", 11, 12) GearManagerDialogEquipSet:Point("BOTTOMLEFT", 92, 12) GearManagerDialogSaveSet:Point("BOTTOMRIGHT", -10, 12) -- GearManager DialogPopup GearManagerDialogPopup:EnableMouse(true) GearManagerDialogPopup:StripTextures() GearManagerDialogPopup:CreateBackdrop("Transparent") GearManagerDialogPopup.backdrop:Point("TOPLEFT", 5, -10) GearManagerDialogPopup.backdrop:Point("BOTTOMRIGHT", -39, 8) S:SetBackdropHitRect(GearManagerDialogPopup) GearManagerDialogPopupScrollFrame:StripTextures() S:HandleScrollBar(GearManagerDialogPopupScrollFrameScrollBar) S:HandleEditBox(GearManagerDialogPopupEditBox) for i, button in ipairs(GearManagerDialogPopup.buttons) do button:StripTextures() button:SetFrameLevel(button:GetFrameLevel() + 2) button:CreateBackdrop("Default") button.backdrop:SetAllPoints() button:StyleButton(true, true) button.icon:SetInside() button.icon:SetTexCoord(unpack(E.TexCoords)) if i > 1 then local lastPos = (i - 1) / NUM_GEARSET_ICONS_PER_ROW if lastPos == math.floor(lastPos) then button:SetPoint("TOPLEFT", GearManagerDialogPopup.buttons[i-NUM_GEARSET_ICONS_PER_ROW], "BOTTOMLEFT", 0, -7) else button:SetPoint("TOPLEFT", GearManagerDialogPopup.buttons[i-1], "TOPRIGHT", 7, 0) end end end S:HandleButton(GearManagerDialogPopupOkay) S:HandleButton(GearManagerDialogPopupCancel) local text1, text2 = select(5, GearManagerDialogPopup:GetRegions()) text1:Point("TOPLEFT", 24, -19) text2:Point("TOPLEFT", 24, -63) if GetLocale() == "ruRU" then text1:SetText(string.utf8sub(GEARSETS_POPUP_TEXT, 0, -7) .. "):") end GearManagerDialogPopupEditBox:Point("TOPLEFT", 24, -36) GearManagerDialogPopupButton1:Point("TOPLEFT", 17, -83) GearManagerDialogPopupScrollFrame:SetTemplate("Transparent") GearManagerDialogPopupScrollFrame:Size(216, 130) GearManagerDialogPopupScrollFrame:Point("TOPRIGHT", -68, -79) GearManagerDialogPopupScrollFrameScrollBar:Point("TOPLEFT", GearManagerDialogPopupScrollFrame, "TOPRIGHT", 3, -19) GearManagerDialogPopupScrollFrameScrollBar:Point("BOTTOMLEFT", GearManagerDialogPopupScrollFrame, "BOTTOMRIGHT", 3, 19) GearManagerDialogPopupOkay:Point("BOTTOMRIGHT", GearManagerDialogPopupCancel, "BOTTOMLEFT", -3, 0) GearManagerDialogPopupCancel:Point("BOTTOMRIGHT", -47, 16) -- PetPaperDollFrame PetPaperDollFrame:StripTextures(true) for i = 1, 3 do local tab = _G["PetPaperDollFrameTab"..i] tab:StripTextures() tab:CreateBackdrop("Default", true) tab.backdrop:Point("TOPLEFT", 2, -7) tab.backdrop:Point("BOTTOMRIGHT", -1, -1) S:SetBackdropHitRect(tab) tab:HookScript("OnEnter", S.SetModifiedBackdrop) tab:HookScript("OnLeave", S.SetOriginalBackdrop) end -- PetPaperDollFrame PetFrame S:HandleRotateButton(PetModelFrameRotateLeftButton) S:HandleRotateButton(PetModelFrameRotateRightButton) handleResistanceFrame("PetMagicResFrame") PetAttributesFrame:StripTextures() PetPaperDollFrameExpBar:StripTextures() PetPaperDollFrameExpBar:CreateBackdrop("Default") PetPaperDollFrameExpBar:SetStatusBarTexture(E.media.normTex) E:RegisterStatusBar(PetPaperDollFrameExpBar) S:HandleButton(PetPaperDollCloseButton) local function updateHappiness(self) local _, isHunterPet = HasPetUI() local happiness = GetPetHappiness() if not isHunterPet or not happiness then return end if happiness == 1 then -- texWidth, texHeight, cropWidth, cropHeight, offsetX, offsetY = 128, 64, 16, 16, 52, 4 self:GetRegions():SetTexCoord(0.40625, 0.53125, 0.0625, 0.3125) elseif happiness == 2 then -- texWidth, texHeight, cropWidth, cropHeight, offsetX, offsetY = 128, 64, 16, 16, 28, 4 self:GetRegions():SetTexCoord(0.21875, 0.34375, 0.0625, 0.3125) elseif happiness == 3 then -- texWidth, texHeight, cropWidth, cropHeight, offsetX, offsetY = 128, 64, 16, 16, 52, 4 self:GetRegions():SetTexCoord(0.03125, 0.15625, 0.0625, 0.3125) end end PetModelFrame:Width(325) PetModelFrame:Point("TOPLEFT", 19, -71) PetModelFrameRotateLeftButton:Point("TOPLEFT", PetPaperDollFrame, "TOPLEFT", 23, -75) PetModelFrameRotateRightButton:Point("TOPLEFT", PetModelFrameRotateLeftButton, "TOPRIGHT", 3, 0) PetResistanceFrame:Point("TOPRIGHT", PetPaperDollFrame, "TOPLEFT", 344, -75) PetPaperDollPetInfo:SetFrameLevel(PetModelFrame:GetFrameLevel() + 2) PetPaperDollPetInfo:CreateBackdrop("Default") PetPaperDollPetInfo:Size(25) PetPaperDollPetInfo:Point("TOPLEFT", PetModelFrameRotateLeftButton, "BOTTOMLEFT", 10, -4) -- texWidth, texHeight, cropWidth, cropHeight, offsetX, offsetY = 128, 64, 16, 16, 52, 4 PetPaperDollPetInfo:GetRegions():SetTexCoord(0.03125, 0.15625, 0.0625, 0.3125) PetPaperDollPetInfo:RegisterEvent("UNIT_HAPPINESS") PetPaperDollPetInfo:SetScript("OnEvent", updateHappiness) PetPaperDollPetInfo:SetScript("OnShow", updateHappiness) updateHappiness(PetPaperDollPetInfo) PetLevelText:Point("CENTER", 0, -50) PetAttributesFrame:Point("TOPLEFT", 67, -310) PetPaperDollFrameExpBar:Width(323) PetPaperDollFrameExpBar:Point("BOTTOMLEFT", 20, 112) PetPaperDollCloseButton:Point("CENTER", PetPaperDollFramePetFrame, "TOPLEFT", 304, -417) -- PetPaperDollFrame CompanionFrame PetPaperDollFrameCompanionFrame:StripTextures() S:HandleRotateButton(CompanionModelFrameRotateLeftButton) S:HandleRotateButton(CompanionModelFrameRotateRightButton) S:HandleButton(CompanionSummonButton) S:HandleNextPrevButton(CompanionPrevPageButton) S:HandleNextPrevButton(CompanionNextPageButton) hooksecurefunc("PetPaperDollFrame_UpdateCompanions", function() for i = 1, NUM_COMPANIONS_PER_PAGE do local button = _G["CompanionButton"..i] if button.creatureID then local iconNormal = button:GetNormalTexture() iconNormal:SetTexCoord(unpack(E.TexCoords)) iconNormal:SetInside() end end end) for i = 1, NUM_COMPANIONS_PER_PAGE do local button = _G["CompanionButton"..i] local iconDisabled = button:GetDisabledTexture() local activeTexture = _G["CompanionButton"..i.."ActiveTexture"] button:StyleButton(nil, true) button:SetTemplate("Default", true) iconDisabled:SetAlpha(0) activeTexture:SetInside(button) activeTexture:SetTexture(1, 1, 1, .15) if i == 7 then button:Point("TOP", CompanionButton1, "BOTTOM", 0, -5) elseif i ~= 1 then button:Point("LEFT", _G["CompanionButton"..i-1], "RIGHT", 5, 0) end end CompanionModelFrame:Size(325, 174) CompanionModelFrame:Point("TOPLEFT", 19, -71) CompanionModelFrameRotateLeftButton:Point("TOPLEFT", PetPaperDollFrame, "TOPLEFT", 23, -75) CompanionModelFrameRotateRightButton:Point("TOPLEFT", CompanionModelFrameRotateLeftButton, "TOPRIGHT", 3, 0) CompanionButton1:Point("TOPLEFT", 58, -308) CompanionSummonButton:Width(149) CompanionSummonButton:Point("CENTER", -11, -24) CompanionPrevPageButton:Point("BOTTOMLEFT", 122, 92) CompanionNextPageButton:Point("LEFT", CompanionPrevPageButton, "RIGHT", 83, 0) CompanionPageNumber:Point("CENTER", -10, -155) -- Reputation Frame ReputationFrame:StripTextures(true) for i = 1, NUM_FACTIONS_DISPLAYED do local factionRow = _G["ReputationBar"..i] local factionBar = _G["ReputationBar"..i.."ReputationBar"] local factionButton = _G["ReputationBar"..i.."ExpandOrCollapseButton"] factionRow:StripTextures(true) factionBar:StripTextures() factionBar:SetStatusBarTexture(E.media.normTex) E:RegisterStatusBar(factionBar) factionBar:CreateBackdrop("Default") factionButton:SetNormalTexture(E.Media.Textures.Minus) factionButton.SetNormalTexture = E.noop factionButton:GetNormalTexture():Size(15) factionButton:SetHighlightTexture(nil) end hooksecurefunc("ReputationFrame_Update", function() local factionOffset = FauxScrollFrame_GetOffset(ReputationListScrollFrame) local numFactions = GetNumFactions() local factionIndex, factionButton for i = 1, NUM_FACTIONS_DISPLAYED do factionIndex = factionOffset + i if factionIndex <= numFactions then factionButton = _G["ReputationBar"..i.."ExpandOrCollapseButton"] if _G["ReputationBar"..i].isCollapsed then factionButton:GetNormalTexture():SetTexture(E.Media.Textures.Plus) else factionButton:GetNormalTexture():SetTexture(E.Media.Textures.Minus) end end end end) ReputationListScrollFrame:StripTextures() S:HandleScrollBar(ReputationListScrollFrameScrollBar) ReputationFrameFactionLabel:Point("TOPLEFT", 70, -60) ReputationFrameStandingLabel:Point("TOPLEFT", 235, -60) ReputationBar1:Point("TOPRIGHT", -51, -81) ReputationListScrollFrame:Width(304) ReputationListScrollFrame:Point("TOPRIGHT", -61, -74) ReputationListScrollFrameScrollBar:Point("TOPLEFT", ReputationListScrollFrame, "TOPRIGHT", 3, -19) ReputationListScrollFrameScrollBar:Point("BOTTOMLEFT", ReputationListScrollFrame, "BOTTOMRIGHT", 3, 19) ReputationListScrollFrame:SetScript("OnShow", function() ReputationBar1:Point("TOPRIGHT", -75, -81) end) ReputationListScrollFrame:SetScript("OnHide", function() ReputationBar1:Point("TOPRIGHT", -51, -81) end) -- Reputation DetailFrame ReputationDetailFrame:StripTextures() ReputationDetailFrame:SetTemplate("Transparent") ReputationDetailFrame:Point("TOPLEFT", ReputationFrame, "TOPRIGHT", -33, -12) S:HandleCloseButton(ReputationDetailCloseButton, ReputationDetailFrame) S:HandleCheckBox(ReputationDetailAtWarCheckBox) ReputationDetailAtWarCheckBox:SetCheckedTexture("Interface\\Buttons\\UI-CheckBox-SwordCheck") S:HandleCheckBox(ReputationDetailInactiveCheckBox) S:HandleCheckBox(ReputationDetailMainScreenCheckBox) -- Skill Frame SkillFrame:StripTextures(true) SkillFrameExpandButtonFrame:StripTextures() SkillFrameCollapseAllButton:SetNormalTexture(E.Media.Textures.Plus) SkillFrameCollapseAllButton.SetNormalTexture = E.noop SkillFrameCollapseAllButton:GetNormalTexture():Size(16) SkillFrameCollapseAllButton:SetHighlightTexture(nil) hooksecurefunc(SkillFrameCollapseAllButton, "SetNormalTexture", function(self, texture) if find(texture, "MinusButton") then SkillFrameCollapseAllButton:GetNormalTexture():SetTexture(E.Media.Textures.Minus) else SkillFrameCollapseAllButton:GetNormalTexture():SetTexture(E.Media.Textures.Plus) end end) for i = 1, SKILLS_TO_DISPLAY do local statusBar = _G["SkillRankFrame"..i] local statusBarBorder = _G["SkillRankFrame"..i.."Border"] local statusBarBackground = _G["SkillRankFrame"..i.."Background"] local skillTypeLabelText = _G["SkillTypeLabel"..i] statusBar:Width(276) statusBar:CreateBackdrop("Default") statusBar:SetStatusBarTexture(E.media.normTex) E:RegisterStatusBar(statusBar) statusBarBorder:StripTextures() statusBarBackground:SetTexture(nil) skillTypeLabelText:SetNormalTexture(E.Media.Textures.Plus) skillTypeLabelText.SetNormalTexture = E.noop skillTypeLabelText:GetNormalTexture():Size(16) skillTypeLabelText:SetHighlightTexture(nil) hooksecurefunc(skillTypeLabelText, "SetNormalTexture", function(self, texture) if find(texture, "MinusButton") then self:GetNormalTexture():SetTexture(E.Media.Textures.Minus) else self:GetNormalTexture():SetTexture(E.Media.Textures.Plus) end end) end SkillDetailStatusBar:StripTextures() SkillDetailStatusBar:SetParent(SkillDetailScrollFrame) SkillDetailStatusBar:CreateBackdrop("Default") SkillDetailStatusBar:SetStatusBarTexture(E.media.normTex) E:RegisterStatusBar(SkillDetailStatusBar) S:HandleCloseButton(SkillDetailStatusBarUnlearnButton) SkillDetailStatusBarUnlearnButton:SetPoint("LEFT", SkillDetailStatusBarBorder, "RIGHT") SkillDetailStatusBarUnlearnButton.Texture:Size(16) SkillDetailStatusBarUnlearnButton.Texture:SetVertexColor(1, 0, 0) SkillDetailStatusBarUnlearnButton:HookScript("OnEnter", function(btn) btn.Texture:SetVertexColor(1, 1, 1) end) SkillDetailStatusBarUnlearnButton:HookScript("OnLeave", function(btn) btn.Texture:SetVertexColor(1, 0, 0) end) SkillListScrollFrame:StripTextures() S:HandleScrollBar(SkillListScrollFrameScrollBar) SkillDetailScrollFrame:StripTextures() S:HandleScrollBar(SkillDetailScrollFrameScrollBar) S:HandleButton(SkillFrameCancelButton) SkillFrameExpandButtonFrame:Point("TOPLEFT", 30, -50) SkillTypeLabel1:Point("LEFT", SkillFrame, "TOPLEFT", 22, -85) SkillRankFrame1:Point("TOPLEFT", 38, -78) SkillListScrollFrame:Width(304) SkillListScrollFrame:Point("TOPRIGHT", -61, -74) SkillListScrollFrameScrollBar:Point("TOPLEFT", SkillListScrollFrame, "TOPRIGHT", 3, -19) SkillListScrollFrameScrollBar:Point("BOTTOMLEFT", SkillListScrollFrame, "BOTTOMRIGHT", 3, 19) SkillDetailScrollFrame:Size(304, 98) SkillDetailScrollFrame:Point("TOPLEFT", SkillListScrollFrame, "BOTTOMLEFT", 0, -7) SkillDetailScrollFrameScrollBar:Point("TOPLEFT", SkillDetailScrollFrame, "TOPRIGHT", 3, -19) SkillDetailScrollFrameScrollBar:Point("BOTTOMLEFT", SkillDetailScrollFrame, "BOTTOMRIGHT", 3, 19) SkillFrameCancelButton:Point("CENTER", SkillFrame, "TOPLEFT", 304, -417) -- Token Frame TokenFrame:StripTextures(true) select(4, TokenFrame:GetChildren()):Hide() S:HandleScrollBar(TokenFrameContainerScrollBar) S:HandleButton(TokenFrameCancelButton) TokenFrameContainer:Size(304, 360) TokenFrameContainer:Point("TOPLEFT", 19, -39) TokenFrameContainerScrollBar:Point("TOPLEFT", TokenFrameContainer, "TOPRIGHT", 3, -19) TokenFrameContainerScrollBar:Point("BOTTOMLEFT", TokenFrameContainer, "BOTTOMRIGHT", 3, 19) TokenFrameMoneyFrame:Point("BOTTOMRIGHT", -115, 88) TokenFrameCancelButton:Point("CENTER", TokenFrame, "TOPLEFT", 304, -417) TokenFrameContainerScrollBar.Show = function(self) TokenFrameContainer:SetWidth(304) for _, button in ipairs(TokenFrameContainer.buttons) do button:SetWidth(300) end getmetatable(self).__index.Show(self) end TokenFrameContainerScrollBar.Hide = function(self) TokenFrameContainer:SetWidth(325) for _, button in ipairs(TokenFrameContainer.buttons) do button:SetWidth(325) end getmetatable(self).__index.Hide(self) end local function skinTokenButton(button) if not button.isSkinned then button.categoryLeft:Kill() button.categoryRight:Kill() button.highlight:Kill() button.expandIcon:Size(16) button.expandIcon:SetTexCoord(0, 1, 0, 1) button.expandIcon.SetTexCoord = E.noop button.isSkinned = true end end local tokenSkinned = 0 local function updateTokenContainer() local offset = HybridScrollFrame_GetOffset(TokenFrameContainer) local buttons = TokenFrameContainer.buttons local numButtons = #buttons local index, button local _, name, isHeader, isExpanded, extraCurrencyType, icon if numButtons > tokenSkinned then for i = tokenSkinned + 1, numButtons do skinTokenButton(TokenFrameContainer.buttons[i]) end tokenSkinned = numButtons end for i = 1, numButtons do index = offset + i button = buttons[i] name, isHeader, isExpanded, _, _, _, extraCurrencyType, icon = GetCurrencyListInfo(index) if name then if isHeader then if isExpanded then button.expandIcon:SetTexture(E.Media.Textures.Minus) else button.expandIcon:SetTexture(E.Media.Textures.Plus) end else if extraCurrencyType == 1 then button.icon:SetTexCoord(unpack(E.TexCoords)) elseif extraCurrencyType == 2 then local factionGroup = UnitFactionGroup("player") if factionGroup then button.icon:SetTexture("Interface\\TargetingFrame\\UI-PVP-"..factionGroup) -- texWidth, texHeight, cropWidth, cropHeight, offsetX, offsetY = 64, 64, 36, 36, 4, 1 button.icon:SetTexCoord(0.0625, 0.625, 0.015625, 0.578125) else button.icon:SetTexCoord(unpack(E.TexCoords)) end else button.icon:SetTexture(icon) button.icon:SetTexCoord(unpack(E.TexCoords)) end end end end end hooksecurefunc("TokenFrame_Update", updateTokenContainer) hooksecurefunc(TokenFrameContainer, "update", updateTokenContainer) -- Token Frame Popup TokenFramePopup:StripTextures() TokenFramePopup:SetTemplate("Transparent") S:HandleCloseButton(TokenFramePopupCloseButton, TokenFramePopup) S:HandleCheckBox(TokenFramePopupInactiveCheckBox) S:HandleCheckBox(TokenFramePopupBackpackCheckBox) TokenFramePopup:Point("TOPLEFT", TokenFrame, "TOPRIGHT", -33, -12) end)