@@ -44,6 +44,7 @@ local svDefault = {
4444 showHorn = true ,
4545 showColos = true ,
4646 showAtro = true ,
47+ showBarrier = true ,
4748 showSlayer = true ,
4849 showPillager = true ,
4950 showCryptCannon = true ,
@@ -65,6 +66,7 @@ local svDefault = {
6566 colorSlayerBG = {1 , 0 , 0 }, -- red
6667 colorPillagerBG = {0 , 1 , 0 }, -- green
6768 colorCryptCannonBG = {1 , 0 , 1 }, -- purple
69+ colorBarrierBG = {1 , 0.5 , 0 }, -- orange
6870
6971 markOnCooldown = true ,
7072 markOnCooldownColor = {1 , 0 , 0 }, -- red
@@ -87,6 +89,7 @@ function module:CreateCompactList()
8789
8890 list .HEADER_TYPE = list :GetNextDataTypeId () -- type id for header
8991 list .ROW_TYPE_HORN = list :GetNextDataTypeId () -- type id for horn rows
92+ list .ROW_TYPE_BARRIER = list :GetNextDataTypeId () -- type id for barrier rows
9093 list .ROW_TYPE_COLOS = list :GetNextDataTypeId () -- type id for colos rows
9194 list .ROW_TYPE_ATRO = list :GetNextDataTypeId () -- type id for atro rows
9295 list .ROW_TYPE_SLAYER = list :GetNextDataTypeId () -- type id for slayer rows
@@ -159,6 +162,14 @@ function module:CreateCompactList()
159162 rowCreationWrapper (self .compactListCryptCannonRowCreationFunction )
160163 )
161164 list .logger :Debug (" added cryptcannon player row type '%d' with template '%s'" , list .ROW_TYPE_CRYPTCANNON , list .ROW_TEMPLATE )
165+ ZO_ScrollList_AddDataType (
166+ list .listControl ,
167+ list .ROW_TYPE_BARRIER ,
168+ list .ROW_TEMPLATE ,
169+ list .listRowHeight ,
170+ rowCreationWrapper (self .compactListBarrierRowCreationFunction )
171+ )
172+ list .logger :Debug (" added barrier player row type '%d' with template '%s'" , list .ROW_TYPE_BARRIER , list .ROW_TEMPLATE )
162173
163174 -- register cooldown end time tracker for pillager cooldown
164175 local function setPillagerCooldownEndTime (_ , duration )
@@ -396,6 +407,31 @@ function module:compactListSlayerRowCreationFunction(rowControl, data, scrollLis
396407 self :applyCompactListValues (rowControl , data , scrollList , slayerPercentage , gainSeconds , " s" )
397408end
398409
410+ --- Barrier row creation function for compact ult list.
411+ --- @param rowControl Control
412+ --- @param data table
413+ --- @param scrollList ZO_ScrollList
414+ --- @return void
415+ function module :compactListBarrierRowCreationFunction (rowControl , data , scrollList )
416+ local list = self .compactList
417+ local sw = list .sw
418+
419+ list :ApplySupportRangeStyle (rowControl , data .tag )
420+ list :ApplyUserNameToControl (rowControl :GetNamedChild (' _Name' ), data .userId )
421+ list :ApplyUserIconToControl (rowControl :GetNamedChild (' _Icon' ), data .userId , data .classId )
422+
423+ rowControl :GetNamedChild (' _BG' ):SetColor (unpack (sw .colorBarrierBG ))
424+ rowControl :GetNamedChild (' _BG' ):SetAlpha (sw .backgroundAlpha )
425+ rowControl :GetNamedChild (" _UltIcon" ):SetTexture (self .barrierIcon )
426+
427+ local barrierPercentage = 0
428+ if self :isBarrier (data .ult1ID ) then barrierPercentage = data .ult1Percentage end
429+ if self :isBarrier (data .ult2ID ) then barrierPercentage = data .ult2Percentage end
430+
431+ self :applyCompactListValues (rowControl , data , scrollList , barrierPercentage , nil , nil )
432+ end
433+
434+
399435--- Slayer row creation function for compact ult list.
400436--- @param rowControl Control
401437--- @param data table
@@ -467,6 +503,7 @@ function module:UpdateCompactList()
467503 local slayerList = {}
468504 local pillagerList = {}
469505 local cryptCannonList = {}
506+ local barrierList = {}
470507
471508 local sw = compactList .sw
472509 for _ , playerData in pairs (addon .playersData ) do
@@ -488,6 +525,9 @@ function module:UpdateCompactList()
488525 if sw .showCryptCannon and playerData .hasCryptCannon then
489526 table.insert (cryptCannonList , playerData )
490527 end
528+ if sw .showBarrier and not playerData .hideBarrier and playerData .hasBarrier then
529+ table.insert (barrierList , playerData )
530+ end
491531 end
492532 local sortByUltPercentage = self .sortByUltPercentage
493533 table.sort (hornList , sortByUltPercentage )
@@ -496,6 +536,7 @@ function module:UpdateCompactList()
496536 table.sort (slayerList , sortByUltPercentage )
497537 table.sort (pillagerList , sortByUltPercentage )
498538 table.sort (cryptCannonList , sortByUltPercentage )
539+ table.sort (barrierList , sortByUltPercentage )
499540
500541 --- fill dataList ---
501542 -- insert Header
@@ -519,6 +560,9 @@ function module:UpdateCompactList()
519560 for _ , playerData in ipairs (cryptCannonList ) do
520561 table.insert (dataList , ZO_ScrollList_CreateDataEntry (compactList .ROW_TYPE_CRYPTCANNON , playerData ))
521562 end
563+ for _ , playerData in ipairs (barrierList ) do
564+ table.insert (dataList , ZO_ScrollList_CreateDataEntry (compactList .ROW_TYPE_BARRIER , playerData ))
565+ end
522566
523567 ZO_ScrollList_Commit (listControl )
524568end
0 commit comments