OSDN Git Service

[Refactor] フロア保存済か否かを関数化する
authordis <dis.rogue@gmail.com>
Tue, 30 Jan 2024 04:26:30 +0000 (13:26 +0900)
committerdis <dis.rogue@gmail.com>
Tue, 30 Jan 2024 04:26:36 +0000 (13:26 +0900)
可読性向上のため is_saved_floor() を定義する。
floor_idが0でないとき、すなわち保存済である場合真を返す。

src/floor/floor-save-util.cpp
src/floor/floor-save-util.h
src/floor/floor-save.cpp
src/load/dungeon-loader.cpp
src/save/floor-writer.cpp

index d2c6c82..b7df2b1 100644 (file)
@@ -10,3 +10,13 @@ FLOOR_IDX max_floor_id; /*!< Number of floor_id used from birth */
 FLOOR_IDX new_floor_id; /*!<次のフロアのID / floor_id of the destination */
 uint32_t latest_visit_mark; /*!<フロアを渡った回数?(確認中) / Max number of visit_mark */
 MonsterEntity party_mon[MAX_PARTY_MON]; /*!< フロア移動に保存するペットモンスターの配列 */
+
+/*!
+ * @brief フロアIDが0でないとき、すなわち保存済フロアの場合真を返す。
+ * @param sf_ptr 保存フロアのポインタ
+ * @return フロアIDが0でないときtrue、0のときfalseを返す。
+ */
+bool is_saved_floor(saved_floor_type *sf_ptr)
+{
+    return sf_ptr->floor_id != 0;
+}
index d0bca0b..645c4b1 100644 (file)
@@ -23,3 +23,4 @@ extern FLOOR_IDX max_floor_id;
 extern FLOOR_IDX new_floor_id;
 extern uint32_t latest_visit_mark;
 extern MonsterEntity party_mon[MAX_PARTY_MON];
+extern bool is_saved_floor(saved_floor_type *sf_ptr);
index bee24b8..85015c0 100644 (file)
@@ -92,7 +92,7 @@ void clear_saved_floor_files(PlayerType *player_ptr)
 {
     for (int i = 0; i < MAX_SAVED_FLOORS; i++) {
         saved_floor_type *sf_ptr = &saved_floors[i];
-        if ((sf_ptr->floor_id == 0) || (sf_ptr->floor_id == player_ptr->floor_id)) {
+        if (!is_saved_floor(sf_ptr) || (sf_ptr->floor_id == player_ptr->floor_id)) {
             continue;
         }
 
@@ -130,7 +130,7 @@ saved_floor_type *get_sf_ptr(FLOOR_IDX floor_id)
  */
 void kill_saved_floor(PlayerType *player_ptr, saved_floor_type *sf_ptr)
 {
-    if (!sf_ptr || (sf_ptr->floor_id == 0)) {
+    if (!sf_ptr || !is_saved_floor(sf_ptr)) {
         return;
     }
 
@@ -177,7 +177,7 @@ FLOOR_IDX get_new_floor_id(PlayerType *player_ptr)
     FLOOR_IDX fl_idx;
     for (fl_idx = 0; fl_idx < MAX_SAVED_FLOORS; fl_idx++) {
         sf_ptr = &saved_floors[fl_idx];
-        if (!sf_ptr->floor_id) {
+        if (!is_saved_floor(sf_ptr)) {
             break;
         }
     }
index 0882488..834d985 100644 (file)
@@ -62,7 +62,7 @@ static errr rd_dungeon(PlayerType *player_ptr)
 
         for (int i = 0; i < num; i++) {
             saved_floor_type *sf_ptr = &saved_floors[i];
-            if (!sf_ptr->floor_id) {
+            if (!is_saved_floor(sf_ptr)) {
                 continue;
             }
             if (rd_byte() != 0) {
index 2cd3ca8..dc934fb 100644 (file)
@@ -195,7 +195,7 @@ bool wr_dungeon(PlayerType *player_ptr)
 
     for (int i = 0; i < MAX_SAVED_FLOORS; i++) {
         saved_floor_type *sf_ptr = &saved_floors[i];
-        if (!sf_ptr->floor_id) {
+        if (!is_saved_floor(sf_ptr)) {
             continue;
         }
         if (!load_floor(player_ptr, sf_ptr, (SLF_SECOND | SLF_NO_KILL))) {