/
tinsert(self.fontObjects, fs) |
return fs |
end |
kn.SetFontSize = SetFontSize |
kn.ModifyFontFlags = ModifyFontFlags |
kn.CreateFontString = CreateFontString |
------------------------------------------------------------- Frame functions -- |
-- set colour of health bar according to reaction/threat |
local function SetHealthColour(self) |
frame.SetGlowColour = SetGlowColour |
frame.StoreGUID = StoreFrameGUID |
--[[ TODO |
past this point a frame has been initialised but not "created" |
it should be possible to hide/reset anything created after this |
when a profile change or setting change is detected, cycle all frames |
and reset them |
]] |
------------------------------------------------------------------ Layout -- |
local parent |
if profile.general.fixaa and uiscale then |
-- using CENTER breaks pixel-perfectness with oddly sized frames |
-- .. so we have to align frames manually. |
local w,h = parent:GetSize() |
local x,y |
frame.x = floor((w / 2) - (kn.sizes.width / 2)) |
frame.y = floor((h / 2) - (kn.sizes.height / 2)) |
x = floor((w / 2) - (kn.sizes.width / 2)) |
y = floor((h / 2) - (kn.sizes.height / 2)) |
self:CreateBackground(frame) |
self:CreateHealthBar(frame) |
-- border ------------------------------------------------------------------ |
--frame.bg = (frame.carrier and frame.carrier or frame):CreateTexture(nil, 'BACKGROUND') |
frame.bg:SetParent(parent) |
frame.bg:SetTexture('Interface\\AddOns\\Kui_Nameplates\\FrameGlow') |
frame.bg:SetTexCoord(0, .469, 0, .625) |
frame.bg:SetVertexColor(0, 0, 0, .9) |
-- background |
frame.bg.fill = parent:CreateTexture(nil, 'BACKGROUND') |
frame.bg.fill:SetTexture(kui.m.t.solid) |
frame.bg.fill:SetVertexColor(0, 0, 0, .8) |
frame.bg.fill:SetDrawLayer('ARTWORK', 1) -- (1 sub-layer above .bg) |
frame.bg.fill:SetSize(kn.sizes.width, kn.sizes.height) |
frame.bg.fill:SetPoint('BOTTOMLEFT', x, y) |
frame.bg:ClearAllPoints() |
frame.bg:SetPoint('BOTTOMLEFT', x-kn.sizes.bgOffset, y-kn.sizes.bgOffset) |
frame.bg:SetPoint('TOPRIGHT', parent, 'BOTTOMLEFT', x+kn.sizes.width+kn.sizes.bgOffset, y+kn.sizes.height+kn.sizes.bgOffset) |
-- health bar -------------------------------------------------------------- |
frame.health = CreateFrame('StatusBar', nil, parent) |
frame.health:SetStatusBarTexture(kui.m.t.bar) |
frame.health:ClearAllPoints() |
frame.health:SetSize(kn.sizes.width-2, kn.sizes.height-2) |
frame.health:SetPoint('BOTTOMLEFT', x+1, y+1) |
if kn.SetValueSmooth then |
-- smooth bar |
frame.health.OrigSetValue = frame.health.SetValue |
frame.health.SetValue = kn.SetValueSmooth |
end |
-- raid icon --------------------------------------------------------------- |
frame.icon:SetParent(parent) |
--frame.icon:SetSize(24, 24) |
-- overlay (text is parented to this) -------------------------------------- |
frame.overlay = CreateFrame('Frame', nil, parent) |
frame.overlay:SetAllPoints(frame.health) |
frame.overlay:SetFrameLevel(frame.health:GetFrameLevel()+1) |
-- highlight --------------------------------------------------------------- |
if profile.general.highlight then |
frame.highlight = frame.overlay:CreateTexture(nil, 'ARTWORK') |
frame.highlight:SetTexture(kui.m.t.bar) |
frame.highlight:SetAllPoints(frame.health) |
frame.highlight:SetVertexColor(1, 1, 1) |
frame.highlight:SetBlendMode('ADD') |
frame.highlight:SetAlpha(.4) |
frame.highlight:Hide() |
end |
-- health text ------------------------------------------------------------- |
frame.health.p = frame:CreateFontString(frame.overlay, { |
font = kn.font, size = 'large', outline = "OUTLINE" }) |
frame.health.p:SetJustifyH('RIGHT') |
frame.health.p:SetPoint('BOTTOMRIGHT', frame.health, 'TOPRIGHT', -2, uiscale and -(3/uiscale) or -3) |
self:CreateHighlight(frame) |
self:CreateHealthText(frame) |
if profile.hp.showalt then |
frame.health.mo = frame:CreateFontString(frame.overlay, { |
font = kn.font, size = 'small', outline = "OUTLINE" }) |
frame.health.mo:SetJustifyH('RIGHT') |
frame.health.mo:SetPoint('BOTTOMRIGHT', frame.health, -2, uiscale and -(3/uiscale) or -3) |
frame.health.mo:SetAlpha(.6) |
self:CreateAltHealthText(frame) |
end |
if profile.text.level then |
-- level text ---------------------------------------------------------- |
frame.level = frame:CreateFontString(frame.level, { reset = true, |
font = kn.font, size = 'name', outline = 'OUTLINE' }) |
frame.level:SetParent(frame.overlay) |
frame.level:ClearAllPoints() |
frame.level:SetPoint('BOTTOMLEFT', frame.health, 'TOPLEFT', 2, uiscale and -(2/uiscale) or -2) |
frame.level.enabled = true |
self:CreateLevel(frame) |
else |
frame.level:Hide() |
end |
-- name text --------------------------------------------------------------- |
frame.name = frame:CreateFontString(frame.overlay, { |
font = kn.font, size = 'name', outline = 'OUTLINE' }) |
frame.name:SetJustifyH('LEFT') |
frame.name:SetHeight(13) |
self:CreateName(frame) |
if frame.level.enabled then |
frame.name:SetPoint('LEFT', frame.level, 'RIGHT', -2, 0) |
else |
frame.name:SetPoint('BOTTOMLEFT', frame.health, 'TOPLEFT', 2, uiscale and -(2/uiscale) or -2) |
end |
frame.name:SetPoint('RIGHT', frame.health.p, 'LEFT') |
----------------------------------------------------------------- Scripts -- |
frame:SetScript('OnShow', OnFrameShow) |
frame:SetScript('OnHide', OnFrameHide) |
end |
---------------------------------------------------- Post db change functions -- |
-- n.b. this is absolutely terrible and horrible and i hate it |
kn.configChangedFuncs.runOnce.fontscale = function(val) |
kn:ScaleFontSizes() |
end |
local addon = LibStub('AceAddon-3.0'):GetAddon('KuiNameplates') |
local kui = LibStub('Kui-1.0') |
------------------------------------------------------------------ Background -- |
function addon:CreateBackground(frame) |
-- frame glow |
frame.bg:SetParent(frame.parent) |
frame.bg:SetTexture('Interface\\AddOns\\Kui_Nameplates\\FrameGlow') |
frame.bg:SetTexCoord(0, .469, 0, .625) |
frame.bg:SetVertexColor(0, 0, 0, .9) |
-- solid background |
frame.bg.fill = frame.parent:CreateTexture(nil, 'BACKGROUND') |
frame.bg.fill:SetTexture(kui.m.t.solid) |
frame.bg.fill:SetVertexColor(0, 0, 0, .8) |
frame.bg.fill:SetDrawLayer('ARTWORK', 1) -- 1 sub-layer above .bg |
frame.bg.fill:SetSize(addon.sizes.width, addon.sizes.height) |
frame.bg.fill:SetPoint('BOTTOMLEFT', frame.x, frame.y) |
frame.bg:ClearAllPoints() |
frame.bg:SetPoint('BOTTOMLEFT', |
frame.x - addon.sizes.bgOffset, |
frame.y - addon.sizes.bgOffset) |
frame.bg:SetPoint('TOPRIGHT', frame.parent, 'BOTTOMLEFT', |
frame.x + addon.sizes.width + addon.sizes.bgOffset, |
frame.y + addon.sizes.height + addon.sizes.bgOffset) |
end |
------------------------------------------------------------------ Health bar -- |
function addon:CreateHealthBar(frame) |
frame.health = CreateFrame('StatusBar', nil, frame.parent) |
frame.health:SetStatusBarTexture(kui.m.t.bar) |
frame.health:ClearAllPoints() |
frame.health:SetSize(addon.sizes.width-2, addon.sizes.height-2) |
frame.health:SetPoint('BOTTOMLEFT', frame.x+1, frame.y+1) |
if addon.SetValueSmooth then |
-- smooth bar |
frame.health.OrigSetValue = frame.health.SetValue |
frame.health.SetValue = addon.SetValueSmooth |
end |
end |
------------------------------------------------------------------- Highlight -- |
function addon:CreateHighlight(frame) |
if not addon.db.profile.general.highlight then return end |
frame.highlight = frame.overlay:CreateTexture(nil, 'ARTWORK') |
frame.highlight:SetTexture(kui.m.t.bar) |
frame.highlight:SetAllPoints(frame.health) |
frame.highlight:SetVertexColor(1, 1, 1) |
frame.highlight:SetBlendMode('ADD') |
frame.highlight:SetAlpha(.4) |
frame.highlight:Hide() |
end |
----------------------------------------------------------------- Health text -- |
function addon:CreateHealthText(frame) |
frame.health.p = addon.CreateFontString(frame, frame.overlay, { |
font = addon.font, size = 'large', outline = "OUTLINE" }) |
frame.health.p:SetJustifyH('RIGHT') |
frame.health.p:SetPoint('BOTTOMRIGHT', frame.health, 'TOPRIGHT', |
-2, addon.uiscale and -(3/addon.uiscale) or -3) |
end |
function addon:UpdateHealthText(frame) |
if frame.trivial then |
frame.health.p:Hide() |
else |
frame.health.p:Show() |
end |
end |
------------------------------------------------------------- Alt health text -- |
function addon:CreateAltHealthText(frame) |
frame.health.mo = addon.CreateFontString(frame, frame.overlay, { |
font = addon.font, size = 'small', outline = "OUTLINE" }) |
frame.health.mo:SetJustifyH('RIGHT') |
frame.health.mo:SetPoint('BOTTOMRIGHT', frame.health, |
-2, addon.uiscale and -(3/addon.uiscale) or -3) |
frame.health.mo:SetAlpha(.6) |
end |
function addon:UpdateAltHealthText(frame) |
if frame.trivial then |
frame.health.mo:Hide() |
else |
frame.health.mo:Show() |
end |
end |
function addon:DisableAltHealthText(frame) |
frame.health.mo:Hide() |
end |
------------------------------------------------------------------ Level text -- |
function addon:CreateLevel(frame) |
if not frame.level then return end |
frame.level = addon.CreateFontString(frame, frame.level, { reset = true, |
font = addon.font, size = 'name', outline = 'OUTLINE' }) |
frame.level:SetParent(frame.overlay) |
frame.level:ClearAllPoints() |
frame.level:SetPoint('BOTTOMLEFT', frame.health, 'TOPLEFT', |
2, addon.uiscale and -(2/addon.uiscale) or -2) |
frame.level.enabled = true |
end |
function addon:UpdateLevel(frame) |
if frame.trivial then |
frame.level:Hide() |
else |
frame.level:Show() |
end |
self:UpdateName(frame) |
end |
function addon:HideLevel(frame) |
frame.level:Hide() |
frame.level.enabled = nil |
end |
------------------------------------------------------------------- Name text -- |
function addon:CreateName(frame) |
frame.name = addon.CreateFontString(frame, frame.overlay, { |
font = addon.font, size = 'name', outline = 'OUTLINE' }) |
frame.name:SetHeight(13) |
self:UpdateName(frame) |
end |
function addon:UpdateName(frame) |
if not frame.name then return end |
frame.name:ClearAllPoints() |
if frame.trivial then |
addon.SetFontSize(frame.name, addon.fontSizes.small) |
frame.name:SetJustifyH('CENTER') |
frame.name:SetPoint('BOTTOMLEFT', frame.health, 'TOPLEFT', -10, 0) |
frame.name:SetPoint('BOTTOMRIGHT', frame.health, 'TOPRIGHT', 10, 0) |
else |
addon.SetFontSize(frame.name, addon.fontSizes.name) |
frame.name:SetJustifyH('LEFT') |
frame.name:SetPoint('RIGHT', frame.health.p, 'LEFT') |
if frame.level and frame.level.enabled then |
frame.name:SetPoint('LEFT', frame.level, 'RIGHT', -2, 0) |
else |
frame.name:SetPoint('BOTTOMLEFT', frame.health, 'TOPLEFT', |
2, addon.uiscale and -(2/addon.uiscale) or -2) |
end |
end |
end |
core.lua |
config.lua |
create.lua |
layout.lua |
castbar.lua |
}, |
} |
}, |
sizes = { |
name = 'Sizes', |
type = 'group', |
inline = true, |
args = { |
combopoints = { |
name = 'Combo points', |
type = 'range', |
min = 1, |
softMax = 20 |
}, |
large = { |
name = 'Large', |
desc = 'Used for health on normal nameplates', |
type = 'range', |
min = 1, |
softMax = 20 |
}, |
spellname = { |
name = 'Spell name', |
type = 'range', |
min = 1, |
softMax = 20 |
}, |
name = { |
name = 'Name & level', |
type = 'range', |
min = 1, |
softMax = 20 |
}, |
small = { |
name = 'Small', |
desc = 'Used for contextual health', |
type = 'range', |
min = 1, |
softMax = 20 |
}, |
} |
} |
} |
}, |
reload = { |