From 671aa304096642ad042a680fe189938b639f41ba Mon Sep 17 00:00:00 2001 From: Samuel Bouchet Date: Sun, 15 Mar 2026 18:47:31 +0100 Subject: [PATCH] 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. --- src/OpenTheBox/Program.cs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/OpenTheBox/Program.cs b/src/OpenTheBox/Program.cs index 3ff37d4..d3695a5 100644 --- a/src/OpenTheBox/Program.cs +++ b/src/OpenTheBox/Program.cs @@ -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(); + // Collect messages to show after loot reveal + var deferredMessages = new List(); // Track consumed item names for interaction context var consumedItemNames = new Dictionary(); @@ -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"));