Files
coa-elvui/ElvUI_AddOnSkins/Skins/Addons/lightHeaded.lua
T

143 lines
4.2 KiB
Lua

local E, L, V, P, G = unpack(ElvUI)
local S = E:GetModule("Skins")
local AS = E:GetModule("AddOnSkins")
if not AS:IsAddonLODorEnabled("LightHeaded") then return end
local cos, pi = math.cos, math.pi
-- LightHeaded r310
S:AddCallbackForAddon("LightHeaded", "LightHeaded", function()
if not E.private.addOnSkins.LightHeaded then return end
LightHeadedFrame:StripTextures()
LightHeadedFrame:SetTemplate("Transparent")
LightHeadedFrame:Height(424)
LightHeadedFrame:Point("LEFT", QuestLogFrame, "RIGHT", -2, 0)
LightHeadedFrame.handle:SetParent(QuestLogFrame) -- ignore LightHeadedFrame alpha
LightHeadedFrame.handle:StripTextures()
LightHeadedFrame.handle:SetTemplate("Default")
LightHeadedFrame.handle:Point("LEFT", LightHeadedFrame, "RIGHT", -1, 0)
LightHeadedSearchBox:Width(281)
LightHeadedSearchBox:Point("TOP", LightHeadedFrame, "TOP", 0, -30)
S:HandleEditBox(LightHeadedSearchBox)
S:HandleCloseButton(LightHeadedFrame.close, LightHeadedFrame)
LightHeadedScrollFrame:CreateBackdrop("Transparent")
LightHeadedScrollFrame.backdrop:Point("TOPLEFT", -1, 2)
LightHeadedScrollFrame.backdrop:Point("BOTTOMRIGHT", 1, -2)
LightHeadedScrollFrame:Point("TOPLEFT", 9, -75)
LightHeadedScrollFrame:Point("BOTTOMRIGHT", -30, 55)
LightHeadedScrollFrameScrollBar:Point("TOPLEFT", LightHeadedScrollFrame, "TOPRIGHT", 4, -17)
LightHeadedScrollFrameScrollBar:Point("BOTTOMLEFT", LightHeadedScrollFrame, "BOTTOMRIGHT", 4, 17)
S:HandleNextPrevButton(LightHeadedFrameSub.next, "right")
S:HandleNextPrevButton(LightHeadedFrameSub.prev, "left")
S:HandleScrollBar(LightHeadedScrollFrameScrollBar)
LightHeadedTooltip:SetTemplate("Transparent")
hooksecurefunc(LightHeaded, "OnHyperlinkEnter", function()
local backdrop = E.media.backdropfadecolor
local border = E.media.bordercolor
LightHeadedTooltip:SetBackdropColor(backdrop[1], backdrop[2], backdrop[3], backdrop[4])
LightHeadedTooltip:SetBackdropBorderColor(border[1], border[2], border[3])
end)
hooksecurefunc(LightHeaded, "OnHyperlinkClick", function()
LightHeadedTooltip:Hide()
end)
local QLFrameOffsetXOpened, QLFrameOffsetXClosed = -2, -326
local function UpdatePosition()
if LightHeaded.db.profile.open then
LightHeadedFrame:Point("LEFT", QuestLogFrame, "RIGHT", QLFrameOffsetXOpened, 0)
else
LightHeadedFrame:SetAlpha(0)
LightHeadedFrameSub:SetAlpha(1)
LightHeadedFrame:Point("LEFT", QuestLogFrame, "RIGHT", QLFrameOffsetXClosed, 0)
end
end
UpdatePosition()
hooksecurefunc(LightHeaded, "LockUnlockFrame", function()
LightHeadedFrame:Height(424)
UpdatePosition()
end)
local function cosineInterpolation(y1, y2, mu)
return y1 + (y2 - y1) * (1 - cos(pi * mu)) / 2
end
local openedX, closedX = QLFrameOffsetXOpened, QLFrameOffsetXClosed
local timeToFade = 1.5
local mod = 1 / timeToFade
if LightHeaded.db.profile.open then
openedX, closedX = closedX, openedX
end
local count = 0
local totalElapsed = 0
local function OnUpdate(self, elapsed)
count = count + 1
totalElapsed = totalElapsed + elapsed
if totalElapsed >= timeToFade then
local temp = openedX
openedX = closedX
closedX = temp
count = 0
totalElapsed = 0
self:SetScript("OnUpdate", nil)
if not LightHeaded.db.profile.open then
if LightHeadedFrameSub.justclosed then
LightHeadedFrameSub.justclosed = false
LightHeadedFrameSub:Hide()
self:SetAlpha(0)
else
LightHeaded.db.profile.open = true
self:SetAlpha(1)
end
end
return
elseif count == 1 then
if LightHeaded.db.profile.open then
LightHeaded.db.profile.open = false
LightHeadedFrameSub.justclosed = true
else
LightHeadedFrameSub:Show()
LightHeaded:SelectQuestLogEntry()
end
end
local status = mod * totalElapsed
local offset = cosineInterpolation(closedX, openedX, status)
self:Point("LEFT", QuestLogFrame, "RIGHT", offset, 0)
self:SetAlpha(LightHeaded.db.profile.lhopen and (1 - status) or status)
end
LightHeadedFrame.handle:SetScript("OnClick", function()
LightHeadedFrame:SetScript("OnUpdate", OnUpdate)
if LightHeaded.db.profile.sound then
PlaySoundFile("Sound\\Doodad\\Karazahn_WoodenDoors_Close_A.wav")
end
LightHeaded.db.profile.lhopen = not LightHeaded.db.profile.lhopen
end)
LightHeaded.ChangeBGAlpha = E.noop
end)