mirror of
https://github.com/Blaststar/Questie-Octo-Vanilla.git
synced 2026-10-26 23:20:50 +00:00
375 lines
15 KiB
Lua
375 lines
15 KiB
Lua
TITAN_PANEL_PLACE_TOP = 1;
|
|
TITAN_PANEL_PLACE_BOTTOM = 2;
|
|
|
|
TitanMovable = {};
|
|
TitanMovableData = {
|
|
PlayerFrame = {frameName = "PlayerFrame", frameArchor = "TOPLEFT", xArchor = "LEFT", y = -4, position = TITAN_PANEL_PLACE_TOP},
|
|
TargetFrame = {frameName = "TargetFrame", frameArchor = "TOPLEFT", xArchor = "LEFT", y = -4, position = TITAN_PANEL_PLACE_TOP},
|
|
PartyMemberFrame1 = {frameName = "PartyMemberFrame1", frameArchor = "TOPLEFT", xArchor = "LEFT", y = -128, position = TITAN_PANEL_PLACE_TOP},
|
|
TicketStatusFrame = {frameName = "TicketStatusFrame", frameArchor = "TOPRIGHT", xArchor = "RIGHT", y = 0, position = TITAN_PANEL_PLACE_TOP},
|
|
TemporaryEnchantFrame = {frameName = "TemporaryEnchantFrame", frameArchor = "TOPRIGHT", xArchor = "RIGHT", y = -13, position = TITAN_PANEL_PLACE_TOP},
|
|
MinimapCluster = {frameName = "MinimapCluster", frameArchor = "TOPRIGHT", xArchor = "RIGHT", y = 0, position = TITAN_PANEL_PLACE_TOP},
|
|
WorldStateAlwaysUpFrame = {frameName = "WorldStateAlwaysUpFrame", frameArchor = "TOP", xArchor = "CENTER", y = -15, position = TITAN_PANEL_PLACE_TOP},
|
|
MainMenuBar = {frameName = "MainMenuBar", frameArchor = "BOTTOM", xArchor = "CENTER", y = 0, position = TITAN_PANEL_PLACE_BOTTOM},
|
|
MultiBarRight = {frameName = "MultiBarRight", frameArchor = "BOTTOMRIGHT", xArchor = "RIGHT", y = 98, position = TITAN_PANEL_PLACE_BOTTOM},
|
|
CT_PlayerFrame_Drag = {frameName = "CT_PlayerFrame_Drag", frameArchor = "TOPLEFT", xArchor = "LEFT", y = -25, position = TITAN_PANEL_PLACE_TOP},
|
|
CT_TargetFrame_Drag = {frameName = "CT_TargetFrame_Drag", frameArchor = "TOPLEFT", xArchor = "LEFT", y = -25, position = TITAN_PANEL_PLACE_TOP},
|
|
Gypsy_PlayerFrameCapsule = {frameName = "Gypsy_PlayerFrameCapsule", frameArchor = "TOPLEFT", xArchor = "LEFT", y = 14, position = TITAN_PANEL_PLACE_TOP},
|
|
Gypsy_TargetFrameCapsule = {frameName = "Gypsy_TargetFrameCapsule", frameArchor = "TOPLEFT", xArchor = "LEFT", y = 16, position = TITAN_PANEL_PLACE_TOP},
|
|
}
|
|
|
|
function TitanMovableFrame_OnLoad()
|
|
-- Overwrite Blizzard Frame positioning functions
|
|
WoW_TicketStatusFrame_OnEvent = TicketStatusFrame_OnEvent;
|
|
TicketStatusFrame_OnEvent = Titan_TicketStatusFrame_OnEvent;
|
|
|
|
WoW_FCF_UpdateDockPosition = FCF_UpdateDockPosition;
|
|
FCF_UpdateDockPosition = Titan_FCF_UpdateDockPosition;
|
|
|
|
WoW_FCF_UpdateCombatLogPosition = FCF_UpdateCombatLogPosition;
|
|
FCF_UpdateCombatLogPosition = Titan_FCF_UpdateCombatLogPosition;
|
|
|
|
if TitanPanelGetVar("CastingBar") then
|
|
WoW_CastingBarFrame_UpdatePosition = CastingBarFrame_UpdatePosition;
|
|
CastingBarFrame_UpdatePosition = Titan_CastingBarFrame_UpdatePosition;
|
|
end
|
|
|
|
WoW_UIParent_ManageRightSideFrames = UIParent_ManageRightSideFrames;
|
|
UIParent_ManageRightSideFrames = Titan_UIParent_ManageRightSideFrames;
|
|
end
|
|
|
|
function TitanMovableFrame_CheckFrames(position)
|
|
local top, bottom, panelYOffset, frameTop;
|
|
|
|
TitanMovable = {};
|
|
|
|
if (position == TITAN_PANEL_PLACE_TOP) then
|
|
|
|
panelYOffset = TitanMovable_GetPanelYOffset(TITAN_PANEL_PLACE_TOP, TitanPanelGetVar("BothBars"));
|
|
|
|
-- Move PlayerFrame
|
|
if (CT_PlayerFrame_Drag) then
|
|
frameTop = TitanMovableFrame_GetOffset(CT_PlayerFrame_Drag, "TOP");
|
|
top = -25 + panelYOffset;
|
|
TitanMovableFrame_CheckTopFrame(frameTop, top, CT_PlayerFrame_Drag:GetName());
|
|
elseif (Gypsy_PlayerFrameCapsule) then
|
|
frameTop = TitanMovableFrame_GetOffset(Gypsy_PlayerFrameCapsule, "TOP");
|
|
top = 14 + panelYOffset;
|
|
TitanMovableFrame_CheckTopFrame(frameTop, top, Gypsy_PlayerFrameCapsule:GetName());
|
|
else
|
|
frameTop = TitanMovableFrame_GetOffset(PlayerFrame, "TOP");
|
|
top = -4 + panelYOffset;
|
|
TitanMovableFrame_CheckTopFrame(frameTop, top, PlayerFrame:GetName())
|
|
end
|
|
|
|
-- Move TargetFrame
|
|
if (CT_TargetFrame_Drag) then
|
|
frameTop = TitanMovableFrame_GetOffset(CT_TargetFrame_Drag, "TOP");
|
|
top = -25 + panelYOffset;
|
|
TitanMovableFrame_CheckTopFrame(frameTop, top, CT_TargetFrame_Drag:GetName());
|
|
elseif (Gypsy_TargetFrameCapsule) then
|
|
frameTop = TitanMovableFrame_GetOffset(Gypsy_TargetFrameCapsule, "TOP");
|
|
top = 14 + panelYOffset;
|
|
TitanMovableFrame_CheckTopFrame(frameTop, top, Gypsy_TargetFrameCapsule:GetName());
|
|
else
|
|
frameTop = TitanMovableFrame_GetOffset(TargetFrame, "TOP");
|
|
top = -4 + panelYOffset;
|
|
TitanMovableFrame_CheckTopFrame(frameTop, top, TargetFrame:GetName())
|
|
end
|
|
|
|
-- Move PartyMemberFrame
|
|
if (not CT_MovableParty1_Drag and not Gypsy_PartyFrameCapsule) then
|
|
frameTop = TitanMovableFrame_GetOffset(PartyMemberFrame1, "TOP");
|
|
top = -128 + panelYOffset;
|
|
TitanMovableFrame_CheckTopFrame(frameTop, top, PartyMemberFrame1:GetName())
|
|
end
|
|
|
|
-- Move TicketStatusFrame
|
|
frameTop = TitanMovableFrame_GetOffset(TicketStatusFrame, "TOP");
|
|
top = 0 + panelYOffset;
|
|
TitanMovableFrame_CheckTopFrame(frameTop, top, TicketStatusFrame:GetName())
|
|
|
|
-- Move TemporaryEnchantFrame
|
|
frameTop = TitanMovableFrame_GetOffset(TemporaryEnchantFrame, "TOP");
|
|
if (TicketStatusFrame:IsVisible()) then
|
|
top = 0 - TicketStatusFrame:GetHeight() + panelYOffset;
|
|
else
|
|
top = -13 + panelYOffset;
|
|
end
|
|
TitanMovableFrame_CheckTopFrame(frameTop, top, TemporaryEnchantFrame:GetName())
|
|
|
|
-- Move MinimapCluster
|
|
if (not CleanMinimap) then
|
|
frameTop = TitanMovableFrame_GetOffset(MinimapCluster, "TOP");
|
|
top = 0 + panelYOffset;
|
|
TitanMovableFrame_CheckTopFrame(frameTop, top, MinimapCluster:GetName())
|
|
end
|
|
|
|
-- Move WorldStateAlwaysUpFrame
|
|
frameTop = TitanMovableFrame_GetOffset(WorldStateAlwaysUpFrame, "TOP");
|
|
top = -15 + panelYOffset;
|
|
TitanMovableFrame_CheckTopFrame(frameTop, top, WorldStateAlwaysUpFrame:GetName());
|
|
|
|
elseif (position == TITAN_PANEL_PLACE_BOTTOM) then
|
|
|
|
panelYOffset = TitanMovable_GetPanelYOffset(TITAN_PANEL_PLACE_BOTTOM, TitanPanelGetVar("BothBars"));
|
|
|
|
-- Move MainMenuBar
|
|
if (not Gypsy_ActionBar and not BibActionBar1) then
|
|
bottom = 0 + panelYOffset;
|
|
frameBottom = TitanMovableFrame_GetOffset(MainMenuBar, "BOTTOM");
|
|
if (frameBottom >= 0) then
|
|
TitanMovableFrame_CheckBottomFrame(frameBottom, bottom, MainMenuBar:GetName());
|
|
end
|
|
end
|
|
|
|
-- Move MultiBarRight
|
|
bottom = 98 + panelYOffset;
|
|
frameBottom = TitanMovableFrame_GetOffset(MultiBarRight, "BOTTOM");
|
|
TitanMovableFrame_CheckBottomFrame(frameBottom, bottom, MultiBarRight:GetName());
|
|
end
|
|
|
|
end
|
|
|
|
function TitanMovableFrame_MoveFrames(position, override)
|
|
local frameData, frame, frameName, frameArchor, xArchor, y, xOffset, yOffset, panelYOffset;
|
|
|
|
for index, value in TitanMovable do
|
|
frameData = TitanMovableData[value];
|
|
frame = getglobal(frameData.frameName);
|
|
frameName = frameData.frameName;
|
|
frameArchor = frameData.frameArchor;
|
|
|
|
if (not frame:IsUserPlaced()) then
|
|
xArchor = frameData.xArchor;
|
|
y = frameData.y;
|
|
|
|
panelYOffset = TitanMovable_GetPanelYOffset(frameData.position, TitanPanelGetVar("BothBars"), override);
|
|
|
|
xOffset = TitanMovableFrame_GetOffset(frame, xArchor);
|
|
if (frameName == "TemporaryEnchantFrame" and TicketStatusFrame:IsVisible()) then
|
|
yOffset = (-TicketStatusFrame:GetHeight()) + panelYOffset;
|
|
else
|
|
yOffset = y + panelYOffset;
|
|
end
|
|
|
|
frame:ClearAllPoints();
|
|
frame:SetPoint(frameArchor, "UIParent", frameArchor, xOffset, yOffset);
|
|
else
|
|
--Leave frame where it is as it has been moved by a user
|
|
end
|
|
end
|
|
end
|
|
|
|
function TitanMovableFrame_AdjustBlizzardFrames()
|
|
Titan_FCF_UpdateDockPosition();
|
|
Titan_FCF_UpdateCombatLogPosition();
|
|
if TitanPanelGetVar("CastingBar") then
|
|
Titan_CastingBarFrame_UpdatePosition();
|
|
end
|
|
Titan_UIParent_ManageRightSideFrames();
|
|
end
|
|
|
|
function TitanMovableFrame_GetOffset(frame, point)
|
|
if (frame and point) then
|
|
if (point == "LEFT" and frame:GetLeft() and UIParent:GetLeft()) then
|
|
return frame:GetLeft() - UIParent:GetLeft();
|
|
elseif (point == "RIGHT" and frame:GetRight() and UIParent:GetRight()) then
|
|
return frame:GetRight() - UIParent:GetRight();
|
|
elseif (point == "TOP" and frame:GetTop() and UIParent:GetTop()) then
|
|
return frame:GetTop() - UIParent:GetTop();
|
|
elseif (point == "BOTTOM" and frame:GetBottom() and UIParent:GetBottom()) then
|
|
return frame:GetBottom() - UIParent:GetBottom();
|
|
elseif (point == "CENTER" and frame:GetLeft() and frame:GetRight() and UIParent:GetLeft() and UIParent:GetRight()) then
|
|
return (frame:GetLeft() + frame:GetRight() - UIParent:GetLeft() - UIParent:GetRight()) / 2;
|
|
end
|
|
end
|
|
return 0;
|
|
end
|
|
|
|
function TitanMovable_GetPanelYOffset(framePosition, bothbars, override)
|
|
local barPosition = TitanPanelGetVar("Position");
|
|
local barnumber = 0;
|
|
|
|
if override then
|
|
if framePosition == TITAN_PANEL_PLACE_TOP then
|
|
if TitanPanelGetVar("ScreenAdjust") then
|
|
return 0;
|
|
end
|
|
elseif framePosition == TITAN_PANEL_PLACE_BOTTOM and bothbars == nil then
|
|
if TitanPanelGetVar("ScreenAdjust") then
|
|
return 0;
|
|
end
|
|
elseif framePosition == TITAN_PANEL_PLACE_BOTTOM and bothbars == 1 then
|
|
if TitanPanelGetVar("AuxScreenAdjust") then
|
|
return 0;
|
|
end
|
|
else
|
|
return 0;
|
|
end
|
|
end
|
|
|
|
if bothbars ~= nil then
|
|
barPosition = framePosition;
|
|
else
|
|
barPosition = TitanPanelGetVar("Position");
|
|
end
|
|
|
|
barnumber = TitanUtils_GetDoubleBar(bothbars, framePosition);
|
|
|
|
local scale = TitanPanelGetVar("Scale");
|
|
if (scale and framePosition and barPosition and framePosition == barPosition) then
|
|
if (framePosition == TITAN_PANEL_PLACE_TOP) then
|
|
return (-24 * scale)*(barnumber);
|
|
elseif (framePosition == TITAN_PANEL_PLACE_BOTTOM) then
|
|
return (24 * scale)*(barnumber);
|
|
end
|
|
end
|
|
return 0;
|
|
end
|
|
|
|
function TitanMovableFrame_CheckTopFrame(frameTop, top, frameName)
|
|
-- if (frameTop + 1 >= top) then
|
|
--TitanDebug(frameTop .." - " .. top);
|
|
table.insert(TitanMovable, frameName);
|
|
-- end
|
|
end
|
|
|
|
function TitanMovableFrame_CheckBottomFrame(frameBottom, bottom, frameName)
|
|
-- if (frameBottom - 1 <= bottom) then
|
|
table.insert(TitanMovable, frameName);
|
|
-- end
|
|
end
|
|
|
|
function Titan_TicketStatusFrame_OnEvent()
|
|
local panelYOffset = TitanMovable_GetPanelYOffset(TITAN_PANEL_PLACE_TOP, TitanPanelGetVar("BothBars"));
|
|
|
|
if ( event == "PLAYER_ENTERING_WORLD" ) then
|
|
GetGMTicket();
|
|
else
|
|
if ( arg1 ~= 0 ) then
|
|
this:Show();
|
|
TemporaryEnchantFrame:SetPoint("TOPRIGHT", this:GetParent():GetName(), "TOPRIGHT", -205, 0 - this:GetHeight() + panelYOffset); -- ATTN
|
|
refreshTime = GMTICKET_CHECK_INTERVAL;
|
|
else
|
|
this:Hide();
|
|
TemporaryEnchantFrame:SetPoint("TOPRIGHT", "UIParent", "TOPRIGHT", -205, -13 + panelYOffset); -- ATTN
|
|
end
|
|
end
|
|
end
|
|
|
|
function Titan_FCF_UpdateDockPosition()
|
|
local panelYOffset = TitanMovable_GetPanelYOffset(TITAN_PANEL_PLACE_BOTTOM, TitanPanelGetVar("BothBars"));
|
|
|
|
if ( DEFAULT_CHAT_FRAME:IsUserPlaced() ) then
|
|
if ( SIMPLE_CHAT ~= "1" ) then
|
|
return;
|
|
end
|
|
end
|
|
|
|
local chatOffset = 85 + panelYOffset;
|
|
if ( GetNumShapeshiftForms() > 0 or HasPetUI() or PetHasActionBar() ) then
|
|
if ( MultiBarBottomLeft:IsVisible() or BOTTOMBAR_OFFSET_Y ) then
|
|
chatOffset = chatOffset + 55;
|
|
else
|
|
chatOffset = chatOffset + 15;
|
|
end
|
|
elseif ( MultiBarBottomLeft:IsVisible() or BOTTOMBAR_OFFSET_Y ) then
|
|
chatOffset = chatOffset + 15;
|
|
end
|
|
DEFAULT_CHAT_FRAME:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOMLEFT", 32, chatOffset);
|
|
FCF_DockUpdate();
|
|
end
|
|
|
|
function Titan_FCF_UpdateCombatLogPosition()
|
|
local panelYOffset = TitanMovable_GetPanelYOffset(TITAN_PANEL_PLACE_BOTTOM, TitanPanelGetVar("BothBars"));
|
|
|
|
if ( SIMPLE_CHAT == "1" ) then
|
|
local xOffset = -32;
|
|
local yOffset = 75 + panelYOffset;
|
|
if ( MultiBarBottomRight:IsVisible() ) then
|
|
yOffset = yOffset + 40;
|
|
end
|
|
if ( MultiBarLeft:IsVisible() ) then
|
|
xOffset = xOffset - 88;
|
|
elseif ( MultiBarRight:IsVisible() ) then
|
|
xOffset = xOffset - 43;
|
|
end
|
|
ChatFrame2:SetPoint("BOTTOMRIGHT", "UIParent", "BOTTOMRIGHT", xOffset, yOffset);
|
|
end
|
|
end
|
|
|
|
function Titan_CastingBarFrame_UpdatePosition()
|
|
local panelYOffset = TitanMovable_GetPanelYOffset(TITAN_PANEL_PLACE_BOTTOM, TitanPanelGetVar("BothBars"));
|
|
|
|
local castingBarPosition = 60 + panelYOffset;
|
|
if ( PetActionBarFrame:IsVisible() or ShapeshiftBarFrame:IsVisible() ) then
|
|
castingBarPosition = castingBarPosition + 40;
|
|
end
|
|
if ( MultiBarBottomLeft:IsVisible() or MultiBarBottomRight:IsVisible() ) then
|
|
castingBarPosition = castingBarPosition + 40;
|
|
end
|
|
CastingBarFlash:ClearAllPoints();
|
|
CastingBarFlash:SetPoint("BOTTOM", "UIParent", "BOTTOM", 0, castingBarPosition - 22);
|
|
CastingBarText:ClearAllPoints();
|
|
CastingBarText:SetPoint("BOTTOM", "UIParent", "BOTTOM", 0, castingBarPosition);
|
|
CastingBarFrameStatusBar:ClearAllPoints();
|
|
CastingBarFrameStatusBar:SetPoint("BOTTOM", "UIParent", "BOTTOM", 0, castingBarPosition);
|
|
CastingBarFrame:ClearAllPoints();
|
|
CastingBarFrame:SetPoint("BOTTOM", "UIParent", "BOTTOM", 0, castingBarPosition);
|
|
end
|
|
|
|
function Titan_UIParent_ManageRightSideFrames()
|
|
local panelYOffset = TitanMovable_GetPanelYOffset(TITAN_PANEL_PLACE_BOTTOM, TitanPanelGetVar("BothBars"));
|
|
|
|
local anchorX = 0;
|
|
local anchorY = 0 + panelYOffset;
|
|
|
|
-- Update group loot frame anchor
|
|
if ( MultiBarBottomRight:IsVisible() or MultiBarBottomLeft:IsVisible() ) then
|
|
GroupLootFrame1:SetPoint("BOTTOM", "UIParent", "BOTTOM", 0, 102 + panelYOffset);
|
|
else
|
|
GroupLootFrame1:SetPoint("BOTTOM", "UIParent", "BOTTOM", 0, 60 + panelYOffset);
|
|
end
|
|
|
|
-- Update tutorial anchor
|
|
if ( MultiBarBottomRight:IsVisible() or MultiBarBottomLeft:IsVisible() ) then
|
|
TutorialFrameParent:SetPoint("BOTTOM", "UIParent", "BOTTOM", 0, 94 + panelYOffset);
|
|
FramerateLabel:SetPoint("BOTTOM", "WorldFrame", "BOTTOM", 0, 104 + panelYOffset);
|
|
else
|
|
TutorialFrameParent:SetPoint("BOTTOM", "UIParent", "BOTTOM", 0, 52 + panelYOffset);
|
|
FramerateLabel:SetPoint("BOTTOM", "WorldFrame", "BOTTOM", 0, 64 + panelYOffset);
|
|
end
|
|
|
|
-- Update bag anchor
|
|
if ( MultiBarBottomRight:IsVisible() ) then
|
|
CONTAINER_OFFSET_Y = 97 + panelYOffset;
|
|
else
|
|
CONTAINER_OFFSET_Y = 70 + panelYOffset;
|
|
end
|
|
-- Setup x anchor
|
|
if ( MultiBarLeft:IsVisible() ) then
|
|
CONTAINER_OFFSET_X = 90;
|
|
anchorX = 90;
|
|
elseif ( MultiBarRight:IsVisible() ) then
|
|
CONTAINER_OFFSET_X = 45;
|
|
anchorX = 45;
|
|
else
|
|
CONTAINER_OFFSET_X = 0;
|
|
anchorX = 0;
|
|
end
|
|
-- Setup y anchors
|
|
QuestTimerFrame:SetPoint("TOPRIGHT", "MinimapCluster", "BOTTOMRIGHT", -anchorX, anchorY);
|
|
if ( QuestTimerFrame:IsVisible() ) then
|
|
anchorY = anchorY - QuestTimerFrame:GetHeight();
|
|
end
|
|
DurabilityFrame:SetPoint("TOPRIGHT", "MinimapCluster", "BOTTOMRIGHT", -anchorX-20, anchorY);
|
|
if ( DurabilityFrame:IsVisible() ) then
|
|
anchorY = anchorY - DurabilityFrame:GetHeight();
|
|
end
|
|
QuestWatchFrame:SetPoint("TOPRIGHT", "MinimapCluster", "BOTTOMRIGHT", -anchorX, anchorY);
|
|
|
|
-- Update combat log anchor
|
|
FCF_UpdateCombatLogPosition();
|
|
end
|