mirror of
https://github.com/OldManAlpha/Puppeteer.git
synced 2025-11-28 23:48:35 +00:00
420 lines
14 KiB
Lua
420 lines
14 KiB
Lua
PTProfileManager = {}
|
|
|
|
PTUtil.SetEnvironment(PTProfileManager)
|
|
local _G = getfenv(0)
|
|
|
|
local util = PTUtil
|
|
|
|
-- Profiles that have not had style overrides applied
|
|
DefaultProfiles = {}
|
|
-- Profiles that have had style overrides applied
|
|
Profiles = {}
|
|
|
|
DefaultProfileOrder = {
|
|
"Default", "Default (Short Bar)", "Small", "Very Small", "Very Small (Horizontal)", "Long", "Long (Small)",
|
|
"Long (Integrated)", "Legacy"
|
|
}
|
|
DefaultProfileOrder = util.ToSet(DefaultProfileOrder, true)
|
|
|
|
function GetProfile(name)
|
|
return Profiles[name] or DefaultProfiles[name]
|
|
end
|
|
|
|
function GetDefaultProfile(name)
|
|
return DefaultProfiles[name]
|
|
end
|
|
|
|
function GetProfileNames()
|
|
local names = util.ToArray(DefaultProfiles)
|
|
util.RemoveElement(names, "Base")
|
|
table.sort(names, function(a, b)
|
|
return (DefaultProfileOrder[a] or 1000) < (DefaultProfileOrder[b] or 1000)
|
|
end)
|
|
return names
|
|
end
|
|
|
|
function CreateProfile(name, baseName, useDefault)
|
|
local profileGetter = (useDefault or useDefault == nil) and GetDefaultProfile or GetProfile
|
|
DefaultProfiles[name] = PTUIProfile:New(profileGetter(baseName or "Default"))
|
|
return DefaultProfiles[name]
|
|
end
|
|
|
|
function ApplyOverrides(profileName)
|
|
local overrides = PTOptions.StyleOverrides[profileName]
|
|
local profile = GetDefaultProfile(profileName)
|
|
if overrides and profile then
|
|
profile = PTUIProfile:New(profile)
|
|
Profiles[profileName] = profile
|
|
for attribute, value in pairs(overrides) do
|
|
if type(value) ~= "table" then
|
|
profile[attribute] = value
|
|
else
|
|
for k, v in pairs(value) do
|
|
profile[attribute][k] = v
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function InitializeDefaultProfiles()
|
|
PTUIProfile.SetDefaults()
|
|
|
|
-- Master base profile
|
|
DefaultProfiles["Base"] = PTUIProfile:New()
|
|
|
|
do
|
|
local profile = CreateProfile("Long", "Base")
|
|
profile.RaidMarkIcon.AlignmentH = "CENTER"
|
|
profile.RaidMarkIcon.PaddingV = 0
|
|
profile.RaidMarkIcon.OffsetY = 5
|
|
profile.RaidMarkIcon.Width = 14
|
|
profile.RaidMarkIcon.Height = 14
|
|
|
|
profile.RoleIcon.AlignmentH = "LEFT"
|
|
profile.RoleIcon.PaddingV = 0
|
|
profile.RoleIcon.OffsetY = 5
|
|
profile.RoleIcon.OffsetX = -5
|
|
|
|
profile.PVPIcon.OffsetY = -5
|
|
end
|
|
|
|
|
|
|
|
do
|
|
local profile = CreateProfile("Long (Small)", "Base")
|
|
|
|
profile.Width = 120
|
|
profile.HealthBarHeight = 16
|
|
profile.PowerBarHeight = 8
|
|
profile.PaddingBottom = 16
|
|
profile.AuraTracker.Height = 16
|
|
profile.NameText.FontSize = 10
|
|
profile.NameText.MaxWidth = 80
|
|
local healthTexts = profile.HealthTexts
|
|
healthTexts.Normal.FontSize = 10
|
|
healthTexts.WithMissing.FontSize = 8
|
|
healthTexts.Missing.FontSize = 9
|
|
profile.PowerText.FontSize = 8
|
|
|
|
profile.RaidMarkIcon.Width = 12
|
|
profile.RaidMarkIcon.Height = 12
|
|
profile.RaidMarkIcon.AlignmentH = "CENTER"
|
|
profile.RaidMarkIcon.PaddingV = 0
|
|
profile.RaidMarkIcon.OffsetY = 5
|
|
|
|
profile.RoleIcon.Width = 12
|
|
profile.RoleIcon.Height = 12
|
|
profile.RoleIcon.AlignmentH = "LEFT"
|
|
profile.RoleIcon.PaddingV = 0
|
|
profile.RoleIcon.OffsetY = 5
|
|
profile.RoleIcon.OffsetX = -4
|
|
|
|
profile.PVPIcon.OffsetY = -5
|
|
end
|
|
|
|
do
|
|
local profile = CreateProfile("Long (Integrated)", "Base")
|
|
|
|
profile.HealthBarHeight = 35
|
|
profile.PaddingBottom = 0
|
|
profile.AuraTracker.Height = 17
|
|
profile.AuraTracker.Width = 105
|
|
profile.AuraTracker.Anchor = "Health Bar"
|
|
profile.AuraTracker.AlignmentH = "LEFT"
|
|
profile.TrackedAurasAlignment = "BOTTOM"
|
|
|
|
profile.NameText.AlignmentV = "TOP"
|
|
local healthTexts = profile.HealthTexts
|
|
healthTexts.Normal.AlignmentV = "TOP"
|
|
healthTexts.WithMissing = util.CloneTable(healthTexts.Normal, true)
|
|
healthTexts.Missing.PaddingV = 4
|
|
|
|
profile.RaidMarkIcon.AlignmentH = "CENTER"
|
|
profile.RaidMarkIcon.PaddingV = 0
|
|
profile.RaidMarkIcon.OffsetY = 5
|
|
profile.RaidMarkIcon.Width = 14
|
|
profile.RaidMarkIcon.Height = 14
|
|
|
|
profile.RoleIcon.AlignmentH = "LEFT"
|
|
profile.RoleIcon.PaddingV = 0
|
|
profile.RoleIcon.OffsetY = 6
|
|
profile.RoleIcon.OffsetX = -5
|
|
|
|
profile.PVPIcon.OffsetY = -5
|
|
end
|
|
|
|
do
|
|
local profile = CreateProfile("Small", "Base")
|
|
|
|
profile.Width = 67
|
|
profile.HealthBarHeight = 36
|
|
profile.NameText.FontSize = 11
|
|
profile.NameText.AlignmentH = "CENTER"
|
|
profile.NameText.AlignmentV = "TOP"
|
|
profile.NameText.PaddingV = 1
|
|
profile.NameText.MaxWidth = 47
|
|
profile.PowerBarHeight = 6
|
|
profile.PaddingBottom = 0
|
|
profile.AuraTracker.Height = 12
|
|
profile.AuraTracker.Anchor = "Health Bar"
|
|
profile.AuraTracker.AlignmentH = "LEFT"
|
|
profile.TrackedAurasAlignment = "BOTTOM"
|
|
profile.TrackedAurasSpacing = 1
|
|
|
|
local healthTexts = profile.HealthTexts
|
|
healthTexts.Normal.FontSize = 9
|
|
healthTexts.Normal.AlignmentH = "CENTER"
|
|
healthTexts.Normal.AlignmentV = "CENTER"
|
|
healthTexts.Normal.OffsetY = 2
|
|
healthTexts.WithMissing.FontSize = 9
|
|
healthTexts.WithMissing.AlignmentH = "LEFT"
|
|
healthTexts.WithMissing.AlignmentV = "CENTER"
|
|
healthTexts.WithMissing.OffsetY = 2
|
|
healthTexts.Missing.FontSize = 9
|
|
healthTexts.Missing.AlignmentH = "RIGHT"
|
|
healthTexts.Missing.AlignmentV = "CENTER"
|
|
healthTexts.Missing.OffsetY = 2
|
|
|
|
profile.IncomingHealDisplay = "Overheal"
|
|
profile.IncomingHealText.AlignmentH = "RIGHT"
|
|
profile.IncomingHealText.AlignmentV = "CENTER"
|
|
profile.IncomingHealText.OffsetY = -6
|
|
profile.IncomingHealText.PaddingH = 2
|
|
profile.IncomingHealText.FontSize = 7
|
|
|
|
profile.RangeText.AlignmentV = "CENTER"
|
|
profile.RangeText.OffsetY = -6
|
|
profile.RangeText.FontSize = 8
|
|
profile.LineOfSightIcon.Width = 20
|
|
profile.LineOfSightIcon.Height = 20
|
|
profile.LineOfSightIcon.Anchor = "Health Bar"
|
|
profile.LineOfSightIcon.Opacity = 70
|
|
profile.RoleIcon.Width = 12
|
|
profile.RoleIcon.Height = 12
|
|
profile.RaidMarkIcon.Width = 12
|
|
profile.RaidMarkIcon.Height = 12
|
|
profile.RaidMarkIcon.PaddingV = 0
|
|
profile.HealthDisplay = "Health"
|
|
profile.MissingHealthDisplay = "-Health"
|
|
profile.PowerDisplay = "Hidden"
|
|
profile.PowerText.FontSize = 8
|
|
end
|
|
|
|
do
|
|
local profile = CreateProfile("Very Small", "Base")
|
|
|
|
profile.Width = 50
|
|
profile.HealthBarHeight = 29
|
|
profile.NameText.FontSize = 9
|
|
profile.NameText.AlignmentH = "LEFT"
|
|
profile.NameText.AlignmentV = "TOP"
|
|
profile.NameText.PaddingV = 1
|
|
profile.NameText.OffsetX = 6
|
|
profile.NameText.MaxWidth = 34
|
|
profile.NameText.Color = "Class"
|
|
profile.PowerBarHeight = 5
|
|
profile.PaddingBottom = 0
|
|
profile.AuraTracker.Height = 11
|
|
profile.AuraTracker.Anchor = "Health Bar"
|
|
profile.AuraTracker.AlignmentH = "LEFT"
|
|
profile.TrackedAurasAlignment = "BOTTOM"
|
|
profile.TrackedAurasSpacing = 1
|
|
|
|
local healthTexts = profile.HealthTexts
|
|
healthTexts.Normal.FontSize = 8
|
|
healthTexts.Normal.AlignmentH = "CENTER"
|
|
healthTexts.Normal.AlignmentV = "CENTER"
|
|
healthTexts.Normal.OffsetY = 1
|
|
|
|
profile.IncomingHealDisplay = "Hidden"
|
|
profile.IncomingHealText.AlignmentH = "RIGHT"
|
|
profile.IncomingHealText.AlignmentV = "CENTER"
|
|
profile.IncomingHealText.OffsetY = -6
|
|
profile.IncomingHealText.PaddingH = 2
|
|
profile.IncomingHealText.FontSize = 7
|
|
|
|
profile.RangeText.AlignmentV = "CENTER"
|
|
profile.RangeText.OffsetY = -6
|
|
profile.RangeText.FontSize = 7
|
|
profile.LineOfSightIcon.Width = 16
|
|
profile.LineOfSightIcon.Height = 16
|
|
profile.LineOfSightIcon.Anchor = "Health Bar"
|
|
profile.LineOfSightIcon.Opacity = 70
|
|
profile.RoleIcon.Width = 10
|
|
profile.RoleIcon.Height = 10
|
|
profile.RaidMarkIcon.AlignmentH = "CENTER"
|
|
profile.RaidMarkIcon.PaddingV = 0
|
|
profile.RaidMarkIcon.OffsetY = 4
|
|
profile.RaidMarkIcon.Width = 10
|
|
profile.RaidMarkIcon.Height = 10
|
|
profile.HealthDisplay = "Health"
|
|
profile.MissingHealthDisplay = "Hidden"
|
|
profile.PowerDisplay = "Hidden"
|
|
profile.PowerText.FontSize = 8
|
|
profile.Orientation = "Vertical"
|
|
|
|
profile.PVPIcon.Width = 12
|
|
profile.PVPIcon.Height = 12
|
|
end
|
|
|
|
do
|
|
local profile = CreateProfile("Very Small (Horizontal)", "Very Small")
|
|
profile.Orientation = "Horizontal"
|
|
end
|
|
|
|
do
|
|
local profile = CreateProfile("Default", "Base")
|
|
|
|
profile.Width = 100
|
|
profile.HealthBarHeight = 36
|
|
profile.PowerBarHeight = 9
|
|
profile.NameText.FontSize = 11
|
|
profile.NameText.AlignmentH = "CENTER"
|
|
profile.NameText.AlignmentV = "TOP"
|
|
profile.NameText.PaddingV = 1
|
|
profile.NameText.MaxWidth = 80
|
|
profile.PaddingBottom = 0
|
|
profile.AuraTracker.Height = 14
|
|
profile.AuraTracker.Anchor = "Health Bar"
|
|
profile.AuraTracker.AlignmentH = "LEFT"
|
|
profile.TrackedAurasAlignment = "BOTTOM"
|
|
profile.TrackedAurasSpacing = 1
|
|
|
|
local healthTexts = profile.HealthTexts
|
|
healthTexts.Normal.FontSize = 11
|
|
healthTexts.Normal.AlignmentH = "CENTER"
|
|
healthTexts.Normal.AlignmentV = "CENTER"
|
|
healthTexts.Normal.OffsetY = 2
|
|
healthTexts.WithMissing.FontSize = 11
|
|
healthTexts.WithMissing.AlignmentH = "CENTER"
|
|
healthTexts.WithMissing.AlignmentV = "CENTER"
|
|
healthTexts.WithMissing.OffsetY = 2
|
|
healthTexts.WithMissing.PaddingH = 8
|
|
healthTexts.Missing.FontSize = 11
|
|
healthTexts.Missing.AlignmentH = "RIGHT"
|
|
healthTexts.Missing.AlignmentV = "CENTER"
|
|
healthTexts.Missing.OffsetY = 2
|
|
healthTexts.Missing.PaddingH = 2
|
|
|
|
profile.IncomingHealDisplay = "Overheal"
|
|
profile.IncomingHealText.AlignmentH = "LEFT"
|
|
profile.IncomingHealText.AlignmentV = "CENTER"
|
|
profile.IncomingHealText.OffsetY = 2
|
|
profile.IncomingHealText.PaddingH = 2
|
|
|
|
profile.RangeText.AlignmentV = "CENTER"
|
|
profile.RangeText.OffsetY = -7
|
|
profile.RangeText.FontSize = 9
|
|
profile.LineOfSightIcon.Width = 20
|
|
profile.LineOfSightIcon.Height = 20
|
|
profile.LineOfSightIcon.Anchor = "Health Bar"
|
|
profile.LineOfSightIcon.Opacity = 80
|
|
profile.HealthDisplay = "Health"
|
|
profile.MissingHealthDisplay = "-Health"
|
|
profile.PowerText.FontSize = 8
|
|
profile.PowerText.AlignmentH = "CENTER"
|
|
end
|
|
|
|
do
|
|
local profile = CreateProfile("Default (Short Bar)", "Base")
|
|
|
|
profile.Width = 100
|
|
profile.HealthBarHeight = 24
|
|
profile.PowerBarHeight = 9
|
|
profile.NameText.FontSize = 11
|
|
profile.NameText.AlignmentH = "CENTER"
|
|
profile.NameText.AlignmentV = "TOP"
|
|
profile.NameText.PaddingV = 0
|
|
profile.NameText.MaxWidth = 80
|
|
profile.NameText.Anchor = "Container"
|
|
profile.PaddingTop = 12
|
|
profile.PaddingBottom = 0
|
|
profile.AuraTracker.Height = 13
|
|
profile.AuraTracker.Anchor = "Health Bar"
|
|
profile.AuraTracker.AlignmentH = "LEFT"
|
|
profile.TrackedAurasAlignment = "BOTTOM"
|
|
profile.TrackedAurasSpacing = 1
|
|
|
|
local healthTexts = profile.HealthTexts
|
|
healthTexts.Normal.FontSize = 11
|
|
healthTexts.Normal.AlignmentH = "CENTER"
|
|
healthTexts.Normal.AlignmentV = "TOP"
|
|
healthTexts.Normal.OffsetY = 0
|
|
healthTexts.Normal.PaddingV = 0
|
|
healthTexts.WithMissing.FontSize = 11
|
|
healthTexts.WithMissing.AlignmentH = "CENTER"
|
|
healthTexts.WithMissing.AlignmentV = "TOP"
|
|
healthTexts.WithMissing.OffsetY = 0
|
|
healthTexts.WithMissing.PaddingH = 8
|
|
healthTexts.Missing.FontSize = 11
|
|
healthTexts.Missing.AlignmentH = "RIGHT"
|
|
healthTexts.Missing.AlignmentV = "TOP"
|
|
healthTexts.Missing.OffsetY = 0
|
|
healthTexts.Missing.PaddingH = 2
|
|
|
|
profile.IncomingHealDisplay = "Overheal"
|
|
profile.IncomingHealText.AlignmentH = "LEFT"
|
|
profile.IncomingHealText.AlignmentV = "TOP"
|
|
profile.IncomingHealText.OffsetY = 0
|
|
profile.IncomingHealText.PaddingH = 2
|
|
profile.IncomingHealText.PaddingV = 2
|
|
|
|
profile.RangeText.AlignmentV = "CENTER"
|
|
profile.RangeText.OffsetY = -4
|
|
profile.RangeText.FontSize = 9
|
|
profile.LineOfSightIcon.Width = 20
|
|
profile.LineOfSightIcon.Height = 20
|
|
profile.LineOfSightIcon.Anchor = "Health Bar"
|
|
profile.LineOfSightIcon.Opacity = 80
|
|
profile.HealthDisplay = "Health"
|
|
profile.MissingHealthDisplay = "-Health"
|
|
profile.PowerText.FontSize = 8
|
|
profile.PowerText.AlignmentH = "CENTER"
|
|
end
|
|
|
|
-- Legacy profile - Meant to look as close as possible to HealersMate 1.3.0
|
|
do
|
|
local profile = CreateProfile("Legacy", "Base")
|
|
|
|
profile.Width = 200
|
|
|
|
profile.PaddingTop = 20
|
|
|
|
profile.MissingHealthInline = true
|
|
profile.HealthBarHeight = 25
|
|
profile.HealthBarStyle = "Blizzard"
|
|
profile.PowerBarHeight = 5
|
|
profile.PowerBarStyle = "Blizzard"
|
|
|
|
profile.NameText.AlignmentH = "LEFT"
|
|
profile.NameText.AlignmentV = "TOP"
|
|
profile.NameText.Anchor = "Container"
|
|
profile.NameText.MaxWidth = 200
|
|
local healthTexts = profile.HealthTexts
|
|
healthTexts.Normal.AlignmentH = "CENTER"
|
|
profile.HealthDisplay = "Health/Max Health"
|
|
profile.PowerDisplay = "Hidden"
|
|
|
|
profile.IncomingHealDisplay = "Overheal"
|
|
profile.IncomingHealText.AlignmentH = "LEFT"
|
|
profile.IncomingHealText.AlignmentV = "CENTER"
|
|
|
|
profile.RoleIcon.AlignmentH = "RIGHT"
|
|
profile.RoleIcon.Width = 16
|
|
profile.RoleIcon.Height = 16
|
|
|
|
profile.RaidMarkIcon.AlignmentH = "RIGHT"
|
|
profile.RaidMarkIcon.OffsetX = -18
|
|
profile.RaidMarkIcon.Width = 16
|
|
profile.RaidMarkIcon.Height = 16
|
|
|
|
profile.PVPIcon.OffsetY = -4
|
|
|
|
profile.BorderStyle = "Hidden"
|
|
end
|
|
|
|
for profileName, overrides in pairs(PTOptions.StyleOverrides) do
|
|
ApplyOverrides(profileName)
|
|
end
|
|
end |