OSDN Git Service

[Refactor] #40532 Separated write_item_flags() from wr_item()
authorHourier <hourier@users.sourceforge.jp>
Sat, 18 Jul 2020 06:09:44 +0000 (15:09 +0900)
committerHourier <hourier@users.sourceforge.jp>
Sat, 18 Jul 2020 06:09:44 +0000 (15:09 +0900)
src/save/item-writer.c

index 72aa5af..547404c 100644 (file)
 #include "system/object-type-definition.h"
 #include "util/quarks.h"
 
-/*!
- * @brief アイテムオブジェクトを書き込む / Write an "item" record
- * @param o_ptr アイテムオブジェクト保存元ポインタ
- * @return なし
- */
-void wr_item(object_type *o_ptr)
+static void write_item_flags(BIT_FLAGS *flags, object_type *o_ptr)
 {
-    BIT_FLAGS flags = 0x00000000;
-
     if (o_ptr->pval)
-        flags |= SAVE_ITEM_PVAL;
+        *flags |= SAVE_ITEM_PVAL;
+
     if (o_ptr->discount)
-        flags |= SAVE_ITEM_DISCOUNT;
+        *flags |= SAVE_ITEM_DISCOUNT;
+
     if (o_ptr->number != 1)
-        flags |= SAVE_ITEM_NUMBER;
+        *flags |= SAVE_ITEM_NUMBER;
+
     if (o_ptr->name1)
-        flags |= SAVE_ITEM_NAME1;
+        *flags |= SAVE_ITEM_NAME1;
+
     if (o_ptr->name2)
-        flags |= SAVE_ITEM_NAME2;
+        *flags |= SAVE_ITEM_NAME2;
+
     if (o_ptr->timeout)
-        flags |= SAVE_ITEM_TIMEOUT;
+        *flags |= SAVE_ITEM_TIMEOUT;
+
     if (o_ptr->to_h)
-        flags |= SAVE_ITEM_TO_H;
+        *flags |= SAVE_ITEM_TO_H;
+
     if (o_ptr->to_d)
-        flags |= SAVE_ITEM_TO_D;
+        *flags |= SAVE_ITEM_TO_D;
+
     if (o_ptr->to_a)
-        flags |= SAVE_ITEM_TO_A;
+        *flags |= SAVE_ITEM_TO_A;
+
     if (o_ptr->ac)
-        flags |= SAVE_ITEM_AC;
+        *flags |= SAVE_ITEM_AC;
+
     if (o_ptr->dd)
-        flags |= SAVE_ITEM_DD;
+        *flags |= SAVE_ITEM_DD;
+
     if (o_ptr->ds)
-        flags |= SAVE_ITEM_DS;
+        *flags |= SAVE_ITEM_DS;
+
     if (o_ptr->ident)
-        flags |= SAVE_ITEM_IDENT;
+        *flags |= SAVE_ITEM_IDENT;
+
     if (o_ptr->marked)
-        flags |= SAVE_ITEM_MARKED;
+        *flags |= SAVE_ITEM_MARKED;
+
     if (o_ptr->art_flags[0])
-        flags |= SAVE_ITEM_ART_FLAGS0;
+        *flags |= SAVE_ITEM_ART_FLAGS0;
+
     if (o_ptr->art_flags[1])
-        flags |= SAVE_ITEM_ART_FLAGS1;
+        *flags |= SAVE_ITEM_ART_FLAGS1;
+
     if (o_ptr->art_flags[2])
-        flags |= SAVE_ITEM_ART_FLAGS2;
+        *flags |= SAVE_ITEM_ART_FLAGS2;
+
     if (o_ptr->art_flags[3])
-        flags |= SAVE_ITEM_ART_FLAGS3;
+        *flags |= SAVE_ITEM_ART_FLAGS3;
+
     if (o_ptr->art_flags[4])
-        flags |= SAVE_ITEM_ART_FLAGS4;
+        *flags |= SAVE_ITEM_ART_FLAGS4;
+
     if (o_ptr->curse_flags)
-        flags |= SAVE_ITEM_CURSE_FLAGS;
+        *flags |= SAVE_ITEM_CURSE_FLAGS;
+
     if (o_ptr->held_m_idx)
-        flags |= SAVE_ITEM_HELD_M_IDX;
+        *flags |= SAVE_ITEM_HELD_M_IDX;
+
     if (o_ptr->xtra1)
-        flags |= SAVE_ITEM_XTRA1;
+        *flags |= SAVE_ITEM_XTRA1;
+
     if (o_ptr->xtra2)
-        flags |= SAVE_ITEM_XTRA2;
+        *flags |= SAVE_ITEM_XTRA2;
+
     if (o_ptr->xtra3)
-        flags |= SAVE_ITEM_XTRA3;
+        *flags |= SAVE_ITEM_XTRA3;
+
     if (o_ptr->xtra4)
-        flags |= SAVE_ITEM_XTRA4;
+        *flags |= SAVE_ITEM_XTRA4;
+
     if (o_ptr->xtra5)
-        flags |= SAVE_ITEM_XTRA5;
+        *flags |= SAVE_ITEM_XTRA5;
+
     if (o_ptr->feeling)
-        flags |= SAVE_ITEM_FEELING;
+        *flags |= SAVE_ITEM_FEELING;
+
     if (o_ptr->inscription)
-        flags |= SAVE_ITEM_INSCRIPTION;
+        *flags |= SAVE_ITEM_INSCRIPTION;
+
     if (o_ptr->art_name)
-        flags |= SAVE_ITEM_ART_NAME;
+        *flags |= SAVE_ITEM_ART_NAME;
+
+    wr_u32b(*flags);
+}
 
-    /*** Item save flags ***/
-    wr_u32b(flags);
+/*!
+ * @brief アイテムオブジェクトを書き込む / Write an "item" record
+ * @param o_ptr アイテムオブジェクト保存元ポインタ
+ * @return なし
+ */
+void wr_item(object_type *o_ptr)
+{
+    BIT_FLAGS flags = 0x00000000;
+    write_item_flags(o_ptr, &flags);
 
     /*** Write only un-obvious elements ***/
     wr_s16b(o_ptr->k_idx);