initial commit
This commit is contained in:
87
Modules/UnitFrames/Elements/Cutaway.lua
Normal file
87
Modules/UnitFrames/Elements/Cutaway.lua
Normal file
@@ -0,0 +1,87 @@
|
||||
local E, L, V, P, G = unpack(select(2, ...)) --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
|
||||
local UF = E:GetModule('UnitFrames')
|
||||
|
||||
function UF:Construct_Cutaway(frame)
|
||||
local cutaway = {}
|
||||
local frameName = frame:GetName()
|
||||
|
||||
if frame.Power then
|
||||
local powerTexture = frame.Power:GetStatusBarTexture()
|
||||
local cutawayPower = frame.Power.ClipFrame:CreateTexture(frameName .. 'CutawayPower')
|
||||
cutawayPower:Point('TOPLEFT', powerTexture, 'TOPRIGHT')
|
||||
cutawayPower:Point('BOTTOMLEFT', powerTexture, 'BOTTOMRIGHT')
|
||||
cutawayPower:SetTexture(E.media.blankTex)
|
||||
cutaway.Power = cutawayPower
|
||||
end
|
||||
|
||||
local healthTexture = frame.Health:GetStatusBarTexture()
|
||||
local cutawayHealth = frame.Health.ClipFrame:CreateTexture(frameName .. 'CutawayHealth')
|
||||
cutawayHealth:Point('TOPLEFT', healthTexture, 'TOPRIGHT')
|
||||
cutawayHealth:Point('BOTTOMLEFT', healthTexture, 'BOTTOMRIGHT')
|
||||
cutawayHealth:SetTexture(E.media.blankTex)
|
||||
cutaway.Health = cutawayHealth
|
||||
|
||||
return cutaway
|
||||
end
|
||||
|
||||
local cutawayPoints = {
|
||||
[-4] = {'TOPLEFT', 'BOTTOMLEFT'},
|
||||
[-3] = {'TOPRIGHT', 'BOTTOMRIGHT'},
|
||||
[-2] = {'TOPRIGHT', 'TOPLEFT'},
|
||||
[-1] = {'BOTTOMRIGHT', 'BOTTOMLEFT'},
|
||||
[1] = {'TOPLEFT', 'TOPRIGHT'},
|
||||
[2] = {'BOTTOMLEFT', 'BOTTOMRIGHT'},
|
||||
[3] = {'BOTTOMLEFT', 'TOPLEFT'},
|
||||
[4] = {'BOTTOMRIGHT', 'TOPRIGHT'}
|
||||
}
|
||||
|
||||
local DEFAULT_INDEX, VERT_INDEX = 1, 3
|
||||
function UF:GetPoints_Cutaway(db)
|
||||
local vertical = db and db.orientation == 'VERTICAL'
|
||||
local reversed = db and db.reverseFill
|
||||
|
||||
local index = (vertical and VERT_INDEX) or DEFAULT_INDEX
|
||||
local p1 = (reversed and -index) or index
|
||||
local p2 = p1 + ((reversed and -1) or 1)
|
||||
|
||||
return cutawayPoints[p1], cutawayPoints[p2]
|
||||
end
|
||||
|
||||
function UF:Configure_Cutaway(frame)
|
||||
local db = frame.db.cutaway
|
||||
local healthEnabled = db and db.health and db.health.enabled
|
||||
local powerEnabled = db and db.power and db.power.enabled
|
||||
if healthEnabled or powerEnabled then
|
||||
if not frame:IsElementEnabled('Cutaway') then
|
||||
frame:EnableElement('Cutaway')
|
||||
end
|
||||
|
||||
frame.Cutaway:UpdateConfigurationValues(db)
|
||||
local health = frame.Cutaway.Health
|
||||
if health and healthEnabled then
|
||||
local point1, point2 = UF:GetPoints_Cutaway(frame.db.health)
|
||||
local barTexture = frame.Health:GetStatusBarTexture()
|
||||
|
||||
health:ClearAllPoints()
|
||||
health:Point(point1[1], barTexture, point1[2])
|
||||
health:Point(point2[1], barTexture, point2[2])
|
||||
|
||||
frame.Health:PostUpdateColor(frame.unit)
|
||||
end
|
||||
|
||||
local power = frame.Cutaway.Power
|
||||
local powerUsable = powerEnabled and frame.USE_POWERBAR
|
||||
if power and powerUsable then
|
||||
local point1, point2 = UF:GetPoints_Cutaway(frame.db.power)
|
||||
local barTexture = frame.Power:GetStatusBarTexture()
|
||||
|
||||
power:ClearAllPoints()
|
||||
power:Point(point1[1], barTexture, point1[2])
|
||||
power:Point(point2[1], barTexture, point2[2])
|
||||
|
||||
frame.Power:PostUpdateColor()
|
||||
end
|
||||
elseif frame:IsElementEnabled('Cutaway') then
|
||||
frame:DisableElement('Cutaway')
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user