119 lines
3.4 KiB
Lua
119 lines
3.4 KiB
Lua
local E, L, V, P, G = unpack(select(2, ...))
|
|
local NP = E:GetModule("NamePlates")
|
|
local LSM = E.Libs.LSM
|
|
|
|
--Lua functions
|
|
--WoW API / Variables
|
|
local CreateFrame = CreateFrame
|
|
local GetComboPoints = GetComboPoints
|
|
local MAX_COMBO_POINTS = MAX_COMBO_POINTS
|
|
|
|
function NP:Update_CPoints(frame)
|
|
if frame.UnitType == "FRIENDLY_PLAYER" or frame.UnitType == "FRIENDLY_NPC" then return end
|
|
if not self.db.units.TARGET.comboPoints.enable then return end
|
|
|
|
local numPoints
|
|
if frame.isTarget then
|
|
numPoints = GetComboPoints("player", "target")
|
|
end
|
|
|
|
if numPoints and numPoints > 0 then
|
|
frame.CPoints:Show()
|
|
|
|
for i = 1, MAX_COMBO_POINTS do
|
|
if i <= numPoints then
|
|
frame.CPoints[i]:Show()
|
|
else
|
|
frame.CPoints[i]:Hide()
|
|
end
|
|
end
|
|
else
|
|
frame.CPoints:Hide()
|
|
end
|
|
end
|
|
|
|
function NP:Configure_CPointsScale(frame, scale, noPlayAnimation)
|
|
if frame.UnitType == "FRIENDLY_PLAYER" or frame.UnitType == "FRIENDLY_NPC" then return end
|
|
local db = self.db.units.TARGET.comboPoints
|
|
if not db.enable then return end
|
|
|
|
if noPlayAnimation then
|
|
frame.CPoints:SetWidth(((db.width * 5) + (db.spacing * 4)) * scale)
|
|
frame.CPoints:SetHeight(db.height * scale)
|
|
else
|
|
if frame.CPoints.scale:IsPlaying() then
|
|
frame.CPoints.scale:Stop()
|
|
end
|
|
|
|
frame.CPoints.scale.width:SetChange(((db.width * 5) + (db.spacing * 4)) * scale)
|
|
frame.CPoints.scale.height:SetChange(db.height * scale)
|
|
frame.CPoints.scale:Play()
|
|
end
|
|
end
|
|
|
|
function NP:Configure_CPoints(frame, configuring)
|
|
if frame.UnitType == "FRIENDLY_PLAYER" or frame.UnitType == "FRIENDLY_NPC" then return end
|
|
local db = self.db.units.TARGET.comboPoints
|
|
if not db.enable then return end
|
|
|
|
local comboBar = frame.CPoints
|
|
local healthShown = self.db.units[frame.UnitType].health.enable or (frame.isTarget and self.db.alwaysShowTargetHealth)
|
|
|
|
comboBar:ClearAllPoints()
|
|
if healthShown then
|
|
comboBar:Point("CENTER", frame.Health, "BOTTOM", db.xOffset, db.yOffset)
|
|
else
|
|
comboBar:Point("CENTER", frame, "TOP", db.xOffset, db.yOffset)
|
|
end
|
|
|
|
for i = 1, MAX_COMBO_POINTS do
|
|
local comboPoint = comboBar[i]
|
|
comboPoint.backdrop:SetTexture(LSM:Fetch("statusbar", self.db.statusbar))
|
|
local color = self.db.colors.comboPoints[i]
|
|
comboPoint.backdrop:SetVertexColor(color.r, color.g, color.b)
|
|
|
|
comboPoint:SetWidth(db.width)
|
|
|
|
comboPoint:ClearAllPoints()
|
|
if i == 1 then
|
|
comboPoint:SetPoint("TOPLEFT")
|
|
comboPoint:SetPoint("BOTTOMLEFT")
|
|
else
|
|
comboPoint:SetPoint("TOPLEFT", comboBar[i - 1], "TOPRIGHT", db.spacing, 0)
|
|
comboPoint:SetPoint("BOTTOMLEFT", comboBar[i - 1], "BOTTOMRIGHT")
|
|
end
|
|
end
|
|
|
|
comboBar.spacing = db.spacing * (MAX_COMBO_POINTS - 1)
|
|
|
|
if configuring then
|
|
self:Configure_CPointsScale(frame, frame.currentScale or 1, configuring)
|
|
end
|
|
end
|
|
|
|
local function CPoints_OnSizeChanged(self, width)
|
|
width = width - self.spacing
|
|
for i = 1, MAX_COMBO_POINTS do
|
|
self[i]:SetWidth(width * 0.2)
|
|
end
|
|
end
|
|
|
|
function NP:Construct_CPoints(parent)
|
|
local comboBar = CreateFrame("Frame", "$parentComboPoints", parent)
|
|
comboBar:Hide()
|
|
|
|
comboBar.scale = CreateAnimationGroup(comboBar)
|
|
comboBar.scale.width = comboBar.scale:CreateAnimation("Width")
|
|
comboBar.scale.width:SetDuration(0.2)
|
|
comboBar.scale.height = comboBar.scale:CreateAnimation("Height")
|
|
comboBar.scale.height:SetDuration(0.2)
|
|
|
|
comboBar:SetScript("OnSizeChanged", CPoints_OnSizeChanged)
|
|
|
|
for i = 1, MAX_COMBO_POINTS do
|
|
comboBar[i] = CreateFrame("Frame", "$parentComboPoint"..i, comboBar)
|
|
self:StyleFrame(comboBar[i])
|
|
end
|
|
|
|
return comboBar
|
|
end |