From 8940489b318a238c2c9c8f9f27ed5e9de0955d13 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Thu, 15 May 2025 12:58:09 -0500 Subject: [PATCH] Fix talk mode key shortcuts when preset words may be hidden --- src/game/boe.actions.cpp | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/game/boe.actions.cpp b/src/game/boe.actions.cpp index 10da3cfa..877c29d5 100644 --- a/src/game/boe.actions.cpp +++ b/src/game/boe.actions.cpp @@ -2719,6 +2719,8 @@ static bool handle_debug_key(char key) { return false; } +extern std::vector preset_words; + bool handle_keystroke(const sf::Event& event, cFramerateLimiter& fps_limiter){ bool are_done = false; location pass_point; // TODO: This isn't needed @@ -2828,11 +2830,26 @@ bool handle_keystroke(const sf::Event& event, cFramerateLimiter& fps_limiter){ chr2 = Key::G; for(short i = 0; i < 9; i++) if(chr2 == talk_chars[i] && (!talk_end_forced || i == 6 || i == 5)) { - // related to talk_area_rect, unsure why adding +9 is needed? - pass_point = talk_words[i].rect.topLeft(); - pass_point.x += talk_area_rect.left+9; - pass_point.y += talk_area_rect.top+9; - are_done = handle_talk_event(pass_point, fps_limiter); + short j = 0; + bool word_shown = false; + for(std::string preset : preset_words){ + if(preset == preset_words[i]) { + word_shown = talk_words[j].word == preset; + break; + } + else if(talk_words[j].word == preset){ + j++; + } + } + if(word_shown){ + pass_point = talk_words[j].rect.topLeft(); + // related to talk_area_rect, unsure why adding +9 is needed? + pass_point.x += talk_area_rect.left+9; + pass_point.y += talk_area_rect.top+9; + are_done = handle_talk_event(pass_point, fps_limiter); + }else{ + are_done = true; + } } return are_done; }