obble / modui_classic

modui: for wow classic
45 stars 20 forks source link

Feature Request: option to stack MultiBarBottomRight instead of expanding #81

Open Xaero252 opened 4 years ago

Xaero252 commented 4 years ago

So that the UI ends up like this: image

wesker3 commented 4 years ago

Did obble leave us ? :(

Xaero252 commented 4 years ago

Did obble leave us ? :(

No. Look at #60 He went on vacation starting last weekend. He'll be back next week.

Andoido1 commented 4 years ago

u can uncheck the "action bars" button to get normal wow bars if thats what u mean

Xaero252 commented 4 years ago

u can uncheck the "action bars" button to get normal wow bars if thats what u mean

If you enable "MultiBarBottomRight" in the interface options of the base game, it makes this interface wider, splits the old bottomright bar into two 6 buttons rows and tacks them onto the side of the existing 12 button rows making a very wide 18 button row on top and bottom. If you see above, this stacks that 3rd row of buttons on the ones below them. ImprovedBlizzardUI does this on retail, as well as many other addons. I also have a code snippet that does this, and doesn't cause taint - but it isn't very pretty. I'm sure that obble is a more capable addon/lua dev than I hence the request ;-)

obble commented 4 years ago

hello - yeah i'll look at adding this as an option.

Xaero252 commented 4 years ago

Here's the block of code I have that "does this" on BFA (I cheat and hide the art frame):

local f = CreateFrame("Frame", nil, UIParent)
f:RegisterEvent("PLAYER_ENTERING_WORLD")
f:SetScript("OnEvent", function(self, event)
    _, width, height = GetAtlasInfo("hud-MainMenuBar-small");
    MainMenuBar:SetSize(width,height); 
    ActionBarUpButton:Hide()
    ActionBarDownButton:Hide()
    MainMenuBar:SetMovable(true)
    MainMenuBar:SetUserPlaced(true)
    MainMenuBar:SetMovable(false)
    ActionButton1:ClearAllPoints()
    ActionButton1:SetPoint("BOTTOMLEFT",UIParent,"BOTTOM",-(MultiBarBottomLeft:GetWidth()/2)+1,6)
    MultiBarBottomLeftButton1:ClearAllPoints()
    MultiBarBottomLeftButton1:SetPoint("BOTTOMLEFT",ActionButton1,"TOPLEFT",0,6)
    MultiBarBottomLeftButton1.SetPoint = function() end
    MultiBarBottomLeft.SetPoint = function() end
    MultiBarBottomRightButton1:ClearAllPoints()
    MultiBarBottomRightButton1:SetPoint("BOTTOMLEFT",MultiBarBottomLeftButton1,"TOPLEFT",0,6)
    MultiBarBottomRightButton1.SetPoint = function() end
    MultiBarBottomRight.SetPoint = function() end
    MultiBarBottomRightButton7:ClearAllPoints()
    MultiBarBottomRightButton7:SetPoint("LEFT",MultiBarBottomRightButton6,"RIGHT",6,0)
    MultiBarBottomRightButton7.SetPoint = function() end 
    StatusTrackingBarManager:Hide()
    f:UnregisterAllEvents()
end)

You'll note that I first use SetPoint to move the second half of the bar where it would have been, and then remove then create a null function to remove that SetPoint call. This is because the BlizzardInterfaceCode CONSTANTLY tries to update the action bar layout. Every time you basically do anything it tries to snap back. You could try hookscript on the SetPoint call for the frame - but you'll get taint, and it doesn't work in combat. This way the Blizzard Interface Code is still able to call SetPoint (it's not protected, so it doesn't matter that we changed it's contents) and is none the wiser to it.

Also, this block of code creates a fairly tightly packed, centered 3-row action bar. So it would need to be adjusted.

EDIT: I need to hurry up and ding 60 as I think the MainMenuBar:SetSize call based on the AtlasInfo will also cause the UI to use the narrow XP bar rather than the wide one; which is cleaner than hiding the tracking interface altogether (which is the currently proposed fix)