OSDN Git Service

[Refactor] 保存済フロア判定を関数化
authordis <dis.rogue@gmail.com>
Tue, 30 Jan 2024 04:15:09 +0000 (13:15 +0900)
committerdis <dis.rogue@gmail.com>
Tue, 30 Jan 2024 04:15:16 +0000 (13:15 +0900)
可読性向上のため PlayerType::in_saved_floor() を定義する。
floor_idが0でないとき、すなわちセーブ済フロアに居る時真を返す。

src/floor/floor-changer.cpp
src/floor/floor-leaver.cpp
src/save/floor-writer.cpp
src/system/player-type-definition.cpp
src/system/player-type-definition.h

index 5ae0295..81fe387 100644 (file)
@@ -230,7 +230,7 @@ static void check_visited_floor(PlayerType *player_ptr, saved_floor_type *sf_ptr
 
 static void update_floor_id(PlayerType *player_ptr, saved_floor_type *sf_ptr)
 {
-    if (player_ptr->floor_id == 0) {
+    if (!player_ptr->in_saved_floor()) {
         if (player_ptr->change_floor_mode & CFM_UP) {
             sf_ptr->lower_floor_id = 0;
         } else if (player_ptr->change_floor_mode & CFM_DOWN) {
index 6537a78..47ea5e2 100644 (file)
@@ -410,7 +410,7 @@ static void exe_leave_floor(PlayerType *player_ptr, saved_floor_type *sf_ptr)
     jump_floors(player_ptr);
     exit_to_wilderness(player_ptr);
     kill_saved_floors(player_ptr, sf_ptr);
-    if (player_ptr->floor_id == 0) {
+    if (!player_ptr->in_saved_floor()) {
         return;
     }
 
index 4439832..2cd3ca8 100644 (file)
@@ -167,7 +167,7 @@ bool wr_dungeon(PlayerType *player_ptr)
     RedrawingFlagsUpdater::get_instance().set_flags(flags);
     wr_s16b(max_floor_id);
     wr_byte((byte)player_ptr->current_floor_ptr->dungeon_idx);
-    if (!player_ptr->floor_id) {
+    if (!player_ptr->in_saved_floor()) {
         /* No array elements */
         wr_byte(0);
         wr_saved_floor(player_ptr, nullptr);
index cc99678..55a69d7 100644 (file)
@@ -124,3 +124,8 @@ bool PlayerType::is_located_at(const Pos2D &pos) const
 {
     return (this->y == pos.y) && (this->x == pos.x);
 }
+
+bool PlayerType::in_saved_floor() const
+{
+    return this->floor_id != 0;
+}
index 8088315..d7f7018 100644 (file)
@@ -405,6 +405,7 @@ public:
     Pos2D get_position() const;
     bool is_located_at_running_destination() const;
     bool is_located_at(const Pos2D &pos) const;
+    bool in_saved_floor() const;
 
 private:
     std::shared_ptr<TimedEffects> timed_effects;