OSDN Git Service

[Refactor] #1796 Reshaped item-loader-savefile10.cpp
authorHourier <66951241+Hourier@users.noreply.github.com>
Sat, 16 Oct 2021 12:50:28 +0000 (21:50 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Sun, 17 Oct 2021 05:44:05 +0000 (14:44 +0900)
src/load/old/item-loader-savefile10.cpp

index fa7e9b0..f215961 100644 (file)
@@ -20,7 +20,7 @@
 #include "util/quarks.h"
 
 /*!
- * @brief アイテムオブジェクトを読み込む(現版) / Read an object (New method)
+ * @brief アイテムオブジェクトを読み込む(v3.0.0 Savefile ver10まで)
  * @param o_ptr アイテムオブジェクト保存先ポインタ
  */
 void rd_item(object_type *o_ptr)
@@ -32,89 +32,35 @@ void rd_item(object_type *o_ptr)
 
     auto flags = rd_u32b();
     o_ptr->k_idx = rd_s16b();
-
     o_ptr->iy = rd_byte();
     o_ptr->ix = rd_byte();
-
-    object_kind *k_ptr;
-    k_ptr = &k_info[o_ptr->k_idx];
+    auto *k_ptr = &k_info[o_ptr->k_idx];
     o_ptr->tval = k_ptr->tval;
     o_ptr->sval = k_ptr->sval;
-
-    if (any_bits(flags, SaveDataItemFlagType::PVAL))
-        o_ptr->pval = rd_s16b();
-    else
-        o_ptr->pval = 0;
-
-    if (any_bits(flags, SaveDataItemFlagType::DISCOUNT))
-        o_ptr->discount = rd_byte();
-    else
-        o_ptr->discount = 0;
-    if (any_bits(flags, SaveDataItemFlagType::NUMBER)) {
-        o_ptr->number = rd_byte();
-    } else
-        o_ptr->number = 1;
-
+    o_ptr->pval = any_bits(flags, SaveDataItemFlagType::PVAL) ? rd_s16b() : 0;
+    o_ptr->discount = any_bits(flags, SaveDataItemFlagType::DISCOUNT) ? rd_byte() : 0;
+    o_ptr->number = any_bits(flags, SaveDataItemFlagType::NUMBER) ? rd_byte() : 1;
     o_ptr->weight = rd_s16b();
-
     if (any_bits(flags, SaveDataItemFlagType::NAME1)) {
         if (h_older_than(3, 0, 0, 2)) {
             o_ptr->name1 = rd_byte();
         } else {
             o_ptr->name1 = rd_s16b();
         }
-    } else
+    } else {
         o_ptr->name1 = 0;
+    }
 
-    if (any_bits(flags, SaveDataItemFlagType::NAME2)) {
-        o_ptr->name2 = rd_byte();
-    } else
-        o_ptr->name2 = 0;
-
-    if (any_bits(flags, SaveDataItemFlagType::TIMEOUT))
-        o_ptr->timeout = rd_s16b();
-    else
-        o_ptr->timeout = 0;
-
-    if (any_bits(flags, SaveDataItemFlagType::TO_H))
-        o_ptr->to_h = rd_s16b();
-    else
-        o_ptr->to_h = 0;
-
-    if (any_bits(flags, SaveDataItemFlagType::TO_D)) {
-        o_ptr->to_d = rd_s16b();
-    } else
-        o_ptr->to_d = 0;
-
-    if (any_bits(flags, SaveDataItemFlagType::TO_A))
-        o_ptr->to_a = rd_s16b();
-    else
-        o_ptr->to_a = 0;
-
-    if (any_bits(flags, SaveDataItemFlagType::AC))
-        o_ptr->ac = rd_s16b();
-    else
-        o_ptr->ac = 0;
-
-    if (any_bits(flags, SaveDataItemFlagType::DD)) {
-        o_ptr->dd = rd_byte();
-    } else
-        o_ptr->dd = 0;
-
-    if (any_bits(flags, SaveDataItemFlagType::DS)) {
-        o_ptr->ds = rd_byte();
-    } else
-        o_ptr->ds = 0;
-
-    if (any_bits(flags, SaveDataItemFlagType::IDENT))
-        o_ptr->ident = rd_byte();
-    else
-        o_ptr->ident = 0;
-
-    if (any_bits(flags, SaveDataItemFlagType::MARKED))
-        o_ptr->marked = rd_byte();
-    else
-        o_ptr->marked = 0;
+    o_ptr->name2 = any_bits(flags, SaveDataItemFlagType::NAME2) ? rd_byte() : 0;
+    o_ptr->timeout = any_bits(flags, SaveDataItemFlagType::TIMEOUT) ? rd_s16b() : 0;
+    o_ptr->to_h = any_bits(flags, SaveDataItemFlagType::TO_H) ? rd_s16b() : 0;
+    o_ptr->to_d = any_bits(flags, SaveDataItemFlagType::TO_D) ? rd_s16b() : 0;
+    o_ptr->to_a = any_bits(flags, SaveDataItemFlagType::TO_A) ? rd_s16b() : 0;
+    o_ptr->ac = any_bits(flags, SaveDataItemFlagType::AC) ? rd_s16b() : 0;
+    o_ptr->dd = any_bits(flags, SaveDataItemFlagType::DD) ? rd_byte() : 0;
+    o_ptr->ds = any_bits(flags, SaveDataItemFlagType::DS) ? rd_byte() : 0;
+    o_ptr->ident = any_bits(flags, SaveDataItemFlagType::IDENT) ? rd_byte() : 0;
+    o_ptr->marked = any_bits(flags, SaveDataItemFlagType::MARKED) ? rd_byte() : 0;
 
     /* Object flags */
     if (loading_savefile_version_is_older_than(7)) {
@@ -152,18 +98,8 @@ void rd_item(object_type *o_ptr)
         o_ptr->curse_flags.clear();
     }
 
