From 5d2f882110343bfee2b10bffb6453d0bef1d4e79 Mon Sep 17 00:00:00 2001 From: Habu Date: Tue, 16 May 2023 22:50:34 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20=E5=B9=BB=E8=A6=9A=E6=99=82?= =?utf8?q?=E3=81=AE=E3=82=B7=E3=83=B3=E3=83=9C=E3=83=AB=E9=81=B8=E6=8A=9E?= =?utf8?q?=E3=82=92=20rand=5Fchoice=20=E3=81=A7=E7=BD=AE=E3=81=8D=E6=8F=9B?= =?utf8?q?=E3=81=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 幻覚時に選択するシンボルのテーブルを std::string に変更し、rand_choiceで 選択する。 --- src/view/display-map.cpp | 13 +++++++------ src/view/display-map.h | 5 ----- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/view/display-map.cpp b/src/view/display-map.cpp index 715fe22f4..ab31e0b18 100644 --- a/src/view/display-map.cpp +++ b/src/view/display-map.cpp @@ -32,11 +32,13 @@ byte display_autopick; /*!< 自動拾い状態の設定フラグ */ +namespace { /* 一般的にオブジェクトシンボルとして扱われる記号を定義する(幻覚処理向け) / Hack -- Legal object codes */ -char image_object_hack[MAX_IMAGE_OBJECT_HACK] = "?/|\\\"!$()_-=[]{},~"; +const std::string image_objects = R"(?/|\"!$()_-=[]{},~)"; /* 一般的にモンスターシンボルとして扱われる記号を定義する(幻覚処理向け) / Hack -- Legal monster codes */ -char image_monster_hack[MAX_IMAGE_MONSTER_HACK] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; +const std::string image_monsters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; +} /*! * @brief オブジェクトの表示を幻覚状態に差し替える / Hallucinatory object @@ -53,8 +55,7 @@ static void image_object(TERM_COLOR *ap, char *cp) return; } - size_t n = sizeof(image_object_hack) - 1; - *cp = image_object_hack[randint0(n)]; + *cp = rand_choice(image_objects); *ap = randint1(15); } @@ -73,7 +74,7 @@ static void image_monster(TERM_COLOR *ap, char *cp) return; } - *cp = (one_in_(25) ? image_object_hack[randint0(sizeof(image_object_hack) - 1)] : image_monster_hack[randint0(sizeof(image_monster_hack) - 1)]); + *cp = one_in_(25) ? rand_choice(image_objects) : rand_choice(image_monsters); *ap = randint1(15); } @@ -383,7 +384,7 @@ void map_info(PlayerType *player_ptr, POSITION y, POSITION x, TERM_COLOR *ap, ch *cp = tmp_r_ptr->x_char; *ap = tmp_r_ptr->x_attr; } else { - *cp = (one_in_(25) ? image_object_hack[randint0(sizeof(image_object_hack) - 1)] : image_monster_hack[randint0(sizeof(image_monster_hack) - 1)]); + *cp = one_in_(25) ? rand_choice(image_objects) : rand_choice(image_monsters); } set_term_color(player_ptr, y, x, ap, cp); diff --git a/src/view/display-map.h b/src/view/display-map.h index 87acb95c1..c69d4bdb5 100644 --- a/src/view/display-map.h +++ b/src/view/display-map.h @@ -2,12 +2,7 @@ #include "system/angband.h" -#define MAX_IMAGE_OBJECT_HACK 19 -#define MAX_IMAGE_MONSTER_HACK 53 - extern byte display_autopick; -extern char image_object_hack[MAX_IMAGE_OBJECT_HACK]; -extern char image_monster_hack[MAX_IMAGE_MONSTER_HACK]; class PlayerType; void map_info(PlayerType *player_ptr, POSITION y, POSITION x, TERM_COLOR *ap, char *cp, TERM_COLOR *tap, char *tcp); -- 2.11.0