init
This commit is contained in:
@@ -0,0 +1,194 @@
|
||||
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
|
||||
local AB = E:GetModule("ActionBars")
|
||||
|
||||
--Lua functions
|
||||
local _G = _G
|
||||
--WoW API / Variables
|
||||
local CreateFrame = CreateFrame
|
||||
local InCombatLockdown = InCombatLockdown
|
||||
local RegisterStateDriver = RegisterStateDriver
|
||||
|
||||
local MICRO_BUTTONS = {
|
||||
"CharacterMicroButton",
|
||||
"SpellbookMicroButton",
|
||||
"TalentMicroButton",
|
||||
"AchievementMicroButton",
|
||||
"QuestLogMicroButton",
|
||||
"SocialsMicroButton",
|
||||
"PVPMicroButton",
|
||||
"LFDMicroButton",
|
||||
"MainMenuMicroButton",
|
||||
"HelpMicroButton"
|
||||
}
|
||||
|
||||
local function onEnter(button)
|
||||
if AB.db.microbar.mouseover then
|
||||
E:UIFrameFadeIn(ElvUI_MicroBar, 0.2, ElvUI_MicroBar:GetAlpha(), AB.db.microbar.alpha)
|
||||
end
|
||||
|
||||
if button and button ~= ElvUI_MicroBar and button.backdrop then
|
||||
button.backdrop:SetBackdropBorderColor(unpack(E.media.rgbvaluecolor))
|
||||
end
|
||||
end
|
||||
|
||||
local function onLeave(button)
|
||||
if AB.db.microbar.mouseover then
|
||||
E:UIFrameFadeOut(ElvUI_MicroBar, 0.2, ElvUI_MicroBar:GetAlpha(), 0)
|
||||
end
|
||||
|
||||
if button and button ~= ElvUI_MicroBar and button.backdrop then
|
||||
button.backdrop:SetBackdropBorderColor(unpack(E.media.bordercolor))
|
||||
end
|
||||
end
|
||||
|
||||
function AB:HandleMicroButton(button)
|
||||
local pushed = button:GetPushedTexture()
|
||||
local normal = button:GetNormalTexture()
|
||||
local disabled = button:GetDisabledTexture()
|
||||
|
||||
local f = CreateFrame("Frame", nil, button)
|
||||
f:SetFrameLevel(button:GetFrameLevel() - 1)
|
||||
f:SetTemplate("Default", true)
|
||||
f:SetOutside(button)
|
||||
button.backdrop = f
|
||||
|
||||
button:SetParent(ElvUI_MicroBar)
|
||||
button:GetHighlightTexture():Kill()
|
||||
button:HookScript("OnEnter", onEnter)
|
||||
button:HookScript("OnLeave", onLeave)
|
||||
button:SetHitRectInsets(0, 0, 0, 0)
|
||||
button:Show()
|
||||
|
||||
pushed:SetTexCoord(0.17, 0.87, 0.5, 0.908)
|
||||
pushed:SetInside(f)
|
||||
|
||||
normal:SetTexCoord(0.17, 0.87, 0.5, 0.908)
|
||||
normal:SetInside(f)
|
||||
|
||||
if disabled then
|
||||
disabled:SetTexCoord(0.17, 0.87, 0.5, 0.908)
|
||||
disabled:SetInside(f)
|
||||
end
|
||||
end
|
||||
|
||||
function AB:UpdateMicroButtonsParent()
|
||||
if CharacterMicroButton:GetParent() == ElvUI_MicroBar then return end
|
||||
|
||||
for i = 1, #MICRO_BUTTONS do
|
||||
_G[MICRO_BUTTONS[i]]:SetParent(ElvUI_MicroBar)
|
||||
end
|
||||
|
||||
AB:UpdateMicroPositionDimensions()
|
||||
end
|
||||
|
||||
function AB:UpdateMicroBarVisibility()
|
||||
if InCombatLockdown() then
|
||||
AB.NeedsUpdateMicroBarVisibility = true
|
||||
self:RegisterEvent("PLAYER_REGEN_ENABLED")
|
||||
return
|
||||
end
|
||||
|
||||
local visibility = self.db.microbar.visibility
|
||||
if visibility and string.match(visibility, "[\n\r]") then
|
||||
visibility = string.gsub(visibility, "[\n\r]", "")
|
||||
end
|
||||
|
||||
RegisterStateDriver(ElvUI_MicroBar.visibility, "visibility", (self.db.microbar.enabled and visibility) or "hide")
|
||||
end
|
||||
|
||||
function AB:UpdateMicroPositionDimensions()
|
||||
if not ElvUI_MicroBar then return end
|
||||
|
||||
local numRows = 1
|
||||
local prevButton = ElvUI_MicroBar
|
||||
local offset = E:Scale(E.PixelMode and 1 or 3)
|
||||
local spacing = E:Scale(offset + self.db.microbar.buttonSpacing)
|
||||
|
||||
for i = 1, #MICRO_BUTTONS do
|
||||
local button = _G[MICRO_BUTTONS[i]]
|
||||
local lastColumnButton = i - self.db.microbar.buttonsPerRow
|
||||
lastColumnButton = _G[MICRO_BUTTONS[lastColumnButton]]
|
||||
|
||||
button:Size(self.db.microbar.buttonSize, self.db.microbar.buttonSize * 1.4)
|
||||
button:ClearAllPoints()
|
||||
|
||||
if prevButton == ElvUI_MicroBar then
|
||||
button:Point("TOPLEFT", prevButton, "TOPLEFT", offset, -offset)
|
||||
elseif (i - 1) % self.db.microbar.buttonsPerRow == 0 then
|
||||
button:Point("TOP", lastColumnButton, "BOTTOM", 0, -spacing)
|
||||
numRows = numRows + 1
|
||||
else
|
||||
button:Point("LEFT", prevButton, "RIGHT", spacing, 0)
|
||||
end
|
||||
|
||||
prevButton = button
|
||||
end
|
||||
|
||||
if AB.db.microbar.mouseover and not ElvUI_MicroBar:IsMouseOver() then
|
||||
ElvUI_MicroBar:SetAlpha(0)
|
||||
else
|
||||
ElvUI_MicroBar:SetAlpha(self.db.microbar.alpha)
|
||||
end
|
||||
|
||||
AB.MicroWidth = (((CharacterMicroButton:GetWidth() + spacing) * self.db.microbar.buttonsPerRow) - spacing) + (offset * 2)
|
||||
AB.MicroHeight = (((CharacterMicroButton:GetHeight() + spacing) * numRows) - spacing) + (offset * 2)
|
||||
ElvUI_MicroBar:Size(AB.MicroWidth, AB.MicroHeight)
|
||||
|
||||
if ElvUI_MicroBar.mover then
|
||||
if self.db.microbar.enabled then
|
||||
E:EnableMover(ElvUI_MicroBar.mover:GetName())
|
||||
else
|
||||
E:DisableMover(ElvUI_MicroBar.mover:GetName())
|
||||
end
|
||||
end
|
||||
|
||||
self:UpdateMicroBarVisibility()
|
||||
end
|
||||
|
||||
function AB:UpdateMicroButtons()
|
||||
-- PvP Micro Button
|
||||
PVPMicroButtonTexture:Point("TOPLEFT", PVPMicroButton, "TOPLEFT")
|
||||
PVPMicroButtonTexture:Point("BOTTOMRIGHT", PVPMicroButton, "BOTTOMRIGHT")
|
||||
PVPMicroButtonTexture:SetTexture("Interface\\AddOns\\ElvUI\\media\\textures\\PVP-Icons")
|
||||
|
||||
if E.mylevel < PVPMicroButton.minLevel then
|
||||
PVPMicroButtonTexture:SetDesaturated(true)
|
||||
else
|
||||
PVPMicroButtonTexture:SetDesaturated(false)
|
||||
end
|
||||
|
||||
self:UpdateMicroPositionDimensions()
|
||||
end
|
||||
|
||||
function AB:SetupMicroBar()
|
||||
local microBar = CreateFrame("Frame", "ElvUI_MicroBar", E.UIParent)
|
||||
microBar:Point("TOPLEFT", E.UIParent, "TOPLEFT", 4, -48)
|
||||
microBar:SetFrameStrata("LOW")
|
||||
microBar:EnableMouse(true)
|
||||
microBar:SetScript("OnEnter", onEnter)
|
||||
microBar:SetScript("OnLeave", onLeave)
|
||||
|
||||
microBar.visibility = CreateFrame("Frame", nil, E.UIParent, "SecureHandlerStateTemplate")
|
||||
microBar.visibility:SetScript("OnShow", function() microBar:Show() end)
|
||||
microBar.visibility:SetScript("OnHide", function() microBar:Hide() end)
|
||||
|
||||
for i = 1, #MICRO_BUTTONS do
|
||||
self:HandleMicroButton(_G[MICRO_BUTTONS[i]])
|
||||
end
|
||||
|
||||
MicroButtonPortrait:SetInside(CharacterMicroButton.backdrop)
|
||||
|
||||
if E.myfaction == "Alliance" then
|
||||
PVPMicroButtonTexture:SetTexCoord(0.545, 0.935, 0.070, 0.940)
|
||||
else
|
||||
PVPMicroButtonTexture:SetTexCoord(0.100, 0.475, 0.070, 0.940)
|
||||
end
|
||||
|
||||
self:SecureHook("VehicleMenuBar_MoveMicroButtons", "UpdateMicroButtonsParent")
|
||||
self:SecureHook("UpdateMicroButtons")
|
||||
|
||||
self:UpdateMicroPositionDimensions()
|
||||
MainMenuBarPerformanceBar:Kill()
|
||||
|
||||
E:CreateMover(microBar, "MicrobarMover", L["Micro Bar"], nil, nil, nil, "ALL,ACTIONBARS", nil, "actionbar,microbar")
|
||||
end
|
||||
Reference in New Issue
Block a user