-    /* Monster holding object */
-    if (any_bits(flags, SaveDataItemFlagType::HELD_M_IDX))
-        o_ptr->held_m_idx = rd_s16b();
-    else
-        o_ptr->held_m_idx = 0;
-
-    /* Special powers */
-    if (any_bits(flags, SaveDataItemFlagType::XTRA1))
-        o_ptr->xtra1 = rd_byte();
-    else
-        o_ptr->xtra1 = 0;
-
+    o_ptr->held_m_idx = any_bits(flags, SaveDataItemFlagType::HELD_M_IDX) ? rd_s16b() : 0;
+    o_ptr->xtra1 = any_bits(flags, SaveDataItemFlagType::XTRA1) ? rd_byte() : 0;
     if (any_bits(flags, SaveDataItemFlagType::ACTIVATION_ID)) {
         if (h_older_than(3, 0, 0, 2)) {
             o_ptr->activation_id = i2enum<RandomArtActType>(rd_byte());
@@ -174,31 +110,11 @@ void rd_item(object_type *o_ptr)
         o_ptr->activation_id = i2enum<RandomArtActType>(0);
     }
 
-    if (any_bits(flags, SaveDataItemFlagType::XTRA3))
-        o_ptr->xtra3 = rd_byte();
-    else
-        o_ptr->xtra3 = 0;
-
-    if (any_bits(flags, SaveDataItemFlagType::XTRA4))
-        o_ptr->xtra4 = rd_s16b();
-    else
-        o_ptr->xtra4 = 0;
-
-    if (any_bits(flags, SaveDataItemFlagType::XTRA5))
-        o_ptr->xtra5 = rd_s16b();
-    else
-        o_ptr->xtra5 = 0;
-
-    if (any_bits(flags, SaveDataItemFlagType::FEELING))
-        o_ptr->feeling = rd_byte();
-    else
-        o_ptr->feeling = 0;
-
-    if (any_bits(flags, SaveDataItemFlagType::STACK_IDX))
-        o_ptr->stack_idx = rd_s16b();
-    else
-        o_ptr->stack_idx = 0;
-
+    o_ptr->xtra3 = any_bits(flags, SaveDataItemFlagType::XTRA3) ? rd_byte() : 0;
+    o_ptr->xtra4 = any_bits(flags, SaveDataItemFlagType::XTRA4) ? rd_s16b() : 0;
+    o_ptr->xtra5 = any_bits(flags, SaveDataItemFlagType::XTRA5) ? rd_s16b() : 0;
+    o_ptr->feeling = any_bits(flags, SaveDataItemFlagType::FEELING) ? rd_byte() : 0;
+    o_ptr->stack_idx = any_bits(flags, SaveDataItemFlagType::STACK_IDX) ? rd_s16b() : 0;
     if (any_bits(flags, SaveDataItemFlagType::SMITH) && !loading_savefile_version_is_older_than(7)) {
         if (auto tmp16s = rd_s16b(); tmp16s > 0) {
             o_ptr->smith_effect = static_cast<SmithEffect>(tmp16s);
@@ -213,8 +129,9 @@ void rd_item(object_type *o_ptr)
         char buf[128];
         rd_string(buf, sizeof(buf));
         o_ptr->inscription = quark_add(buf);
-    } else
+    } else {
         o_ptr->inscription = 0;
+    }
 
     if (any_bits(flags, SaveDataItemFlagType::ART_NAME)) {
         char buf[128];
@@ -224,8 +141,9 @@ void rd_item(object_type *o_ptr)
         o_ptr->art_name = 0;
     }
 
-    if (!h_older_than(2, 1, 2, 4))
+    if (!h_older_than(2, 1, 2, 4)) {
         return;
+    }
 
     if ((o_ptr->name2 == EGO_DARK) || (o_ptr->name2 == EGO_ANCIENT_CURSE) || (o_ptr->name1 == ART_NIGHT)) {
         o_ptr->art_flags.set(TR_LITE_M1);
@@ -278,20 +196,14 @@ void rd_item(object_type *o_ptr)
 }
 
 /*!
- * @brief アイテムオブジェクトの鑑定情報をロードする
+ * @brief アイテムオブジェクトの鑑定情報をロードする.
  */
 void load_item(void)
 {
     auto loading_max_k_idx = rd_u16b();
-
-    object_kind *k_ptr;
     object_kind dummy;
     for (auto i = 0U; i < loading_max_k_idx; i++) {
-        if (i < k_info.size())
-            k_ptr = &k_info[i];
-        else
-            k_ptr = &dummy;
-
+        auto *k_ptr = i < k_info.size() ? &k_info[i] : &dummy;
         auto tmp8u = rd_byte();
         k_ptr->aware = any_bits(tmp8u, 0x01);
         k_ptr->tried = any_bits(tmp8u, 0x02);
@@ -301,20 +213,14 @@ void load_item(void)
 }
 
 /*!
- * @brief 固定アーティファクトの出現情報をロードする
+ * @brief 固定アーティファクトの出現情報をロードする.
  */
 void load_artifact(void)
 {
     auto loading_max_a_idx = rd_u16b();
-
-    artifact_type *a_ptr;
     artifact_type dummy;
     for (auto i = 0U; i < loading_max_a_idx; i++) {
-        if (i < a_info.size())
-            a_ptr = &a_info[i];
-        else
-            a_ptr = &dummy;
-
+        auto *a_ptr = i < a_info.size() ? &a_info[i] : &dummy;
         a_ptr->cur_num = rd_byte();
         if (h_older_than(1, 5, 0, 0)) {
             a_ptr->floor_id = 0;