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.
122 lines
3.3 KiB
122 lines
3.3 KiB
local SLE, T, E, L, V, P, G = unpack(select(2, ...))
|
|
local M = SLE.Misc
|
|
|
|
local _G = _G
|
|
|
|
--Viewports
|
|
function M:SetAllPoints(...)
|
|
M:SetViewport()
|
|
end
|
|
|
|
--[[function M:ClearAllPoints(force)
|
|
print("ClearAllPoints", force)
|
|
if force then
|
|
WorldFrame:ORClear()
|
|
end
|
|
end]]
|
|
|
|
function M:SetViewport()
|
|
if SLE._Compatibility['SunnArt'] then return end --Other viewport addon is enabled
|
|
local scale = E.global.general.UIScale
|
|
|
|
_G.WorldFrame:ClearAllPoints()
|
|
_G.WorldFrame:SetPoint('TOPLEFT', (M.db.viewport.left * scale), -(M.db.viewport.top * scale))
|
|
_G.WorldFrame:SetPoint('BOTTOMRIGHT', -(M.db.viewport.right * scale), (M.db.viewport.bottom * scale))
|
|
end
|
|
|
|
--Raid utility
|
|
function M:RaidUtility_SetMouseoverAlpha()
|
|
local a = E.db.sle.blizzard.rumouseover and 0 or 1
|
|
_G.RaidUtility_ShowButton:SetAlpha(a)
|
|
end
|
|
|
|
function M:RaidUtility_OnDragStop()
|
|
local point, anchor, point2, x, y = self:GetPoint()
|
|
local frame = _G.RaidUtility_ShowButton
|
|
frame:ClearAllPoints()
|
|
if strfind(point, 'BOTTOM') then
|
|
frame:SetPoint(point, anchor, point2, x, y)
|
|
else
|
|
frame:SetPoint(point, anchor, point2, x, y)
|
|
end
|
|
end
|
|
|
|
function M:RaidUtility_OnEnter()
|
|
if not E.db.sle.blizzard.rumouseover then return end
|
|
self:SetAlpha(1)
|
|
end
|
|
|
|
function M:RaidUtility_OnLeave()
|
|
if not E.db.sle.blizzard.rumouseover then return end
|
|
self:SetAlpha(0)
|
|
end
|
|
|
|
function M:RaidUtility_Hook()
|
|
--Creating mover for the button
|
|
local frame = _G.RaidUtility_ShowButton
|
|
if not frame then return end --Just in case
|
|
E:CreateMover(frame, 'RaidUtility_Mover', RAID_CONTROL, nil, nil, nil, 'ALL,S&L,S&L MISC')
|
|
local mover = _G.RaidUtility_Mover
|
|
|
|
--Setting default point and stuff
|
|
if E.db.movers == nil then E.db.movers = {} end
|
|
|
|
--Making frame actually following mover around
|
|
mover:HookScript('OnDragStart', function(self)
|
|
frame:ClearAllPoints()
|
|
frame:SetPoint('CENTER', self)
|
|
end)
|
|
mover:HookScript('OnDragStop', M.RaidUtility_OnDragStop)
|
|
|
|
if E.db.movers.RaidUtility_Mover == nil then
|
|
frame:ClearAllPoints()
|
|
frame:SetPoint('TOP', E.UIParent, 'TOP', -400, E.Border)
|
|
else
|
|
M.RaidUtility_OnDragStop(mover)
|
|
end
|
|
|
|
frame:RegisterForDrag('') --No buttons for drag
|
|
frame:HookScript('OnEnter', M.RaidUtility_OnEnter)
|
|
frame:HookScript('OnLeave', M.RaidUtility_OnLeave)
|
|
M.RaidUtility_OnLeave(frame)
|
|
end
|
|
|
|
function M:Initialize()
|
|
if not SLE.initialized then return end
|
|
M.db = E.db.sle.misc
|
|
E:CreateMover(_G.UIErrorsFrame, 'UIErrorsFrameMover', L["Error Frame"], nil, nil, nil, 'ALL,S&L,S&L MISC')
|
|
|
|
--GhostFrame Mover
|
|
E:CreateMover(_G.GhostFrame, 'SLEGhostFrameMover', L["Ghost Frame"], nil, nil, nil, 'ALL,S&L,S&L MISC')
|
|
_G.GhostFrame.mover:SetSize(_G.GhostFrameContentsFrame:GetSize())
|
|
|
|
--Raid Utility
|
|
if _G.RaidUtility_ShowButton then M:RaidUtility_Hook() end
|
|
|
|
--Viewport
|
|
function CinematicFrame_CancelCinematic()
|
|
if ( CinematicFrame.isRealCinematic ) then
|
|
StopCinematic()
|
|
elseif ( CanCancelScene() ) then
|
|
CancelScene()
|
|
else
|
|
VehicleExit()
|
|
end
|
|
end
|
|
|
|
--Some high level bullshit
|
|
-- WorldFrame.ORClear = WorldFrame.ClearAllPoints
|
|
-- WorldFrame.ClearAllPoints = M.ClearAllPoints
|
|
WorldFrame.ORSetAll = WorldFrame.SetAllPoints
|
|
WorldFrame.SetAllPoints = M.SetAllPoints
|
|
|
|
M:SetViewport()
|
|
hooksecurefunc(E, 'PixelScaleChanged', M.SetViewport)
|
|
|
|
function M:ForUpdateAll()
|
|
M.db = E.db.sle.misc
|
|
M:SetViewport()
|
|
end
|
|
end
|
|
|
|
SLE:RegisterModule(M:GetName())
|
|
|