Quantcast
--[[
##############################################################################
_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_       #
 ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__      #
  __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____     #
   ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____    #
    ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____   #
     _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____  #
      __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ #
       _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_#
        ___\///////////___________\///___________\/////////_____\///////////_#
##############################################################################
S U P E R - V I L L A I N - U I   By: Munglunch                              #
##############################################################################
--]]
local SuperVillain, L = unpack(select(2, ...));
local MOD = SuperVillain.Registry:Expose('SVUnit');
local _, ns = ...
local oUF_SuperVillain = ns.oUF
--[[ MUNGLUNCH's FASTER ASSERT FUNCTION ]]--
local assert = enforce;
assert(oUF_SuperVillain, "SVUI was unable to locate oUF.")
local ceil,tinsert = math.ceil,table.insert
--[[
##########################################################
BUILD FUNCTION
##########################################################
]]--
function MOD.Construct:pet()
	MOD:SetActionPanel(self, "pet")
	self.Health = MOD:CreateHealthBar(self, true)
	self.Health.frequentUpdates = true;
	self.HealPrediction = MOD:CreateHealPrediction(self)
	self.Power = MOD:CreatePowerBar(self, true)
	self.Power.frequentUpdates = false;
	MOD:CreatePortrait(self, true)
	self.Castbar = MOD:CreateCastbar(self, false, nil, false)
	self.Buffs = MOD:CreateBuffs(self, "pet")
	self.Debuffs = MOD:CreateDebuffs(self, "pet")
	self.AuraWatch = MOD:CreateAuraWatch(self, "pet")
	self.RaidIcon = MOD:CreateRaidIcon(self)
	self.Range = { insideAlpha = 1, outsideAlpha = 1 }
	self:Point("BOTTOM", SuperVillain.UIParent, "BOTTOM", 0, 182)
	SuperVillain:SetSVMovable(self, self:GetName().."_MOVE", L["Pet Frame"], nil, nil, nil, "ALL, SOLO")
end

function MOD.Construct:pettarget()
	MOD:SetActionPanel(self, "pettarget")
	self.Health = MOD:CreateHealthBar(self, true)
	self.Power = MOD:CreatePowerBar(self, true)
	self.Buffs = MOD:CreateBuffs(self, "pettarget")
	self.Debuffs = MOD:CreateDebuffs(self, "pettarget")
	self.Range = { insideAlpha = 1, outsideAlpha = 1 }
	self:Point("BOTTOM", SVUI_Pet, "TOP", 0, 7)
	SuperVillain:SetSVMovable(self, self:GetName().."_MOVE", L["PetTarget Frame"], nil, -7, nil, "ALL, SOLO")
end
--[[
##########################################################
UPDATE
##########################################################
]]--
function MOD.FrameUpdate:pet()
	local db = MOD.db["pet"]
	local UNIT_WIDTH = db.width;
	local UNIT_HEIGHT = db.height;
	self:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
	self.colors = oUF_SuperVillain.colors;
	self:Size(UNIT_WIDTH, UNIT_HEIGHT)
	_G[self:GetName().."_MOVE"]:Size(self:GetSize())
	MOD:RefreshUnitLayout(self, "pet")
	do
		if SVUI_Player and not InCombatLockdown()then
			self:SetParent(SVUI_Player)
		end
	end
	MOD:UpdateAuraWatch(self)
	self:UpdateAllElements()
end

function MOD.FrameUpdate:pettarget()
	local db = MOD.db["pettarget"]
	local UNIT_WIDTH = db.width;
	local UNIT_HEIGHT = db.height;
	self:RegisterForClicks(MOD.db.fastClickTarget and "AnyDown" or "AnyUp")
	self.colors = oUF_SuperVillain.colors;
	self:Size(UNIT_WIDTH, UNIT_HEIGHT)
	_G[self:GetName().."_MOVE"]:Size(self:GetSize())
	MOD:RefreshUnitLayout(self, "pettarget")
	do
		if SVUI_Pet and not InCombatLockdown()then
			self:SetParent(SVUI_Pet)
		end
	end
	self:UpdateAllElements()
end