Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
ShestakUI\Modules\ActionBars\BarStance.lua
local T, C, L, _ = unpack(select(2, ...))
if C.actionbar.enable ~= true then return end
----------------------------------------------------------------------------------------
-- StanceBar(by Tukz)
----------------------------------------------------------------------------------------
local ShiftHolder = CreateFrame("Frame", "ShiftHolder", T_PetBattleFrameHider)
if C.actionbar.stancebar_horizontal == true then
ShiftHolder:SetPoint(unpack(C.position.stance_bar))
ShiftHolder:SetWidth((C.actionbar.button_size * 7) + (C.actionbar.button_space * 6))
ShiftHolder:SetHeight(C.actionbar.button_size)
else
if (PetActionBarFrame:IsShown() or PetHolder) and C.actionbar.petbar_horizontal ~= true then
ShiftHolder:SetPoint("RIGHT", "PetHolder", "LEFT", -C.actionbar.button_space, (C.actionbar.button_size / 2) + 1)
else
ShiftHolder:SetPoint("RIGHT", "RightActionBarAnchor", "LEFT", -C.actionbar.button_space, (C.actionbar.button_size / 2) + 1)
end
ShiftHolder:SetWidth(C.actionbar.button_size)
ShiftHolder:SetHeight((C.actionbar.button_size * 7) + (C.actionbar.button_space * 6))
end
-- Hide bar
if C.actionbar.stancebar_hide then StanceBarFrame:SetParent(ShiftHolder) ShiftHolder:Hide() return end
-- Create bar
local bar = CreateFrame("Frame", "UIShapeShift", ShiftHolder, "SecureHandlerStateTemplate")
bar:ClearAllPoints()
bar:SetAllPoints(ShiftHolder)
local States = {
["DEATHKNIGHT"] = "show",
["DRUID"] = "show",
["MONK"] = "show",
["PALADIN"] = "show",
["PRIEST"] = "show",
["ROGUE"] = "show",
["WARLOCK"] = "show",
["WARRIOR"] = "show",
}
bar:RegisterEvent("PLAYER_LOGIN")
bar:RegisterEvent("PLAYER_ENTERING_WORLD")
bar:RegisterEvent("UPDATE_SHAPESHIFT_FORMS")
bar:RegisterEvent("UPDATE_SHAPESHIFT_USABLE")
bar:RegisterEvent("UPDATE_SHAPESHIFT_COOLDOWN")
bar:RegisterEvent("ACTIONBAR_PAGE_CHANGED")
bar:SetScript("OnEvent", function(self, event)
if event == "PLAYER_LOGIN" then
for i = 1, NUM_STANCE_SLOTS do
local button = _G["StanceButton"..i]
button:ClearAllPoints()
button:SetParent(self)
if i == 1 then
if C.actionbar.stancebar_horizontal == true then
button:SetPoint("BOTTOMLEFT", ShiftHolder, "BOTTOMLEFT", 0, 0)
else
button:SetPoint("TOPLEFT", ShiftHolder, "TOPLEFT", 0, 0)
end
else
local previous = _G["StanceButton"..i-1]
if C.actionbar.stancebar_horizontal == true then
button:SetPoint("LEFT", previous, "RIGHT", C.actionbar.button_space, 0)
else
button:SetPoint("TOP", previous, "BOTTOM", 0, -C.actionbar.button_space)
end
end
local icon = GetShapeshiftFormInfo(i)
if icon then
button:Show()
else
button:Hide()
end
end
RegisterStateDriver(self, "visibility", States[T.class] or "hide")
local function moveStance()
if not InCombatLockdown() then
if C.actionbar.stancebar_horizontal == true then
StanceButton1:SetPoint("BOTTOMLEFT", ShiftHolder, "BOTTOMLEFT", 0, 0)
else
StanceButton1:SetPoint("TOPLEFT", ShiftHolder, "TOPLEFT", 0, 0)
end
end
end
hooksecurefunc("StanceBar_Update", moveStance)
elseif event == "UPDATE_SHAPESHIFT_FORMS" then
if InCombatLockdown() then return end
for i = 1, NUM_STANCE_SLOTS do
local button = _G["StanceButton"..i]
local icon = GetShapeshiftFormInfo(i)
if icon then
button:Show()
else
button:Hide()
end
end
T.ShiftBarUpdate()
elseif event == "PLAYER_ENTERING_WORLD" then
T.StyleShift()
else
T.ShiftBarUpdate()
end
end)
-- Mouseover bar
if C.actionbar.rightbars_mouseover == true and C.actionbar.stancebar_horizontal == false then
ShapeShiftBarAnchor:SetAlpha(0)
ShapeShiftBarAnchor:SetScript("OnEnter", function() RightBarMouseOver(1) end)
ShapeShiftBarAnchor:SetScript("OnLeave", function() if not HoverBind.enabled then RightBarMouseOver(0) end end)
for i = 1, NUM_STANCE_SLOTS do
local b = _G["StanceButton"..i]
b:SetAlpha(0)
b:HookScript("OnEnter", function() RightBarMouseOver(1) end)
b:HookScript("OnLeave", function() if not HoverBind.enabled then RightBarMouseOver(0) end end)
end
end
if C.actionbar.stancebar_mouseover == true and C.actionbar.stancebar_horizontal == true then
ShapeShiftBarAnchor:SetAlpha(0)
ShapeShiftBarAnchor:SetScript("OnEnter", function() StanceBarMouseOver(1) end)
ShapeShiftBarAnchor:SetScript("OnLeave", function() if not HoverBind.enabled then StanceBarMouseOver(0) end end)
for i = 1, NUM_STANCE_SLOTS do
local b = _G["StanceButton"..i]
b:SetAlpha(0)
b:HookScript("OnEnter", function() StanceBarMouseOver(1) end)
b:HookScript("OnLeave", function() if not HoverBind.enabled then StanceBarMouseOver(0) end end)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.