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;