From 9669a9ba85babbde218ba5faa84684325ab04bb8 Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Sat, 9 Dec 2023 12:09:03 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#3779=20is=5Fwinner=5Fclass()=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 | 33 +++++++++++++++++---------------- src/world/world.cpp | 5 +++-- src/world/world.h | 2 +- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/birth/birth-select-class.cpp b/src/birth/birth-select-class.cpp index b12a121c0..179781343 100644 --- a/src/birth/birth-select-class.cpp +++ b/src/birth/birth-select-class.cpp @@ -14,32 +14,33 @@ static TERM_COLOR birth_class_color(PlayerClassType cs) { - if (cs < PlayerClassType::MAX) { - if (is_retired_class(cs)) { - return TERM_L_DARK; - } - if (is_winner_class(cs)) { - return TERM_SLATE; - } + if (cs >= PlayerClassType::MAX) { + return TERM_WHITE; + } + + if (is_retired_class(cs)) { + return TERM_L_DARK; } - return TERM_WHITE; + + return w_ptr->is_winner_class(cs) ? TERM_SLATE : TERM_WHITE; } static std::string birth_class_label(int cs, concptr sym) { - const char p2 = ')'; + constexpr auto p2 = ')'; std::stringstream ss; - if (cs < 0 || cs >= PLAYER_CLASS_TYPE_MAX) { ss << '*' << p2 << _("ランダム", "Random"); + return ss.str(); + } + + ss << sym[cs] << p2; + if (!(rp_ptr->choice & (1UL << cs))) { + ss << '(' << class_info[cs].title << ')'; } else { - ss << sym[cs] << p2; - if (!(rp_ptr->choice & (1UL << cs))) { - ss << '(' << class_info[cs].title << ')'; - } else { - ss << class_info[cs].title; - } + ss << class_info[cs].title; } + return ss.str(); } diff --git a/src/world/world.cpp b/src/world/world.cpp index e835d156c..5401b848a 100644 --- a/src/world/world.cpp +++ b/src/world/world.cpp @@ -98,12 +98,13 @@ void AngbandWorld::add_retired_class(PlayerClassType c) /*! * @brief 勝利したクラスか判定する */ -bool is_winner_class(PlayerClassType c) +bool AngbandWorld::is_winner_class(PlayerClassType c) const { if (c == PlayerClassType::MAX) { return false; } - return w_ptr->sf_winner.has(c); + + return this->sf_winner.has(c); } /*! diff --git a/src/world/world.h b/src/world/world.h index 5b86a0bd1..3159ff41e 100644 --- a/src/world/world.h +++ b/src/world/world.h @@ -79,6 +79,7 @@ public: void update_playtime(); void add_winner_class(PlayerClassType c); void add_retired_class(PlayerClassType c); + bool is_winner_class(PlayerClassType c) const; private: bool is_out_arena = false; // アリーナ外部にいる時だけtrue. @@ -86,5 +87,4 @@ private: extern AngbandWorld *w_ptr; -bool is_winner_class(PlayerClassType c); bool is_retired_class(PlayerClassType c); -- 2.11.0