Quantcast
--[[
##############################################################################
_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
 ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
        ___\///////////___________\///___________\/////////_____\///////////_#
##############################################################################
S U P E R - V I L L A I N - U I   By: Munglunch                              #
##############################################################################
##########################################################
LOCALIZED LUA FUNCTIONS
##########################################################
]]--
--[[ GLOBALS ]]--
local _G = _G;
local unpack 	= _G.unpack;
local select 	= _G.select;
--[[
##########################################################
GET ADDON DATA
##########################################################
]]--
local SuperVillain, L = unpack(SVUI);
local MOD = SuperVillain.Registry:Expose('SVStyle');
local NOOP = function() end;
--[[
##########################################################
BIGWIGS
##########################################################
]]--
local BigWigsLoaded;
local function StyleBigWigs(event, addon)
	local ButtonSize = 20
	local FreeBG = {}
	local function freestyle(bar)
		local bg = bar:Get("bigwigs:elvui:barbg")
		if bg then
			bg:ClearAllPoints()
			bg:SetParent(SVUI[1].UIParent)
			bg:Hide()
			FreeBG[#FreeBG + 1] = bg
		end

		local ibg = bar:Get("bigwigs:elvui:iconbg")
		if ibg then
			ibg:ClearAllPoints()
			ibg:SetParent(SVUI[1].UIParent)
			ibg:Hide()
			FreeBG[#FreeBG + 1] = ibg
		end
		bar.candyBarIconFrame.SetWidth = bar.candyBarIconFrame.OldSetWidth
		bar.candyBarBar.SetPoint = bar.candyBarBar.OldSetPoint
		bar.candyBarIconFrame:ClearAllPoints()
		bar.candyBarIconFrame:SetPoint("TOPLEFT")
		bar.candyBarIconFrame:SetPoint("BOTTOMLEFT")
		bar.candyBarIconFrame:SetTexCoord(0.1,0.9,0.1,0.9)
		bar.candyBarBar:ClearAllPoints()
		bar.candyBarBar:SetPoint("TOPRIGHT")
		bar.candyBarBar:SetPoint("BOTTOMRIGHT")
		bar.candyBarBackground:SetAllPoints()
		bar.candyBarDuration:ClearAllPoints()
		bar.candyBarDuration:SetPoint("RIGHT", bar.candyBarBar, "RIGHT", -2, 0)
		bar.candyBarLabel:ClearAllPoints()
		bar.candyBarLabel:SetPoint("LEFT", bar.candyBarBar, "LEFT", 2, 0)
		bar.candyBarLabel:SetPoint("RIGHT", bar.candyBarBar, "RIGHT", -2, 0)
	end
	local function applystyle(bar)
		bar:Height(ButtonSize)
		local bg = nil
		if #FreeBG > 0 then
			bg = tremove(FreeBG)
		else
			bg = CreateFrame("Frame")
		end
		bg:SetFixedPanelTemplate('Transparent', true)
		bg:SetParent(bar)
		bg:WrapOuter(bar)
		bg:SetFrameLevel(bar:GetFrameLevel() - 1)
		bg:SetFrameStrata(bar:GetFrameStrata())
		bg:Show()
		bar:Set("bigwigs:elvui:barbg", bg)
		local ibg = nil
		if bar.candyBarIconFrame:GetTexture() then
			if #FreeBG > 0 then
				ibg = tremove(FreeBG)
			else
				ibg = CreateFrame("Frame")
			end
			ibg:SetParent(bar)
			ibg:SetFixedPanelTemplate('Transparent', true)
			ibg:SetBackdropColor(0, 0, 0, 0)
			ibg:WrapOuter(bar.candyBarIconFrame)
			ibg:SetFrameLevel(bar:GetFrameLevel() - 1)
			ibg:SetFrameStrata(bar:GetFrameStrata())
			ibg:Show()
			bar:Set("bigwigs:elvui:iconbg", ibg)
		end
		bar.candyBarLabel:SetJustifyH("LEFT")
		bar.candyBarLabel:ClearAllPoints()
		bar.candyBarDuration:SetJustifyH("RIGHT")
		bar.candyBarDuration:ClearAllPoints()
		bar.candyBarLabel:Point("LEFT", bar, "LEFT", 4, 0)
		bar.candyBarDuration:Point("RIGHT", bar, "RIGHT", -4, 0)
		bar.candyBarBar:ClearAllPoints()
		bar.candyBarBar:SetAllPoints(bar)
		bar.candyBarBar.OldSetPoint = bar.candyBarBar.SetPoint
		bar.candyBarBar.SetPoint = NOOP
		bar.candyBarIconFrame.OldSetWidth = bar.candyBarIconFrame.SetWidth
		bar.candyBarIconFrame.SetWidth = NOOP
		bar.candyBarIconFrame:ClearAllPoints()
		bar.candyBarIconFrame:Point("BOTTOMRIGHT", bar, "BOTTOMLEFT", -1, 0)
		bar.candyBarIconFrame:SetSize(ButtonSize, ButtonSize)
		bar.candyBarIconFrame:SetTexCoord(0.1,0.9,0.1,0.9)
	end
	if (IsAddOnLoaded('BigWigs_Plugins') or event == "ADDON_LOADED" and addon == 'BigWigs_Plugins') then
		local BigWigsBars = BigWigs:GetPlugin('Bars')
		if BigWigsLoaded then return end
		BigWigsLoaded = true
		BigWigsBars:RegisterBarStyle("SVUI", {
			apiVersion = 1,
			version = 1,
			GetSpacing = function(bar)
				return 4
			end,
			ApplyStyle = applystyle,
			BarStopped = freestyle,
			GetStyleName = function() return "SVUI" end,
		})
		BigWigsBars:SetBarStyle("SVUI")
		MOD:SafeEventRemoval("BigWigs", "ADDON_LOADED")
		MOD:SafeEventRemoval("BigWigs", "PLAYER_ENTERING_WORLD")
	end
end
MOD:SaveAddonStyle("BigWigs", StyleBigWigs, "ADDON_LOADED")