diff --git a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj
index 117449f3b7..dbec08a28a 100644
--- a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj
+++ b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj
@@ -1607,7 +1607,7 @@
-
+
diff --git a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters
index a05c42f097..9a99652d62 100644
--- a/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters
+++ b/Bakabakaband/Bakabakaband/Bakabakaband.vcxproj.filters
@@ -2514,6 +2514,9 @@
monster
+
+ save
+
@@ -3818,9 +3821,6 @@
monster-floor
-
- system
-
game-option
@@ -5437,13 +5437,15 @@
market
-
-
-
-
-
-
-
+
+ floor
+
+
+ save
+
+
+ system\enums
+
@@ -5711,6 +5713,9 @@
{a5b8bf13-a675-4500-8b4c-37ea664757eb}
+
+ {31491e27-d3e4-4605-b68a-c2c00d563479}
+
diff --git a/src/Makefile.am b/src/Makefile.am
index b8967677d2..edc30c470e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -935,7 +935,6 @@ hengband_SOURCES = \
system/dungeon-info.cpp system/dungeon-info.h \
system/floor-type-definition.cpp system/floor-type-definition.h \
system/grid-type-definition.cpp system/grid-type-definition.h \
- system/game-option-types.h \
system/h-basic.h system/h-config.h \
system/h-system.h system/h-type.h \
system/inner-game-data.cpp system/inner-game-data.h \
@@ -949,6 +948,8 @@ hengband_SOURCES = \
system/terrain-type-definition.cpp system/terrain-type-definition.h \
system/gamevalue.h \
\
+ system/enums/game-option-page.h \
+ \
target/grid-selector.cpp target/grid-selector.h \
target/projection-path-calculator.cpp target/projection-path-calculator.h \
target/target-checker.cpp target/target-checker.h \
diff --git a/src/birth/auto-roller.cpp b/src/birth/auto-roller.cpp
index de0d4da1f5..7283b86599 100644
--- a/src/birth/auto-roller.cpp
+++ b/src/birth/auto-roller.cpp
@@ -10,7 +10,7 @@
#include "player/player-personality.h"
#include "player/player-sex.h"
#include "player/player-status-table.h"
-#include "system/game-option-types.h"
+#include "system/enums/game-option-page.h"
#include "system/player-type-definition.h"
#include "term/screen-processor.h"
#include "term/term-color-types.h"
@@ -36,8 +36,8 @@ static int32_t get_autoroller_prob(int *minval)
/* 1 percent of the valid random space (60^6 && 72 MAXITEMS) {
- cs = MAXITEMS;
+ if (cs > max_items) {
+ cs = max_items;
}
break;
case '4':
@@ -521,13 +520,13 @@ bool get_chara_limits(PlayerType *player_ptr, chara_limit_type *chara_limit_ptr)
break;
case '6':
case 'l':
- if (cs < MAXITEMS) {
+ if (cs < max_items) {
cs++;
}
break;
case '-':
case '<':
- if (cs != MAXITEMS) {
+ if (cs != max_items) {
if (cs % 2) {
if (cval[cs] > cval[cs - 1]) {
cval[cs]--;
@@ -544,7 +543,7 @@ bool get_chara_limits(PlayerType *player_ptr, chara_limit_type *chara_limit_ptr)
break;
case '+':
case '>':
- if (cs != MAXITEMS) {
+ if (cs != max_items) {
if (cs % 2) {
if (cval[cs] < mval[cs]) {
cval[cs]++;
@@ -560,7 +559,7 @@ bool get_chara_limits(PlayerType *player_ptr, chara_limit_type *chara_limit_ptr)
break;
case 'm':
- if (cs != MAXITEMS) {
+ if (cs != max_items) {
if (cs % 2) {
if (cval[cs] < mval[cs]) {
cval[cs] = mval[cs];
@@ -576,7 +575,7 @@ bool get_chara_limits(PlayerType *player_ptr, chara_limit_type *chara_limit_ptr)
break;
case 'n':
- if (cs != MAXITEMS) {
+ if (cs != max_items) {
if (cs % 2) {
if (cval[cs] > cval[cs - 1]) {
cval[cs] = cval[cs - 1];
@@ -608,7 +607,7 @@ bool get_chara_limits(PlayerType *player_ptr, chara_limit_type *chara_limit_ptr)
break;
}
- if (c == ESCAPE || ((c == ' ' || c == '\r' || c == '\n') && cs == MAXITEMS)) {
+ if (c == ESCAPE || ((c == ' ' || c == '\r' || c == '\n') && cs == max_items)) {
break;
}
}
diff --git a/src/birth/birth-util.cpp b/src/birth/birth-util.cpp
index 9b96e2b51b..dd59382dcd 100644
--- a/src/birth/birth-util.cpp
+++ b/src/birth/birth-util.cpp
@@ -2,7 +2,7 @@
#include "cmd-io/cmd-gameoption.h"
#include "core/show-file.h"
#include "main/sound-of-music.h"
-#include "system/game-option-types.h"
+#include "system/enums/game-option-page.h"
#include "system/player-type-definition.h"
#include "term/screen-processor.h"
diff --git a/src/birth/birth-wizard.cpp b/src/birth/birth-wizard.cpp
index 5aadc6ff69..9da31c7362 100644
--- a/src/birth/birth-wizard.cpp
+++ b/src/birth/birth-wizard.cpp
@@ -30,7 +30,7 @@
#include "player/player-status-table.h"
#include "player/player-status.h"
#include "player/process-name.h"
-#include "system/game-option-types.h"
+#include "system/enums/game-option-page.h"
#include "system/player-type-definition.h"
#include "system/redrawing-flags-updater.h"
#include "term/screen-processor.h"
@@ -47,16 +47,6 @@
#include "world/world.h"
#include
-/*!
- * オートローラーの内容を描画する間隔 /
- * How often the autoroller will update the display and pause
- * to check for user interuptions.
- * Bigger values will make the autoroller faster, but slower
- * system may have problems because the user can't stop the
- * autoroller for this number of rolls.
- */
-#define AUTOROLLER_STEP 54321L
-
static void display_initial_birth_message(PlayerType *player_ptr)
{
term_clear();
@@ -273,7 +263,7 @@ static bool let_player_build_character(PlayerType *player_ptr)
static void display_initial_options(PlayerType *player_ptr)
{
const auto expfact_mod = static_cast(get_expfact(player_ptr)) - 100;
- int16_t adj[A_MAX];
+ int16_t adj[A_MAX]{};
for (int i = 0; i < A_MAX; i++) {
adj[i] = rp_ptr->r_adj[i] + cp_ptr->c_adj[i] + ap_ptr->a_adj[i];
}
@@ -398,7 +388,13 @@ static bool decide_body_spec(PlayerType *player_ptr, chara_limit_type chara_limi
static bool display_auto_roller_count(PlayerType *player_ptr, const int col)
{
- if ((auto_round % AUTOROLLER_STEP) != 0) {
+ /*!
+ * @details ここで指定された回数だけロールする度にその時の結果を画面に表示する
+ * @todo この定数を定義した時代に比べて、CPUパワーが相当に上がっている.
+ * 表示部で足を引っ張っているので、タイマで数えて0.1秒/表示 くらいで良いと思われる.
+ */
+ constexpr auto roll_results_per_display = 54321;
+ if ((auto_round % roll_results_per_display) != 0) {
return false;
}
diff --git a/src/cmd-io/cmd-gameoption.cpp b/src/cmd-io/cmd-gameoption.cpp
index c112bf37bc..8ec067b248 100644
--- a/src/cmd-io/cmd-gameoption.cpp
+++ b/src/cmd-io/cmd-gameoption.cpp
@@ -14,7 +14,7 @@
#include "io/input-key-acceptor.h"
#include "io/write-diary.h"
#include "main/sound-of-music.h"
-#include "system/game-option-types.h"
+#include "system/enums/game-option-page.h"
#include "system/player-type-definition.h"
#include "system/redrawing-flags-updater.h"
#include "term/gameterm.h"
@@ -26,16 +26,16 @@
#include "view/display-messages.h"
#include "view/display-symbol.h"
#include "world/world.h"
+#include
-#define OPT_NUM 15
-
+namespace {
struct opts {
char key;
- concptr name;
+ std::string name;
int row;
};
-static opts option_fields[OPT_NUM] = {
+const std::vector option_fields = {
{ '1', _(" キー入力 オプション", "Input Options"), 3 },
{ '2', _(" マップ画面 オプション", "Map Screen Options"), 4 },
{ '3', _(" テキスト表示 オプション", "Text Display Options"), 5 },
@@ -54,6 +54,7 @@ static opts option_fields[OPT_NUM] = {
{ 'b', _(" 初期 オプション (参照のみ)", "Birth Options (Browse Only)"), 18 },
{ 'c', _(" 詐欺 オプション", "Cheat Options"), 19 },
};
+}
/*!
* @brief セーブ頻度ターンの次の値を返す
@@ -446,7 +447,7 @@ void do_cmd_options(PlayerType *player_ptr)
screen_save();
const auto &world = AngbandWorld::get_instance();
while (true) {
- int n = OPT_NUM;
+ auto n = std::ssize(option_fields);
if (!world.noscore && !allow_debug_opts) {
n--;
}
@@ -459,7 +460,7 @@ void do_cmd_options(PlayerType *player_ptr)
if (i == y) {
a = TERM_L_BLUE;
}
- term_putstr(5, option_fields[i].row, -1, a, format("(%c) %s", toupper(option_fields[i].key), option_fields[i].name));
+ term_putstr(5, option_fields[i].row, -1, a, format("(%c) %s", toupper(option_fields[i].key), option_fields[i].name.data()));
}
prt(_("<方向>で移動, Enterで決定, ESCでキャンセル, ?でヘルプ: ", "Move to , Select to Enter, Cancel to ESC, ? to help: "), 21, 0);
@@ -653,7 +654,7 @@ void do_cmd_options(PlayerType *player_ptr)
* @param page オプションページ番号
* @param info 表示メッセージ
*/
-void do_cmd_options_aux(PlayerType *player_ptr, game_option_types page, concptr info)
+void do_cmd_options_aux(PlayerType *player_ptr, game_option_page page, concptr info)
{
char ch;
int i, k = 0, n = 0, l;
diff --git a/src/cmd-io/cmd-gameoption.h b/src/cmd-io/cmd-gameoption.h
index 4de11259b7..8a85719291 100644
--- a/src/cmd-io/cmd-gameoption.h
+++ b/src/cmd-io/cmd-gameoption.h
@@ -1,9 +1,9 @@
#pragma once
#include "system/angband.h"
-#include "system/game-option-types.h"
+enum game_option_page : int;
class PlayerType;
-void extract_option_vars(void);
-void do_cmd_options_aux(PlayerType *player_ptr, game_option_types page, concptr info);
+void extract_option_vars();
+void do_cmd_options_aux(PlayerType *player_ptr, game_option_page page, concptr info);
void do_cmd_options(PlayerType *player_ptr);
diff --git a/src/game-option/option-types-table.cpp b/src/game-option/option-types-table.cpp
index 82919072ba..1eb2247a8a 100644
--- a/src/game-option/option-types-table.cpp
+++ b/src/game-option/option-types-table.cpp
@@ -9,7 +9,7 @@
#include "game-option/play-record-options.h"
#include "game-option/special-options.h"
#include "game-option/text-display-options.h"
-#include "system/game-option-types.h"
+#include "system/enums/game-option-page.h"
/*!
* @brief オプションテーブル /
diff --git a/src/io/interpret-pref-file.cpp b/src/io/interpret-pref-file.cpp
index 79d43374d8..50c5ccdedf 100644
--- a/src/io/interpret-pref-file.cpp
+++ b/src/io/interpret-pref-file.cpp
@@ -14,7 +14,7 @@
#include "io/input-key-requester.h"
#include "io/tokenizer.h"
#include "system/baseitem-info.h"
-#include "system/game-option-types.h"
+#include "system/enums/game-option-page.h"
#include "system/monster-race-info.h"
#include "system/player-type-definition.h"
#include "system/terrain-type-definition.h"
@@ -23,8 +23,6 @@
#include "view/display-messages.h"
#include "world/world.h"
-#define MAX_MACRO_CHARS 16128 // 1つのマクロキー押下で実行可能なコマンド最大数 (エスケープシーケンス含む).
-
std::optional histpref_buf;
/*!
@@ -449,7 +447,9 @@ static bool decide_template_modifier(int tok, char **zz)
*/
static bool interpret_macro_keycodes(int tok, char **zz)
{
- char buf_aux[MAX_MACRO_CHARS]{};
+ //!< @details 1つのマクロキー押下で実行可能なコマンド最大数 (エスケープシーケンス含む).
+ constexpr auto max_macro_chars = 16128;
+ char buf_aux[max_macro_chars]{};
if (max_macrotrigger >= MAX_MACRO_TRIG) {
msg_print(_("マクロトリガーの設定が多すぎます!", "Too many macro triggers!"));
return false;
diff --git a/src/mind/mind-elementalist.cpp b/src/mind/mind-elementalist.cpp
index 462b80ef05..1362f7cddf 100644
--- a/src/mind/mind-elementalist.cpp
+++ b/src/mind/mind-elementalist.cpp
@@ -54,8 +54,8 @@
#include "spell-kind/spells-world.h"
#include "status/bad-status-setter.h"
#include "status/base-status.h"
+#include "system/enums/game-option-page.h"
#include "system/floor-type-definition.h"
-#include "system/game-option-types.h"
#include "system/grid-type-definition.h"
#include "system/monster-entity.h"
#include "system/monster-race-info.h"
@@ -990,7 +990,7 @@ void display_element_spell_list(PlayerType *player_ptr, int y, int x)
* @param type 魔法攻撃属性
* @return 効果があるならTRUE、なければFALSE
*/
-bool is_elemental_genocide_effective(MonsterRaceInfo *r_ptr, AttributeType type)
+static bool is_elemental_genocide_effective(MonsterRaceInfo *r_ptr, AttributeType type)
{
switch (type) {
case AttributeType::FIRE:
diff --git a/src/system/game-option-types.h b/src/system/enums/game-option-page.h
similarity index 87%
rename from src/system/game-option-types.h
rename to src/system/enums/game-option-page.h
index f4a8c702fe..2033afb052 100644
--- a/src/system/game-option-types.h
+++ b/src/system/enums/game-option-page.h
@@ -1,6 +1,6 @@
#pragma once
-enum game_option_types {
+enum game_option_page : int {
OPT_PAGE_INPUT,
OPT_PAGE_MAPSCREEN,
OPT_PAGE_TEXT,
diff --git a/src/util/string-processor.cpp b/src/util/string-processor.cpp
index eba327e09c..a230a10486 100644
--- a/src/util/string-processor.cpp
+++ b/src/util/string-processor.cpp
@@ -104,7 +104,7 @@ static void trigger_text_to_ascii(char **bufptr, concptr *strptr)
{
char *s = *bufptr;
concptr str = *strptr;
- bool mod_status[MAX_MACRO_MOD];
+ bool mod_status[MAX_MACRO_MOD]{};
int i, len = 0;
int shiftstatus = 0;
@@ -263,7 +263,7 @@ static bool trigger_ascii_to_text(char **bufptr, concptr *strptr)
{
char *s = *bufptr;
concptr str = *strptr;
- char key_code[100];
+ char key_code[100]{};
int i;
if (macro_template == nullptr) {
return false;