OSDN Git Service

[Refactor] #3779 is_winner_class() をAngbandWorld のオブジェクトメソッドへ繰り込んだ
authorHourier <66951241+Hourier@users.noreply.github.com>
Sat, 9 Dec 2023 03:09:03 +0000 (12:09 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Sat, 9 Dec 2023 13:03:54 +0000 (22:03 +0900)
src/birth/birth-select-class.cpp
src/world/world.cpp
src/world/world.h

index b12a121..1797813 100644 (file)
 
 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();
 }
 
index e835d15..5401b84 100644 (file)
@@ -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);
 }
 
 /*!
index 5b86a0b..3159ff4 100644 (file)
@@ -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);