Files
ElvUIModernized/ElvUI/Modules/Skins/Blizzard/Misc.lua
T

417 lines
12 KiB
Lua

local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local S = E:GetModule("Skins");
--Cache global variables
--Lua functions
local _G = _G
local unpack = unpack
--WoW API / Variables
local hooksecurefunc = hooksecurefunc
local function LoadSkin()
if E.private.skins.blizzard.enable ~= true or E.private.skins.blizzard.misc ~= true then return end
-- Blizzard frame we want to reskin
local skins = {
"GameMenuFrame",
"UIOptionsFrame",
"OptionsFrame",
"OptionsFrameDisplay",
"OptionsFrameBrightness",
"OptionsFrameWorldAppearance",
"OptionsFramePixelShaders",
"OptionsFrameMiscellaneous",
"SoundOptionsFrame",
"TicketStatusFrame",
"StackSplitFrame"
}
for i = 1, getn(skins) do
if _G[skins[i]] then
E:SetTemplate(_G[skins[i]], "Transparent")
end
end
-- ChatMenus
local ChatMenus = {
"ChatMenu",
"EmoteMenu",
"LanguageMenu",
"VoiceMacroMenu",
}
for i = 1, getn(ChatMenus) do
if _G[ChatMenus[i]] == _G["ChatMenu"] then
HookScript(_G[ChatMenus[i]], "OnShow", function()
E:SetTemplate(this, "Transparent", true)
this:SetBackdropColor(unpack(E["media"].backdropfadecolor))
this:ClearAllPoints()
E:Point(this, "BOTTOMLEFT", ChatFrame1, "TOPLEFT", 0, 35)
end)
else
HookScript(_G[ChatMenus[i]], "OnShow", function()
E:SetTemplate(this, "Transparent", true)
this:SetBackdropColor(unpack(E["media"].backdropfadecolor))
end)
end
end
for i = 1, UIDROPDOWNMENU_MAXBUTTONS do
E:StyleButton(_G["ChatMenuButton"..i])
E:StyleButton(_G["EmoteMenuButton"..i])
E:StyleButton(_G["LanguageMenuButton"..i])
E:StyleButton(_G["VoiceMacroMenuButton"..i])
end
-- UIDropDownMenu
hooksecurefunc("UIDropDownMenu_Initialize", function()
for i = 1, UIDROPDOWNMENU_MAXLEVELS do
local buttonBackdrop = _G["DropDownList"..i.."Backdrop"]
local buttonBackdropMenu = _G["DropDownList"..i.."MenuBackdrop"]
E:SetTemplate(buttonBackdrop, "Transparent")
E:SetTemplate(buttonBackdropMenu, "Transparent")
for j = 1, UIDROPDOWNMENU_MAXBUTTONS do
local button = _G["DropDownList"..i.."Button"..j]
local buttonHighlight = _G["DropDownList"..i.."Button"..j.."Highlight"]
local colorSwatch = _G["DropDownList"..i.."Button"..j.."ColorSwatch"]
button:SetFrameLevel(buttonBackdrop:GetFrameLevel() + 1)
buttonHighlight:SetTexture(1, 1, 1, 0.3)
buttonHighlight:SetAllPoints(button)
colorSwatch:SetFrameLevel(button:GetFrameLevel() + 2)
S:HandleColorSwatch(colorSwatch, 14)
if i == 1 then
E:Point(buttonHighlight, "TOPLEFT", button, "TOPLEFT", -8, 0)
E:Point(buttonHighlight, "TOPRIGHT", button, "TOPRIGHT", -8, 0)
else
E:Point(buttonHighlight, "TOPLEFT", button, "TOPLEFT", -4, 0)
E:Point(buttonHighlight, "TOPRIGHT", button, "TOPRIGHT", -4, 0)
end
end
end
end)
-- L_UIDropDownMenu
hooksecurefunc("L_UIDropDownMenu_Initialize", function()
for i = 1, 2 do
local buttonBackdrop = _G["L_DropDownList"..i.."Backdrop"]
local buttonBackdropMenu = _G["L_DropDownList"..i.."MenuBackdrop"]
E:SetTemplate(buttonBackdrop, "Transparent")
E:SetTemplate(buttonBackdropMenu, "Transparent")
if i == 2 then
E:Point(buttonBackdropMenu, "TOPRIGHT", -4, 0)
end
for j = 1, UIDROPDOWNMENU_MAXBUTTONS do
local button = _G["L_DropDownList"..i.."Button"..j]
local buttonHighlight = _G["L_DropDownList"..i.."Button"..j.."Highlight"]
button:SetFrameLevel(buttonBackdrop:GetFrameLevel() + 1)
buttonHighlight:SetTexture(1, 1, 1, 0.3)
buttonHighlight:SetAllPoints(button)
if i == 2 then
E:Point(buttonHighlight, "TOPLEFT", button, "TOPLEFT", -8, 0)
E:Point(buttonHighlight, "TOPRIGHT", button, "TOPRIGHT", 0, 0)
end
end
end
end)
-- Kill the nVidia logo
local _, _, nVidiaLogo = OptionsFrame:GetRegions()
if nVidiaLogo:GetObjectType() == "Texture" then
E:Kill(nVidiaLogo)
end
-- Static Popups
for i = 1, STATICPOPUP_NUMDIALOGS do
local staticPopup = _G["StaticPopup"..i]
local itemFrameBox = _G["StaticPopup"..i.."EditBox"]
local closeButton = _G["StaticPopup"..i.."CloseButton"]
local wideBox = _G["StaticPopup"..i.."WideEditBox"]
E:SetTemplate(staticPopup, "Transparent")
itemFrameBox:DisableDrawLayer("BACKGROUND")
S:HandleEditBox(itemFrameBox)
E:Point(itemFrameBox.backdrop, "TOPLEFT", -2, -4)
E:Point(itemFrameBox.backdrop, "BOTTOMRIGHT", 2, 4)
E:StripTextures(closeButton)
S:HandleCloseButton(closeButton)
local _, _, _, _, _, _, _, region = wideBox:GetRegions()
if region then
region:Hide()
end
--select(8, wideBox:GetRegions()):Hide()
S:HandleEditBox(wideBox)
E:Height(wideBox, 22)
for j = 1, 2 do
S:HandleButton(_G["StaticPopup"..i.."Button"..j])
end
end
-- reskin all esc/menu buttons
local BlizzardMenuButtons = {
"Options",
"SoundOptions",
"UIOptions",
"Keybindings",
"Macros",
"Logout",
"Quit",
"Continue",
}
for i = 1, getn(BlizzardMenuButtons) do
local ElvuiMenuButtons = _G["GameMenuButton"..BlizzardMenuButtons[i]]
if ElvuiMenuButtons then
S:HandleButton(ElvuiMenuButtons)
end
end
-- hide header textures and move text/buttons.
local BlizzardHeader = {
"GameMenuFrame",
"SoundOptionsFrame",
"OptionsFrame",
}
for i = 1, getn(BlizzardHeader) do
local title = _G[BlizzardHeader[i].."Header"]
if title and title.SetTexture then
title:SetTexture("")
title:ClearAllPoints()
if title == _G["GameMenuFrameHeader"] then
E:Point(title, "TOP", GameMenuFrame, 0, 7)
else
E:Point(title, "TOP", BlizzardHeader[i], 0, 0)
end
end
end
-- here we reskin all "normal" buttons
local BlizzardButtons = {
"OptionsFrameOkay",
"OptionsFrameCancel",
"OptionsFrameDefaults",
"SoundOptionsFrameOkay",
"SoundOptionsFrameCancel",
"SoundOptionsFrameDefaults",
"UIOptionsFrameDefaults",
"UIOptionsFrameOkay",
"UIOptionsFrameCancel",
"StackSplitOkayButton",
"StackSplitCancelButton",
"RolePollPopupAcceptButton"
}
for i = 1, getn(BlizzardButtons) do
local ElvuiButtons = _G[BlizzardButtons[i]]
if ElvuiButtons then
S:HandleButton(ElvuiButtons)
end
end
-- if a button position is not really where we want, we move it here
OptionsFrameCancel:ClearAllPoints()
E:Point(OptionsFrameCancel, "BOTTOMLEFT",OptionsFrame,"BOTTOMRIGHT",-105,15)
OptionsFrameOkay:ClearAllPoints()
E:Point(OptionsFrameOkay, "RIGHT",OptionsFrameCancel,"LEFT",-4,0)
SoundOptionsFrameOkay:ClearAllPoints()
E:Point(SoundOptionsFrameOkay, "RIGHT",SoundOptionsFrameCancel,"LEFT",-4,0)
UIOptionsFrameOkay:ClearAllPoints()
E:Point(UIOptionsFrameOkay, "RIGHT",UIOptionsFrameCancel,"LEFT", -4,0)
-- others
ZoneTextFrame:ClearAllPoints()
E:Point(ZoneTextFrame, "TOP", UIParent, 0, -128)
E:StripTextures(CoinPickupFrame)
E:SetTemplate(CoinPickupFrame, "Transparent")
S:HandleButton(CoinPickupOkayButton)
S:HandleButton(CoinPickupCancelButton)
-- Stack Split Frame
E:SetTemplate(StackSplitFrame, "Transparent")
StackSplitFrame:GetRegions():Hide()
StackSplitFrame:SetFrameStrata("DIALOG")
StackSplitFrame.bg1 = CreateFrame("Frame", nil, StackSplitFrame)
E:SetTemplate(StackSplitFrame.bg1, "Transparent")
E:Point(StackSplitFrame.bg1, "TOPLEFT", 10, -15)
E:Point(StackSplitFrame.bg1, "BOTTOMRIGHT", -10, 55)
StackSplitFrame.bg1:SetFrameLevel(StackSplitFrame.bg1:GetFrameLevel() - 1)
E:StripTextures(OpacityFrame)
E:SetTemplate(OpacityFrame, "Transparent")
S:HandleSliderFrame(OpacityFrameSlider)
-- Interface Options
UIOptionsFrame:SetParent(E.UIParent)
UIOptionsFrame:EnableMouse(false)
hooksecurefunc("UIOptionsFrame_Load", function()
E:StripTextures(UIOptionsFrame)
end)
local UIOptions = {
"BasicOptions",
"BasicOptionsGeneral",
"BasicOptionsDisplay",
"BasicOptionsCamera",
"BasicOptionsHelp",
"AdvancedOptions",
"AdvancedOptionsActionBars",
"AdvancedOptionsChat",
"AdvancedOptionsRaid",
"AdvancedOptionsCombatText",
}
for i = 1, getn(UIOptions) do
local options = _G[UIOptions[i]]
E:SetTemplate(options, "Transparent")
end
BasicOptions.backdrop = CreateFrame("Frame", nil, BasicOptions)
E:Point(BasicOptions.backdrop, "TOPLEFT", BasicOptionsGeneral, -20, 35)
E:Point(BasicOptions.backdrop, "BOTTOMRIGHT", BasicOptionsHelp, 20, -130)
E:SetTemplate(BasicOptions.backdrop, "Transparent")
AdvancedOptions.backdrop = CreateFrame("Frame", nil, AdvancedOptions)
E:Point(AdvancedOptions.backdrop, "TOPLEFT", BasicOptionsGeneral, -20, 35)
E:Point(AdvancedOptions.backdrop, "BOTTOMRIGHT", BasicOptionsHelp, 20, -130)
E:SetTemplate(AdvancedOptions.backdrop, "Transparent")
for i = 1, 2 do
local tab = _G["UIOptionsFrameTab"..i]
E:StripTextures(tab, true)
E:CreateBackdrop(tab, "Transparent")
tab:SetFrameLevel(tab:GetParent():GetFrameLevel() + 2)
tab.backdrop:SetFrameLevel(tab:GetParent():GetFrameLevel() + 1)
E:Point(tab.backdrop, "TOPLEFT", 5, E.PixelMode and -14 or -16)
E:Point(tab.backdrop, "BOTTOMRIGHT", -5, E.PixelMode and -4 or -6)
tab:SetScript("OnClick", function()
PanelTemplates_Tab_OnClick(UIOptionsFrame)
if AdvancedOptions:IsShown() then
BasicOptions:Show()
AdvancedOptions:Hide()
else
BasicOptions:Hide()
AdvancedOptions:Show()
end
PlaySound("igCharacterInfoTab")
end)
HookScript(tab, "OnEnter", S.SetModifiedBackdrop)
HookScript(tab, "OnLeave", S.SetOriginalBackdrop)
end
for _, child in ipairs({UIOptionsFrame:GetChildren()}) do
if child.GetPushedTexture and child:GetPushedTexture() and not child:GetName() then
child:SetFrameLevel(UIOptionsFrame:GetFrameLevel() + 2)
S:HandleCloseButton(child, UIOptionsFrame.backdrop)
end
end
OptionsFrameDefaults:ClearAllPoints()
E:Point(OptionsFrameDefaults, "TOPLEFT", OptionsFrame, "BOTTOMLEFT", 15, 36)
S:HandleButton(UIOptionsFrameResetTutorials)
E:Point(SoundOptionsFrameCheckButton1, "TOPLEFT", "SoundOptionsFrame", "TOPLEFT", 16, -15)
-- Interface Options Frame Dropdown
local interfacedropdown ={
"CombatTextDropDown",
"TargetofTargetDropDown",
"CameraDropDown",
"ClickCameraDropDown"
}
for i = 1, getn(interfacedropdown) do
local idropdown = _G["UIOptionsFrame"..interfacedropdown[i]]
if idropdown then
S:HandleDropDownBox(idropdown)
end
end
-- Video Options Frame Dropdown
local optiondropdown = {
"OptionsFrameResolutionDropDown",
"OptionsFrameRefreshDropDown",
"OptionsFrameMultiSampleDropDown",
"SoundOptionsOutputDropDown",
}
for i = 1, getn(optiondropdown) do
local odropdown = _G[optiondropdown[i]]
if odropdown then
S:HandleDropDownBox(odropdown, i == 3 and 195 or 165)
end
end
-- Interface Options Checkboxes
for _, value in UIOptionsFrameCheckButtons do
local UIOptionsFrameCheckBox = _G["UIOptionsFrameCheckButton"..value.index]
if value.index == 7 then
E:Kill(UIOptionsFrameCheckBox)
end
if value.index == 8 then
E:Point(UIOptionsFrameCheckBox, "TOPLEFT", 10, -8)
end
if UIOptionsFrameCheckBox then
S:HandleCheckBox(UIOptionsFrameCheckBox)
end
end
-- Video Options Checkboxes
for _, value in OptionsFrameCheckButtons do
local OptionsFrameCheckButton = _G["OptionsFrameCheckButton"..value.index]
if OptionsFrameCheckButton then
S:HandleCheckBox(OptionsFrameCheckButton)
end
end
-- Sound Options Checkboxes
for _, value in SoundOptionsFrameCheckButtons do
local SoundOptionsFrameCheckButton = _G["SoundOptionsFrameCheckButton"..value.index]
if SoundOptionsFrameCheckButton then
S:HandleCheckBox(SoundOptionsFrameCheckButton)
end
end
-- Interface Options Sliders
for i in UIOptionsFrameSliders do
S:HandleSliderFrame(_G["UIOptionsFrameSlider"..i])
end
-- Video Options Sliders
for i in OptionsFrameSliders do
S:HandleSliderFrame(_G["OptionsFrameSlider"..i])
end
-- Sound Options Sliders
for i in SoundOptionsFrameSliders do
S:HandleSliderFrame(_G["SoundOptionsFrameSlider"..i])
end
end
S:AddCallback("SkinMisc", LoadSkin)