@@ -4,7 +4,7 @@ local L = mod:GetLocalizedStrings()
44local DBM = DBM
55local AceTimer = LibStub (" AceTimer-3.0" )
66
7- mod :SetRevision (" 20220827002800 " )
7+ mod :SetRevision (" 20240910182741 " )
88mod :SetZone (DBM_DISABLE_ZONE_DETECTION )
99
1010mod :RegisterEvents (
3535end
3636
3737-- Utility functions
38- local format , strsplit = string.format , strsplit
38+ local format , strfind , strsplit = string.format , strfind , strsplit
3939local hooksecurefunc = hooksecurefunc
4040local IsActiveBattlefieldArena , FauxScrollFrame_GetOffset , GetBattlefieldScore , GetNumBattlefieldScores , GetUnitName , UnitFactionGroup , UnitName = IsActiveBattlefieldArena , FauxScrollFrame_GetOffset , GetBattlefieldScore , GetNumBattlefieldScores , GetUnitName , UnitFactionGroup , UnitName
4141local MAX_WORLDSTATE_SCORE_BUTTONS , CUSTOM_CLASS_COLORS , RAID_CLASS_COLORS = MAX_WORLDSTATE_SCORE_BUTTONS , CUSTOM_CLASS_COLORS , RAID_CLASS_COLORS
@@ -237,13 +237,36 @@ local function HideFlagDisplay()
237237 end
238238end
239239
240+ local function colorizeFlagName (name )
241+ -- if not mod.Options.ColorByClass then return name end
242+ local classUpper
243+ for i = 1 , GetNumBattlefieldScores () do
244+ local nameScoreboard , _ , _ , _ , _ , _ , _ , _ , _ , classToken = GetBattlefieldScore (i )
245+ local noRealmName = strsplit (" -" , nameScoreboard ) -- remove realm name, since Flag msg events never contain realm name
246+ if noRealmName == name then
247+ classUpper = classToken
248+ break
249+ end
250+ end
251+ if classUpper then
252+ if CUSTOM_CLASS_COLORS then
253+ local classTextColor = CUSTOM_CLASS_COLORS [classUpper ]
254+ local hexClassColor = format (" ff%02X%02X%02X" , 255 * classTextColor .r , 255 * classTextColor .g , 255 * classTextColor .b )
255+ name = format (" |c%s%s|r" , hexClassColor , name )
256+ else
257+ name = format (" |c%s%s|r" , RAID_CLASS_COLORS [classUpper ].colorStr , name )
258+ end
259+ end
260+ return name
261+ end
262+
240263local function UpdateFlagDisplay ()
241264 if flagFrame1Text and flagFrame2Text then
242265 if allyFlag then
243266 if GetCurrentMapAreaID () == 483 then -- EotS
244- flagFrame1Text :SetText (L .Flag .. " : " .. allyFlag )
267+ flagFrame1Text :SetText (L .Flag .. " : " .. colorizeFlagName ( allyFlag ) )
245268 else
246- flagFrame1Text :SetText (allyFlag )
269+ flagFrame1Text :SetText (colorizeFlagName ( allyFlag ) )
247270 end
248271 flagButton1 :SetAttribute (" macrotext" , " /targetexact " .. allyFlag )
249272 else
@@ -253,9 +276,9 @@ local function UpdateFlagDisplay()
253276
254277 if hordeFlag then
255278 if GetCurrentMapAreaID () == 483 then -- EotS
256- flagFrame2Text :SetText (L .Flag .. " : " .. hordeFlag )
279+ flagFrame2Text :SetText (L .Flag .. " : " .. colorizeFlagName ( hordeFlag ) )
257280 else
258- flagFrame2Text :SetText (hordeFlag )
281+ flagFrame2Text :SetText (colorizeFlagName ( hordeFlag ) )
259282 end
260283 flagButton2 :SetAttribute (" macrotext" , " /targetexact " .. hordeFlag )
261284 else
0 commit comments