From d42fc3e0bbd91ba6347fad01b34432fc3ec13b91 Mon Sep 17 00:00:00 2001 From: Habu Date: Tue, 13 Apr 2021 23:41:53 +0900 Subject: [PATCH] =?utf8?q?[Fix]=20=E6=8C=87=E5=AE=9A=E3=81=97=E3=81=9F?= =?utf8?q?=E6=99=82=E3=81=A0=E3=81=91=E3=82=AD=E3=83=BC=E5=85=A5=E5=8A=9B?= =?utf8?q?=E5=BE=85=E3=81=A1=E6=99=82=E3=81=AE=E5=86=8D=E6=8F=8F=E7=94=BB?= =?utf8?q?=E3=82=92=E8=A1=8C=E3=81=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit #754 でキー入力待ち時に強制的に再描画(および諸処のゲーム情報の更新)を 行うようになったが、意図しないタイミングで再描画が行われる事により 様々なエンバグが発生している。 これに対処するため、強制的に再描画するかどうかの引数を inkey() に設け、 とりあえずやっても問題ないタイミングと思われる request_command() での inkey() でのみ強制的な再描画を行うようにする。 --- src/io/input-key-acceptor.cpp | 9 ++++++--- src/io/input-key-acceptor.h | 2 +- src/io/input-key-requester.cpp | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/io/input-key-acceptor.cpp b/src/io/input-key-acceptor.cpp index 2ec65b983..629dc5fce 100644 --- a/src/io/input-key-acceptor.cpp +++ b/src/io/input-key-acceptor.cpp @@ -181,10 +181,10 @@ static char inkey_aux(void) /* * @brief キー入力を受け付けるメインルーチン / Get a keypress from the user. - * @param なし + * @param do_all_term_refresh trueであれば強制的にhandle_stuffと再描画を行う。デフォルト false * return キーを表すコード */ -char inkey(void) +char inkey(bool do_all_term_refresh) { char ch = 0; bool done = FALSE; @@ -222,7 +222,10 @@ char inkey(void) if (!done && (0 != term_inkey(&kk, FALSE, FALSE))) { start_term_fresh(); - all_term_fresh(x, y); + if (do_all_term_refresh) + all_term_fresh(x, y); + else + term_fresh(); current_world_ptr->character_saved = FALSE; signal_count = 0; diff --git a/src/io/input-key-acceptor.h b/src/io/input-key-acceptor.h index 7f642ea77..1180b82bd 100644 --- a/src/io/input-key-acceptor.h +++ b/src/io/input-key-acceptor.h @@ -27,7 +27,7 @@ extern bool inkey_flag; extern int num_more; extern concptr inkey_next; -char inkey(void); +char inkey(bool do_all_term_refresh = false); int inkey_special(bool numpad_cursor); void start_term_fresh(void); void stop_term_fresh(void); diff --git a/src/io/input-key-requester.cpp b/src/io/input-key-requester.cpp index 9ef20ed3d..1103a3bf8 100644 --- a/src/io/input-key-requester.cpp +++ b/src/io/input-key-requester.cpp @@ -224,7 +224,7 @@ void request_command(player_type *player_ptr, int shopping) num_more = 0; inkey_flag = TRUE; term_fresh(); - cmd = inkey(); + cmd = inkey(true); if (!shopping && command_menu && ((cmd == '\r') || (cmd == '\n') || (cmd == 'x') || (cmd == 'X')) && !keymap_act[mode][(byte)(cmd)]) cmd = inkey_from_menu(player_ptr); } -- 2.11.0