Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions CustomiseDialog/AddWidgetsList.lua
Original file line number Diff line number Diff line change
Expand Up @@ -417,6 +417,38 @@ addonTable.CustomiseDialog.DesignWidgets = {
shorten = "NONE",
},
},
{
name = addonTable.Locales.ARENA_ID,
kind = "texts",
default = {
kind = "arenaID",
scale = 1.2,
layer = 2,
anchor = {"TOPLEFT", -140, 50},
color = GetColor("FFFFFF"),
useClassColor = true,
align = "CENTER",
shorten = "NONE",
truncate = false,
},
},
{
name = addonTable.Locales.SPEC_NAME,
kind = "texts",
default = {
kind = "specName",
scale = 1,
layer = 2,
anchor = {"TOPLEFT", -140, 50},
color = GetColor("FFFFFF"),
useClassColor = true,
useShortName = false,
capitalise = false,
align = "CENTER",
shorten = "NONE",
truncate = false,
},
},
{
name = addonTable.Locales.ICONS,
special = "header",
Expand Down
15 changes: 15 additions & 0 deletions CustomiseDialog/Designer.lua
Original file line number Diff line number Diff line change
Expand Up @@ -824,6 +824,21 @@ function addonTable.CustomiseDialog.GetMainDesigner(parent)
end
end
end
elseif w.details.kind == "arenaID" then
display = "#"
if w.details.useClassColor then
local c = RAID_CLASS_COLORS["MAGE"]
w.text:SetTextColor(c.r, c.g, c.b)
end
elseif w.details.kind == "specName" then
display = "Spec"
if w.details.capitalise then
display = string.upper(display)
end
if w.details.useClassColor then
local c = RAID_CLASS_COLORS["MAGE"]
w.text:SetTextColor(c.r, c.g, c.b)
end
elseif w.details.kind == "castTimeLeft" then
w.text:SetText("1.2")
elseif w.details.kind == "guild" then
Expand Down
87 changes: 85 additions & 2 deletions CustomiseDialog/WidgetsConfiguration.lua
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,7 @@ addonTable.CustomiseDialog.WidgetsConfig = {
}
}
},
["creatureName"] = {
["creatureName"] = {
{
label = addonTable.Locales.GENERAL,
entries = {
Expand All @@ -457,6 +457,33 @@ addonTable.CustomiseDialog.WidgetsConfig = {
return details.showWhenWowDoes
end,
},
{
label = addonTable.Locales.IN_ARENA,
kind = "dropdown",
getInitData = function()
return {
addonTable.Locales.SHOW_NAME,
addonTable.Locales.SHOW_ARENA_ID,
addonTable.Locales.SHOW_SPEC_NAME,
addonTable.Locales.SHOW_SPEC_NAME_CAPS,
addonTable.Locales.SHOW_ARENA_ID_SPEC,
addonTable.Locales.SHOW_ARENA_ID_SPEC_CAPS,
}, {
"name",
"arenaID",
"specName",
"specNameCaps",
"arenaIDSpec",
"arenaIDSpecCaps",
}
end,
setter = function(details, value)
details.arenaDisplayMode = value
end,
getter = function(details)
return details.arenaDisplayMode or "name"
end
},
}
},
{
Expand Down Expand Up @@ -521,7 +548,7 @@ addonTable.CustomiseDialog.WidgetsConfig = {
getter = function(details)
return details.applyClassColors
end,
hide = addonTable.Constants.IsMidnight,t
hide = addonTable.Constants.IsMidnight,
},
}
}
Expand Down Expand Up @@ -559,6 +586,60 @@ addonTable.CustomiseDialog.WidgetsConfig = {
}
},
},
["arenaID"] = {
{
label = addonTable.Locales.GENERAL,
entries = {
{
label = addonTable.Locales.USE_CLASS_COLOR,
kind = "checkbox",
setter = function(details, value)
details.useClassColor = value
end,
getter = function(details)
return details.useClassColor
end,
},
}
},
},
["specName"] = {
{
label = addonTable.Locales.GENERAL,
entries = {
{
label = addonTable.Locales.USE_CLASS_COLOR,
kind = "checkbox",
setter = function(details, value)
details.useClassColor = value
end,
getter = function(details)
return details.useClassColor
end,
},
{
label = addonTable.Locales.CAPITALIZE,
kind = "checkbox",
setter = function(details, value)
details.capitalise = value
end,
getter = function(details)
return details.capitalise
end,
},
{
label = addonTable.Locales.USE_SHORT_NAME,
kind = "checkbox",
setter = function(details, value)
details.useShortName = value
end,
getter = function(details)
return details.useShortName
end,
},
}
},
},
},
["markers"] = {
["*"] = {
Expand Down Expand Up @@ -717,9 +798,11 @@ addonTable.CustomiseDialog.WidgetsConfig = {
return {
addonTable.Locales.LEFT,
addonTable.Locales.RIGHT,
addonTable.Locales.CENTER,
}, {
"LEFT",
"RIGHT",
"CENTER",
}
end,
setter = function(details, value)
Expand Down
100 changes: 96 additions & 4 deletions Display/CreatureText.lua
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,69 @@ local addonTable = select(2, ...)

addonTable.Display.CreatureTextMixin = {}

local ArenaPlatesCreature = {}

local function RefreshArenaPlatesCreature()
wipe(ArenaPlatesCreature)
for i = 1, 5 do
ArenaPlatesCreature[i] = C_NamePlate.GetNamePlateForUnit("arena"..i)
end
end

local arenaFrameCreature = CreateFrame("Frame")
arenaFrameCreature:RegisterEvent("PLAYER_ENTERING_WORLD")
arenaFrameCreature:RegisterEvent("ARENA_OPPONENT_UPDATE")
arenaFrameCreature:RegisterEvent("NAME_PLATE_UNIT_ADDED")
arenaFrameCreature:RegisterEvent("NAME_PLATE_UNIT_REMOVED")
arenaFrameCreature:SetScript("OnEvent", function()
RefreshArenaPlatesCreature()
end)

local function GetArenaIndexByUnitCreature(unit)
local plate = C_NamePlate.GetNamePlateForUnit(unit)
if not plate then return nil end
for i = 1, 5 do
if ArenaPlatesCreature[i] and ArenaPlatesCreature[i] == plate then
return i
end
end
return nil
end

local specIDToNameCreature = {
[250] = "Blood", [251] = "Frost", [252] = "Unholy",
[577] = "Havoc", [581] = "Vengeance",
[102] = "Balance", [103] = "Feral", [104] = "Guardian", [105] = "Restoration",
[1467] = "Devastation", [1468] = "Preservation", [1473] = "Augmentation",
[253] = "Beast Mastery", [254] = "Marksmanship", [255] = "Survival",
[62] = "Arcane", [63] = "Fire", [64] = "Frost",
[268] = "Brewmaster", [270] = "Mistweaver", [269] = "Windwalker",
[65] = "Holy", [66] = "Protection", [70] = "Retribution",
[256] = "Discipline", [257] = "Holy", [258] = "Shadow",
[259] = "Assassination", [260] = "Outlaw", [261] = "Subtlety",
[262] = "Elemental", [263] = "Enhancement", [264] = "Restoration",
[265] = "Affliction", [266] = "Demonology", [267] = "Destruction",
[71] = "Arms", [72] = "Fury", [73] = "Protection",
}

local function GetSpecNameCreature(unit)
local idx = GetArenaIndexByUnitCreature(unit)
if idx and GetArenaOpponentSpec then
local specID = GetArenaOpponentSpec(idx)
if specID then
return specIDToNameCreature[specID]
end
end
return nil
end

function addonTable.Display.CreatureTextMixin:SetUnit(unit)
self.unit = unit
if self.unit then
self:RegisterUnitEvent("UNIT_NAME_UPDATE", self.unit)
self:RegisterEvent("ARENA_OPPONENT_UPDATE")
self.defaultText = UnitName(self.unit)
self.text:SetText(self.defaultText)
self:UpdateText()

addonTable.Display.RegisterForColorEvents(self, self.details.autoColors)
self:SetColor(addonTable.Display.GetColor(self.details.autoColors, self.colorState, self.unit))
Expand All @@ -24,6 +81,34 @@ function addonTable.Display.CreatureTextMixin:SetUnit(unit)
end
end

function addonTable.Display.CreatureTextMixin:UpdateText()
local isArena = IsActiveBattlefieldArena and IsActiveBattlefieldArena()
local mode = self.details.arenaDisplayMode or "name"

if isArena and self.unit and mode ~= "name" then
local idx = GetArenaIndexByUnitCreature(self.unit)
local specName = GetSpecNameCreature(self.unit)

if mode == "arenaID" and idx then
self.text:SetText(tostring(idx))
return
elseif mode == "specName" and specName then
self.text:SetText(specName)
return
elseif mode == "specNameCaps" and specName then
self.text:SetText(string.upper(specName))
return
elseif mode == "arenaIDSpec" and idx and specName then
self.text:SetText(idx .. " - " .. specName)
return
elseif mode == "arenaIDSpecCaps" and idx and specName then
self.text:SetText(idx .. " - " .. string.upper(specName))
return
end
end
self.text:SetText(self.defaultText)
end

function addonTable.Display.CreatureTextMixin:Strip()
local c = self.details.color
self.text:SetTextColor(c.r, c.g, c.b)
Expand All @@ -50,7 +135,10 @@ function addonTable.Display.CreatureTextMixin:OnEvent(eventName, ...)
end
elseif eventName == "UNIT_NAME_UPDATE" then
self.defaultText = UnitName(self.unit)
self.text:SetText(self.defaultText)
self:UpdateText()
elseif eventName == "ARENA_OPPONENT_UPDATE" then
RefreshArenaPlatesCreature()
self:UpdateText()
end

self:ColorEventHandler(eventName)
Expand All @@ -64,5 +152,9 @@ end

function addonTable.Display.CreatureTextMixin:ApplyTextOverride()
local override = addonTable.API.TextOverrides.name[self.unit]
self.text:SetText(override or self.defaultText)
end
if override then
self.text:SetText(override)
else
self:UpdateText()
end
end
2 changes: 1 addition & 1 deletion Display/Nameplate.lua
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ function addonTable.Display.NameplateMixin:OnLoad()
xOffset = step
else -- CENTER
xOffset = step
currentX = #keys * step / 2
currentX = -((#data - 1) * step) / 2
end
local anchor = details.anchor[1]
if type(anchor) ~= "string" then
Expand Down
4 changes: 4 additions & 0 deletions Display/Widgets.lua
Original file line number Diff line number Diff line change
Expand Up @@ -535,6 +535,10 @@ function addonTable.Display.GetText(frame, parent)
Mixin(frame, addonTable.Display.CastInterrupterTextMixin)
elseif details.kind == "castTimeLeft" then
Mixin(frame, addonTable.Display.CastTimeLeftTextMixin)
elseif details.kind == "arenaID" then
Mixin(frame, addonTable.Display.ArenaIDTextMixin)
elseif details.kind == "specName" then
Mixin(frame, addonTable.Display.SpecNameTextMixin)
else
assert(false)
end
Expand Down
Loading