From 2c616cc67b309059c94a1d10147450a590e04551 Mon Sep 17 00:00:00 2001 From: dis Date: Tue, 30 Jan 2024 13:15:09 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20=E4=BF=9D=E5=AD=98=E6=B8=88?= =?utf8?q?=E3=83=95=E3=83=AD=E3=82=A2=E5=88=A4=E5=AE=9A=E3=82=92=E9=96=A2?= =?utf8?q?=E6=95=B0=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 可読性向上のため PlayerType::in_saved_floor() を定義する。 floor_idが0でないとき、すなわちセーブ済フロアに居る時真を返す。 --- src/floor/floor-changer.cpp | 2 +- src/floor/floor-leaver.cpp | 2 +- src/save/floor-writer.cpp | 2 +- src/system/player-type-definition.cpp | 5 +++++ src/system/player-type-definition.h | 1 + 5 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/floor/floor-changer.cpp b/src/floor/floor-changer.cpp index 5ae0295a0..81fe387dc 100644 --- a/src/floor/floor-changer.cpp +++ b/src/floor/floor-changer.cpp @@ -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) { diff --git a/src/floor/floor-leaver.cpp b/src/floor/floor-leaver.cpp index 6537a78b5..47ea5e2e0 100644 --- a/src/floor/floor-leaver.cpp +++ b/src/floor/floor-leaver.cpp @@ -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; } diff --git a/src/save/floor-writer.cpp b/src/save/floor-writer.cpp index 44398328e..2cd3ca823 100644 --- a/src/save/floor-writer.cpp +++ b/src/save/floor-writer.cpp @@ -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); diff --git a/src/system/player-type-definition.cpp b/src/system/player-type-definition.cpp index cc99678c1..55a69d7d5 100644 --- a/src/system/player-type-definition.cpp +++ b/src/system/player-type-definition.cpp @@ -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; +} diff --git a/src/system/player-type-definition.h b/src/system/player-type-definition.h index 80883153b..d7f701803 100644 --- a/src/system/player-type-definition.h +++ b/src/system/player-type-definition.h @@ -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 timed_effects; -- 2.11.0