You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.9 KiB
95 lines
2.9 KiB
local SLE, T, E, L, V, P, G = unpack(ElvUI_SLE)
|
|
local BG = SLE.Backgrounds
|
|
local CreateFrame = CreateFrame
|
|
|
|
--Default positions table. ID is passed everywhere so when positioning stuff I can just unpack by id and not writing a line for every BG.
|
|
BG.pos = {
|
|
[1] = {'BOTTOM', 'BOTTOM', 0, 21},
|
|
[2] = {'BOTTOMRIGHT', 'BOTTOM', -((E.eyefinity or E.ultrawide or E.physicalWidth)/4 + 32)/2 - 1, 21, 21},
|
|
[3] = {'BOTTOMLEFT', 'BOTTOM', ((E.eyefinity or E.ultrawide or E.physicalWidth)/4 + 32)/2 + 1, 21},
|
|
[4] = {'BOTTOM', 'BOTTOM', 0, E.physicalHeight/6 + 9},
|
|
}
|
|
|
|
function BG:CreateFrame(id)
|
|
local frame = CreateFrame('Frame', 'SLE_BG_'..id, E.UIParent, 'BackdropTemplate')
|
|
frame:SetFrameStrata('BACKGROUND')
|
|
frame.texture = frame:CreateTexture(nil, 'OVERLAY')
|
|
frame.texture:Point('TOPLEFT', frame, 'TOPLEFT', 2, -2)
|
|
frame.texture:Point('BOTTOMRIGHT', frame, 'BOTTOMRIGHT', -2, 2)
|
|
frame:Hide()
|
|
|
|
frame.texture:SetAlpha(E.db.general.backdropfadecolor.a or 0.5)
|
|
return frame
|
|
end
|
|
|
|
function BG:Positions(id)
|
|
local anchor, point, x, y = unpack(BG.pos[id])
|
|
BG['Frame_'..id]:SetPoint(anchor, E.UIParent, point, x, y)
|
|
end
|
|
|
|
function BG:UpdateTexture(id)
|
|
BG['Frame_'..id].texture:SetTexture(BG.db['bg'..id].texture)
|
|
end
|
|
|
|
function BG:FramesSize(id)
|
|
BG['Frame_'..id]:SetSize(BG.db['bg'..id].width, BG.db['bg'..id].height)
|
|
end
|
|
|
|
function BG:Alpha(id)
|
|
BG['Frame_'..id]:SetAlpha(BG.db['bg'..id].alpha)
|
|
end
|
|
|
|
function BG:FrameTemplate(id)
|
|
BG['Frame_'..id]:SetTemplate(BG.db['bg'..id].template, true)
|
|
end
|
|
|
|
function BG:RegisterHide(id)
|
|
if BG.db['bg'..id].pethide then
|
|
E:RegisterPetBattleHideFrames(BG['Frame_'..id], E.UIParent, 'BACKGROUND')
|
|
else
|
|
E:UnregisterPetBattleHideFrames(BG['Frame_'..id])
|
|
end
|
|
end
|
|
|
|
function BG:FramesVisibility(id)
|
|
if BG.db['bg'..id].enabled then
|
|
BG['Frame_'..id]:Show()
|
|
E:EnableMover(BG['Frame_'..id].mover:GetName())
|
|
RegisterStateDriver(BG['Frame_'..id], 'visibility', BG.db['bg'..id].visibility)
|
|
else
|
|
BG['Frame_'..id]:Hide()
|
|
E:DisableMover(BG['Frame_'..id].mover:GetName())
|
|
UnregisterStateDriver(BG['Frame_'..id], 'visibility')
|
|
end
|
|
end
|
|
|
|
function BG:MouseCatching(id)
|
|
BG['Frame_'..id]:EnableMouse(not(BG.db['bg'..id].clickthrough))
|
|
end
|
|
|
|
function BG:CreateAndUpdateFrames()
|
|
for id = 1, 4 do
|
|
if not BG['Frame_'..id] then BG['Frame_'..id] = self:CreateFrame(id) BG:Positions(id) end
|
|
BG:FramesSize(id)
|
|
BG:FrameTemplate(id)
|
|
BG:Alpha(id)
|
|
if not E.CreatedMovers['SLE_BG_'..id..'_Mover'] then E:CreateMover(BG['Frame_'..id], 'SLE_BG_'..id..'_Mover', L["SLE_BG_"..id], nil, nil, nil, 'S&L,S&L BG') end
|
|
BG:FramesVisibility(id)
|
|
BG:MouseCatching(id)
|
|
BG:UpdateTexture(id)
|
|
BG:RegisterHide(id)
|
|
end
|
|
end
|
|
|
|
function BG:Initialize()
|
|
if not SLE.initialized then return end
|
|
|
|
function BG:ForUpdateAll()
|
|
BG.db = E.db.sle.backgrounds
|
|
BG:CreateAndUpdateFrames()
|
|
end
|
|
|
|
BG:ForUpdateAll()
|
|
end
|
|
|
|
SLE:RegisterModule(BG:GetName())
|
|
|