From 6008af6368b8e3ede94380fe755a9ae0b2b0be62 Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Sat, 9 Dec 2023 12:15:52 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#3779=20birth=5Fclass=5Fcolor()=20?= =?utf8?q?=E3=82=92AngbandWorld=20=E3=81=AE=E3=82=AA=E3=83=96=E3=82=B8?= =?utf8?q?=E3=82=A7=E3=82=AF=E3=83=88=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89?= =?utf8?q?=E3=81=B8=E7=B9=B0=E3=82=8A=E8=BE=BC=E3=82=93=E3=81=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/birth/birth-select-class.cpp | 17 ++--------------- src/world/world.cpp | 14 ++++++++++++++ src/world/world.h | 7 +++++-- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/birth/birth-select-class.cpp b/src/birth/birth-select-class.cpp index 67656e073..992d0b771 100644 --- a/src/birth/birth-select-class.cpp +++ b/src/birth/birth-select-class.cpp @@ -12,19 +12,6 @@ #include "world/world.h" #include -static TERM_COLOR birth_class_color(PlayerClassType cs) -{ - if (cs >= PlayerClassType::MAX) { - return TERM_WHITE; - } - - if (w_ptr->is_retired_class(cs)) { - return TERM_L_DARK; - } - - return w_ptr->is_winner_class(cs) ? TERM_SLATE : TERM_WHITE; -} - static std::string birth_class_label(int cs, concptr sym) { constexpr auto p2 = ')'; @@ -56,7 +43,7 @@ static void enumerate_class_list(char *sym) } auto cs = i2enum(n); - c_put_str(birth_class_color(cs), birth_class_label(n, sym), 13 + (n / 4), 2 + 19 * (n % 4)); + c_put_str(w_ptr->get_birth_class_color(cs), birth_class_label(n, sym), 13 + (n / 4), 2 + 19 * (n % 4)); } } @@ -67,7 +54,7 @@ static std::string display_class_stat(int cs, int *os, const std::string &cur, c } auto pclass = i2enum(*os); - c_put_str(birth_class_color(pclass), cur, 13 + (*os / 4), 2 + 19 * (*os % 4)); + c_put_str(w_ptr->get_birth_class_color(pclass), cur, 13 + (*os / 4), 2 + 19 * (*os % 4)); put_str(" ", 3, 40); auto result = birth_class_label(cs, sym); if (cs == PLAYER_CLASS_TYPE_MAX) { diff --git a/src/world/world.cpp b/src/world/world.cpp index 418d7e136..8f67d1109 100644 --- a/src/world/world.cpp +++ b/src/world/world.cpp @@ -1,6 +1,7 @@ #include "world/world.h" #include "player-info/race-types.h" #include "system/player-type-definition.h" +#include "term/term-color-types.h" #include "util/bit-flags-calculator.h" AngbandWorld world; @@ -95,6 +96,19 @@ void AngbandWorld::add_retired_class(PlayerClassType c) } } +term_color_type AngbandWorld::get_birth_class_color(PlayerClassType c) const +{ + if (c >= PlayerClassType::MAX) { + return TERM_WHITE; + } + + if (this->is_retired_class(c)) { + return TERM_L_DARK; + } + + return this->is_winner_class(c) ? TERM_SLATE : TERM_WHITE; +} + /*! * @brief 勝利したクラスか判定する */ diff --git a/src/world/world.h b/src/world/world.h index 5be8e1ac5..58abdfc43 100644 --- a/src/world/world.h +++ b/src/world/world.h @@ -12,6 +12,7 @@ constexpr auto MAX_BOUNTY = 20; /*! * @brief 世界情報構造体 */ +enum term_color_type : unsigned char; enum class PlayerRaceType; class AngbandWorld { public: @@ -79,11 +80,13 @@ public: void update_playtime(); void add_winner_class(PlayerClassType c); void add_retired_class(PlayerClassType c); - bool is_winner_class(PlayerClassType c) const; - bool is_retired_class(PlayerClassType c) const; + term_color_type get_birth_class_color(PlayerClassType c) const; private: bool is_out_arena = false; // アリーナ外部にいる時だけtrue. + + bool is_winner_class(PlayerClassType c) const; + bool is_retired_class(PlayerClassType c) const; }; extern AngbandWorld *w_ptr; -- 2.11.0