OSDN Git Service

[Refactor] #3286 PlayerType::redraw に関わる処理を、RedrawingFlagsUpdaterに集約した
[hengbandforosx/hengbandosx.git] / src / racial / racial-kutar.cpp
index 306a4a8..e79a347 100644 (file)
@@ -1,10 +1,10 @@
 #include "racial/racial-kutar.h"
 #include "core/disturbance.h"
 #include "core/player-redraw-types.h"
-#include "core/player-update-types.h"
 #include "core/stuff-handler.h"
 #include "game-option/disturbance-options.h"
 #include "system/player-type-definition.h"
+#include "system/redrawing-flags-updater.h"
 #include "view/display-messages.h"
 
 /*!
  * @param do_dec 現在の継続時間より長い値のみ上書きする
  * @return ステータスに影響を及ぼす変化があった場合TRUEを返す。
  */
-bool set_leveling(player_type *player_ptr, TIME_EFFECT v, bool do_dec)
+bool set_leveling(PlayerType *player_ptr, TIME_EFFECT v, bool do_dec)
 {
     bool notice = false;
-    v = (v > 10000) ? 10000 : (v < 0) ? 0 : v;
+    v = (v > 10000) ? 10000 : (v < 0) ? 0
+                                      : v;
 
-    if (player_ptr->is_dead)
+    if (player_ptr->is_dead) {
         return false;
+    }
 
     if (v) {
         if (player_ptr->tsubureru && !do_dec) {
-            if (player_ptr->tsubureru > v)
+            if (player_ptr->tsubureru > v) {
                 return false;
+            }
         } else if (!player_ptr->tsubureru) {
             msg_print(_("横に伸びた。", "Your body expands horizontally."));
             notice = true;
@@ -37,14 +40,17 @@ bool set_leveling(player_type *player_ptr, TIME_EFFECT v, bool do_dec)
     }
 
     player_ptr->tsubureru = v;
-    player_ptr->redraw |= (PR_STATUS);
-
-    if (!notice)
+    auto &rfu = RedrawingFlagsUpdater::get_instance();
+    rfu.set_flag(MainWindowRedrawingFlag::TIMED_EFFECT);
+    if (!notice) {
         return false;
+    }
 
-    if (disturb_state)
+    if (disturb_state) {
         disturb(player_ptr, false, false);
-    player_ptr->update |= (PU_BONUS);
+    }
+
+    rfu.set_flag(StatusRedrawingFlag::BONUS);
     handle_stuff(player_ptr);
     return true;
 }