174 lines
6.5 KiB
Lua
174 lines
6.5 KiB
Lua
local _G = ShaguTweaks.GetGlobalEnv()
|
|
local T = ShaguTweaks.T
|
|
local hooksecurefunc = hooksecurefunc or ShaguTweaks.hooksecurefunc
|
|
|
|
local module = ShaguTweaks:register({
|
|
title = T["Reduced Actionbar Size"],
|
|
description = T["Reduces the actionbar size by removing several items such as the bag panel and microbar"],
|
|
expansions = { ["vanilla"] = true },
|
|
category = T["Action Bar"],
|
|
enabled = nil,
|
|
})
|
|
|
|
local function ReplaceBag()
|
|
local id = this:GetID()
|
|
if id ~= 0 then
|
|
id = ContainerIDToInventoryID(id)
|
|
if CursorHasItem() then
|
|
PutItemInBag(id)
|
|
else
|
|
PickupBagFromSlot(id)
|
|
end
|
|
end
|
|
end
|
|
|
|
module.enable = function(self)
|
|
-- general function to hide textures and frames
|
|
local function hide(frame, texture)
|
|
if not frame then return end
|
|
|
|
if texture and texture == 1 and frame.SetTexture then
|
|
frame:SetTexture("")
|
|
elseif texture and texture == 2 and frame.SetNormalTexture then
|
|
frame:SetNormalTexture("")
|
|
else
|
|
frame:ClearAllPoints()
|
|
frame.Show = function() return end
|
|
frame:Hide()
|
|
end
|
|
end
|
|
|
|
-- frames that shall be hidden
|
|
local frames = {
|
|
-- actionbar paging
|
|
MainMenuBarPageNumber, ActionBarUpButton, ActionBarDownButton,
|
|
-- xp and reputation bar
|
|
MainMenuXPBarTexture2, MainMenuXPBarTexture3,
|
|
ReputationWatchBarTexture2, ReputationWatchBarTexture3,
|
|
-- actionbar backgrounds
|
|
MainMenuBarTexture2, MainMenuBarTexture3,
|
|
MainMenuMaxLevelBar2, MainMenuMaxLevelBar3,
|
|
-- micro button panel
|
|
CharacterMicroButton, SpellbookMicroButton, TalentMicroButton,
|
|
QuestLogMicroButton, MainMenuMicroButton, SocialsMicroButton,
|
|
WorldMapMicroButton, MainMenuBarPerformanceBarFrame, HelpMicroButton,
|
|
-- bag panel
|
|
CharacterBag3Slot, CharacterBag2Slot, CharacterBag1Slot,
|
|
CharacterBag0Slot, MainMenuBarBackpackButton, KeyRingButton,
|
|
-- shapeshift backgrounds
|
|
ShapeshiftBarLeft, ShapeshiftBarMiddle, ShapeshiftBarRight,
|
|
}
|
|
|
|
-- textures that shall be set empty
|
|
local textures = {
|
|
ReputationWatchBarTexture2, ReputationWatchBarTexture3,
|
|
ReputationXPBarTexture2, ReputationXPBarTexture3,
|
|
SlidingActionBarTexture0, SlidingActionBarTexture1,
|
|
}
|
|
|
|
-- button textures that shall be set empty
|
|
local normtextures = {
|
|
ShapeshiftButton1, ShapeshiftButton2,
|
|
ShapeshiftButton3, ShapeshiftButton4,
|
|
ShapeshiftButton5, ShapeshiftButton6,
|
|
ShapeshiftButton7, ShapeshiftButton8,
|
|
ShapeshiftButton9, ShapeshiftButton10,
|
|
ShapeshiftButton11, ShapeshiftButton12,
|
|
}
|
|
|
|
-- elements that shall be resized to 511px
|
|
local resizes = {
|
|
MainMenuBar, MainMenuExpBar, MainMenuBarMaxLevelBar,
|
|
ReputationWatchBar, ReputationWatchStatusBar,
|
|
}
|
|
|
|
-- hide frames
|
|
for id, frame in pairs(frames) do hide(frame) end
|
|
|
|
-- clear textures
|
|
for id, frame in pairs(textures) do hide(frame, 1) end
|
|
for id, frame in pairs(normtextures) do hide(frame, 2) end
|
|
|
|
-- resize actionbar
|
|
for id, frame in pairs(resizes) do frame:SetWidth(511) end
|
|
|
|
-- experience bar
|
|
MainMenuXPBarTexture0:SetPoint("LEFT", MainMenuExpBar, "LEFT")
|
|
MainMenuXPBarTexture1:SetPoint("RIGHT", MainMenuExpBar, "RIGHT")
|
|
|
|
-- reputation bar
|
|
ReputationWatchBar:SetPoint("BOTTOM", MainMenuExpBar, "TOP", 0, 0)
|
|
ReputationWatchBarTexture0:SetPoint("LEFT", ReputationWatchBar, "LEFT")
|
|
ReputationWatchBarTexture1:SetPoint("RIGHT", ReputationWatchBar, "RIGHT")
|
|
|
|
-- move menubar texture background
|
|
MainMenuMaxLevelBar0:SetPoint("LEFT", MainMenuBarArtFrame, "LEFT")
|
|
MainMenuBarTexture0:SetPoint("LEFT", MainMenuBarArtFrame, "LEFT")
|
|
MainMenuBarTexture1:SetPoint("RIGHT", MainMenuBarArtFrame, "RIGHT")
|
|
|
|
-- move gryphon textures
|
|
MainMenuBarLeftEndCap:SetPoint("RIGHT", MainMenuBarArtFrame, "LEFT", 29.5, 0)
|
|
MainMenuBarRightEndCap:SetPoint("LEFT", MainMenuBarArtFrame, "RIGHT", -31.5, 0)
|
|
|
|
-- move MultiBarBottomRight ontop of MultiBarBottomLeft
|
|
MultiBarBottomRight:ClearAllPoints()
|
|
MultiBarBottomRight:SetPoint("BOTTOM", MultiBarBottomLeft, "TOP", 0, 5)
|
|
|
|
-- reload custom frame positions after original frame manage runs
|
|
local hookUIParent_ManageFramePositions = UIParent_ManageFramePositions
|
|
UIParent_ManageFramePositions = function(a1, a2, a3)
|
|
-- run original function
|
|
hookUIParent_ManageFramePositions(a1, a2, a3)
|
|
|
|
-- move top actionbar if xp or reputation is tracked
|
|
MultiBarBottomLeft:ClearAllPoints()
|
|
if MainMenuExpBar:IsVisible() or ReputationWatchBar:IsVisible() then
|
|
local anchor = GetWatchedFactionInfo() and ReputationWatchBar or MainMenuExpBar
|
|
MultiBarBottomLeft:SetPoint("BOTTOM", anchor, "TOP", 2, 3)
|
|
else
|
|
MultiBarBottomLeft:SetPoint("BOTTOM", MainMenuBar, "TOP", 2, -3)
|
|
end
|
|
|
|
-- move pet actionbar above other actionbars
|
|
PetActionBarFrame:ClearAllPoints()
|
|
local anchor = MainMenuBarArtFrame
|
|
anchor = MultiBarBottomLeft:IsVisible() and MultiBarBottomLeft or anchor
|
|
anchor = MultiBarBottomRight:IsVisible() and MultiBarBottomRight or anchor
|
|
anchor = ShapeshiftBarFrame:IsVisible() and ShapeshiftBarFrame or anchor
|
|
PetActionBarFrame:SetPoint("BOTTOMLEFT", anchor, "TOPLEFT", 20, 4)
|
|
|
|
-- ShapeshiftBarFrame
|
|
ShapeshiftBarFrame:ClearAllPoints()
|
|
local offset = 0
|
|
local anchor = ActionButton1
|
|
anchor = MultiBarBottomLeft:IsVisible() and MultiBarBottomLeft or anchor
|
|
anchor = MultiBarBottomRight:IsVisible() and MultiBarBottomRight or anchor
|
|
|
|
offset = anchor == ActionButton1 and ( MainMenuExpBar:IsVisible() or ReputationWatchBar:IsVisible() ) and 6 or 0
|
|
offset = anchor == ActionButton1 and offset + 4 or offset
|
|
ShapeshiftBarFrame:SetPoint("BOTTOMLEFT", anchor, "TOPLEFT", 8, 4 + offset)
|
|
|
|
-- move castbar ontop of other bars
|
|
local anchor = MainMenuBarArtFrame
|
|
anchor = MultiBarBottomLeft:IsVisible() and MultiBarBottomLeft or anchor
|
|
anchor = MultiBarBottomRight:IsVisible() and MultiBarBottomRight or anchor
|
|
local pet_offset = PetActionBarFrame:IsVisible() and 40 or 0
|
|
local stance_offset = ShapeshiftBarFrame:IsVisible() and 40 or 0
|
|
CastingBarFrame:SetPoint("BOTTOM", anchor, "TOP", 0, 10 + pet_offset + stance_offset)
|
|
end
|
|
|
|
-- restore frame positions when UIParent becomes visible
|
|
local restore = CreateFrame("Frame", nil, UIParent)
|
|
restore:SetScript("OnShow", UIParent_ManageFramePositions)
|
|
|
|
-- enforce pet actionbar offset after pet actionbar becomes visible
|
|
hooksecurefunc("ShowPetActionBar", function()
|
|
PETACTIONBAR_XPOS = 36
|
|
end)
|
|
|
|
-- enable picking up/replacing bags by clicking on the container frame portrait
|
|
for i = 1, 5 do
|
|
_G["ContainerFrame" .. i .. "PortraitButton"]:SetScript("OnClick", ReplaceBag)
|
|
end
|
|
end
|