diff --git a/esoui/ingame/centerscreenannounce/centerscreenannounce.lua b/esoui/ingame/centerscreenannounce/centerscreenannounce.lua
index ac35c5d..962e743 100755
--- a/esoui/ingame/centerscreenannounce/centerscreenannounce.lua
+++ b/esoui/ingame/centerscreenannounce/centerscreenannounce.lua
@@ -3,6 +3,7 @@ CSA_EVENT_SMALL_TEXT = 1
CSA_EVENT_LARGE_TEXT = 2
CSA_EVENT_COMBINED_TEXT = 3
CSA_EVENT_NO_TEXT = 4
+CSA_EVENT_RAID_COMPLETE_TEXT = 5
CSA_OPTION_SUPPRESS_ICON_FRAME = true
@@ -16,6 +17,12 @@ local ARG_INDEX_BAR_PARAMS = 7
local ARG_INDEX_LIFESPAN = 8
local ARG_INDEX_SUPPRESS_FRAME = 9
+local ARG_BREAKDOWN_INDEX_SCORE = 1
+local ARG_BREAKDOWN_INDEX_TIME = 2
+local ARG_BREAKDOWN_INDEX_SHOW_AS_ERROR = 3
+local ARG_BREAKDOWN_INDEX_VITALITY_AMOUNT = 4
+local ARG_BREAKDOWN_INDEX_VITALITY_PERCENT = 5
+
local SMALL_TEXT_FONT_KEYBOARD = "ZoFontCenterScreenAnnounceSmall"
local SMALL_TEXT_FONT_GAMEPAD = "ZoFontGamepad42"
@@ -113,6 +120,13 @@ function CenterScreenAnnounce:Initialize(control)
self.m_smallCombinedIconFrame = self.m_smallCombinedText:GetNamedChild("IconFrame")
self.m_nextQueueIndex = 1
+ self.longformBreakdownContainer = self.m_largeText:GetNamedChild("RaidCompleteText")
+ self.breakdownLabel1 = self.longformBreakdownContainer:GetNamedChild("TimeAmount")
+ self.breakdownLabel2 = self.longformBreakdownContainer:GetNamedChild("ScoreAmount")
+ self.breakdownLabel3 = self.longformBreakdownContainer:GetNamedChild("VitalityAmount")
+ self.breakdownIconLabel = self.longformBreakdownContainer:GetNamedChild("VitalityPercent")
+ self.breakdownIcon = self.longformBreakdownContainer:GetNamedChild("VitalityIcon")
+
-- Recent message handler, using a 250 ms expiry delay
self.m_recentMessages = ZO_RecentMessages:New(250)
@@ -548,6 +562,8 @@ local setupFunctions =
translateTimeline:PlayFromStart()
end
+ self.longformBreakdownContainer:SetHidden(true)
+
return line
end,
@@ -571,6 +587,7 @@ local setupFunctions =
self.m_largeTextContainer.m_timeline.beforeExpiring = true
self.m_smallCombinedIcon:SetHidden(true)
+ self.longformBreakdownContainer:SetHidden(true)
return self.m_largeTextContainer
end,
@@ -613,11 +630,57 @@ local setupFunctions =
self.m_smallCombinedIconBG:SetTexture(iconBG)
end
+ self.longformBreakdownContainer:SetHidden(true)
+
return self.m_largeTextContainer
end,
+
[CSA_EVENT_NO_TEXT] = function(self, ...)
return nil
end,
+
+ [CSA_EVENT_RAID_COMPLETE_TEXT] = function(self,...)
+ TrySettingDynamicText(self.m_largeText, select(ARG_INDEX_MESSAGE, ...))
+ TrySettingDynamicText(self.m_smallCombinedText, "")
+ local raidArgumentTable = select(ARG_INDEX_COMBINED_MESSAGE, ...)
+ TrySettingDynamicText(self.breakdownLabel1, raidArgumentTable[ARG_BREAKDOWN_INDEX_TIME])
+ TrySettingDynamicText(self.breakdownLabel2, raidArgumentTable[ARG_BREAKDOWN_INDEX_SCORE])
+ TrySettingDynamicText(self.breakdownLabel3, raidArgumentTable[ARG_BREAKDOWN_INDEX_VITALITY_AMOUNT])
+ TrySettingDynamicText(self.breakdownIconLabel, raidArgumentTable[ARG_BREAKDOWN_INDEX_VITALITY_PERCENT])
+
+ if raidArgumentTable[ARG_BREAKDOWN_INDEX_VITALITY_AMOUNT] == 0 then
+ self.breakdownIconLabel:SetColor(ZO_ERROR_COLOR:UnpackRGBA())
+ self.breakdownIcon:SetColor(ZO_ERROR_COLOR:UnpackRGBA())
+ else
+ self.breakdownIconLabel:SetColor(ZO_DEFAULT_ENABLED_COLOR:UnpackRGBA())
+ self.breakdownIcon:SetColor(ZO_DEFAULT_ENABLED_COLOR:UnpackRGBA())
+ end
+
+ if raidArgumentTable[ARG_BREAKDOWN_INDEX_SHOW_AS_ERROR] then
+ self.breakdownLabel1:SetColor(ZO_DEFAULT_ENABLED_COLOR:UnpackRGBA())
+ else
+ self.breakdownLabel1:SetColor(ZO_ERROR_COLOR:UnpackRGBA())
+ end
+
+ local fadeOutAnimation = self.m_largeTextContainer.m_timeline:GetAnimation(2)
+ local lifespan = select(ARG_INDEX_LIFESPAN, ...)
+
+ if lifespan then
+ self.m_largeTextContainer.m_timeline:SetAnimationOffset(fadeOutAnimation, lifespan)
+ self.m_largeTextContainer.m_timeline:SetCallbackOffset(CallExpiringCallbackTimeline, lifespan)
+ else
+ self.m_largeTextContainer.m_timeline:SetAnimationOffset(fadeOutAnimation, DEFAULT_FADE_OUT_TIME)
+ self.m_largeTextContainer.m_timeline:SetCallbackOffset(CallExpiringCallbackTimeline, DEFAULT_FADE_OUT_TIME)
+ end
+
+ self.m_largeTextContainer.m_timeline:PlayFromStart()
+ self.m_largeTextContainer.m_timeline.beforeExpiring = true
+
+ self.m_smallCombinedIcon:SetHidden(true)
+ self.longformBreakdownContainer:SetHidden(false)
+
+ return self.m_largeTextContainer
+ end,
}
function CenterScreenAnnounce:SetExpiringCallback(line, callback)
@@ -674,7 +737,8 @@ local ALLOWED_EVENTS_WHILE_CRAFTING = {
[EVENT_QUEST_COMPLETE] = true,
[EVENT_OBJECTIVE_COMPLETED] = true,
[EVENT_QUEST_OPTIONAL_STEP_ADVANCED] = true,
- [EVENT_ACHIEVEMENT_AWARDED] = true
+ [EVENT_ACHIEVEMENT_AWARDED] = true,
+ [EVENT_BROADCAST] = true,
}
function CenterScreenAnnounce:AddMessage(eventId, category, ...)