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 function UpdateActionBarPositions() local expVisible = MainMenuExpBar:IsVisible() local reputationVisible = ReputationWatchBar:IsVisible() local bottomLeftVisible = MultiBarBottomLeft:IsVisible() local bottomRightVisible = MultiBarBottomRight:IsVisible() local shapeshiftVisible = ShapeshiftBarFrame:IsVisible() local petVisible = PetActionBarFrame:IsVisible() -- move top actionbar if xp or reputation is tracked MultiBarBottomLeft:ClearAllPoints() if expVisible or reputationVisible 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 = bottomLeftVisible and MultiBarBottomLeft or anchor anchor = bottomRightVisible and MultiBarBottomRight or anchor anchor = shapeshiftVisible and ShapeshiftBarFrame or anchor PetActionBarFrame:SetPoint("BOTTOMLEFT", anchor, "TOPLEFT", 20, 4) -- ShapeshiftBarFrame ShapeshiftBarFrame:ClearAllPoints() local offset = 0 local anchor = ActionButton1 anchor = bottomLeftVisible and MultiBarBottomLeft or anchor anchor = bottomRightVisible and MultiBarBottomRight or anchor offset = anchor == ActionButton1 and (expVisible or reputationVisible) 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 = bottomLeftVisible and MultiBarBottomLeft or anchor anchor = bottomRightVisible and MultiBarBottomRight or anchor local pet_offset = petVisible and 40 or 0 local stance_offset = shapeshiftVisible and 40 or 0 CastingBarFrame:SetPoint("BOTTOM", anchor, "TOP", 0, 10 + pet_offset + stance_offset) end hooksecurefunc("UIParent_ManageFramePositions", UpdateActionBarPositions) -- restore frame positions when UIParent becomes visible local restore = CreateFrame("Frame", nil, UIParent) restore:SetScript("OnShow", function() UIParent_ManageFramePositions() end) -- 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