Defer feedback messages to display after loot reveal

Move MessageEvent, AdventureUnlockedEvent and LootTableModifiedEvent
rendering after the loot table so players see their items first,
then contextual feedback like key hints and adventure unlocks.
This commit is contained in:
Samuel Bouchet 2026-03-15 18:47:31 +01:00
parent 41bfb54a2c
commit 671aa30409

View file

@ -467,8 +467,8 @@ public static class Program
// Collect all received items to show as a single grouped loot reveal
var allLoot = new List<(string name, string rarity, string category)>();
// Collect interactions to show after loot reveal with context
var deferredInteractions = new List<string>();
// Collect messages to show after loot reveal
var deferredMessages = new List<string>();
// Track consumed item names for interaction context
var consumedItemNames = new Dictionary<Guid, string>();
@ -544,12 +544,12 @@ public static class Program
{
interMsg = _loc.Get(interEvt.DescriptionKey);
}
deferredInteractions.Add(interMsg);
deferredMessages.Add(interMsg);
break;
case ChainBonusEvent chainEvt:
var bonusName = GetLocalizedName(chainEvt.BonusItemId);
deferredInteractions.Add(_loc.Get("interaction.chain_bonus", chainEvt.ChainLength) + $" {bonusName}");
deferredMessages.Add(_loc.Get("interaction.chain_bonus", chainEvt.ChainLength) + $" {bonusName}");
break;
case ResourceChangedEvent resEvt:
@ -558,7 +558,7 @@ public static class Program
break;
case MessageEvent msgEvt:
_renderer.ShowMessage(_loc.Get(msgEvt.MessageKey, msgEvt.Args ?? []));
deferredMessages.Add(_loc.Get(msgEvt.MessageKey, msgEvt.Args ?? []));
break;
case ChoiceRequiredEvent choiceEvt:
@ -566,12 +566,12 @@ public static class Program
break;
case LootTableModifiedEvent:
_renderer.ShowMessage(_loc.Get("interaction.key_no_match"));
deferredMessages.Add(_loc.Get("interaction.key_no_match"));
break;
case AdventureUnlockedEvent advUnlockedEvt:
var advName = GetAdventureName(advUnlockedEvt.Theme);
_renderer.ShowMessage(_loc.Get("adventure.unlocked", advName));
deferredMessages.Add(_loc.Get("adventure.unlocked", advName));
break;
case AdventureStartedEvent advEvt:
@ -614,11 +614,11 @@ public static class Program
// Resource summary removed — characteristics are shown in the dedicated panel
}
// Show deferred interactions after the loot reveal, with context
foreach (var interactionMsg in deferredInteractions)
// Show deferred messages after the loot reveal
foreach (var msg in deferredMessages)
{
_renderer.ShowMessage("");
_renderer.ShowInteraction(interactionMsg);
_renderer.ShowInteraction(msg);
}
_renderer.WaitForKeyPress(_loc.Get("prompt.press_key"));