OSDN Git Service

[Refactor] #40532 Separated item-writer.c/h from save.c
authorHourier <hourier@users.sourceforge.jp>
Sat, 18 Jul 2020 06:06:10 +0000 (15:06 +0900)
committerHourier <hourier@users.sourceforge.jp>
Sat, 18 Jul 2020 06:06:10 +0000 (15:06 +0900)
Hengband/Hengband/Hengband.vcxproj
Hengband/Hengband/Hengband.vcxproj.filters
src/Makefile.am
src/save/item-writer.c [new file with mode: 0644]
src/save/item-writer.h [new file with mode: 0644]
src/save/save.c

index d08950f..d55a7f7 100644 (file)
     <ClCompile Include="..\..\src\load\player-info-loader.c" />\r
     <ClCompile Include="..\..\src\load\store-loader.c" />\r
     <ClCompile Include="..\..\src\load\world-loader.c" />\r
+    <ClCompile Include="..\..\src\save\item-writer.c" />\r
     <ClCompile Include="..\..\src\save\save-util.c" />\r
     <ClCompile Include="..\..\src\specific-object\death-crimson.c" />\r
     <ClCompile Include="..\..\src\spell-kind\blood-curse.c" />\r
     <ClInclude Include="..\..\src\load\savedata-flag-types.h" />\r
     <ClInclude Include="..\..\src\load\store-loader.h" />\r
     <ClInclude Include="..\..\src\load\world-loader.h" />\r
+    <ClInclude Include="..\..\src\save\item-writer.h" />\r
     <ClInclude Include="..\..\src\save\save-util.h" />\r
     <ClInclude Include="..\..\src\specific-object\death-crimson.h" />\r
     <ClInclude Include="..\..\src\spell-kind\blood-curse.h" />\r
index 3204f84..179921a 100644 (file)
     <ClCompile Include="..\..\src\save\save-util.c">
       <Filter>save</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\src\save\item-writer.c">
+      <Filter>save</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\src\combat\shoot.h">
     <ClInclude Include="..\..\src\save\save-util.h">
       <Filter>save</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\src\save\item-writer.h">
+      <Filter>save</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <None Include="..\..\src\wall.bmp" />
index e493d3c..db251ba 100644 (file)
@@ -586,6 +586,7 @@ hengband_SOURCES = \
        room/rooms-pit-nest.c room/rooms-pit-nest.h \
        room/pit-nest-kinds-table.c room/pit-nest-kinds-table.h \
        \
+       save/item-writer.c save/item-writer.h \
        save/save.c save/save.h \
        save/save-util.c save/save-util.h \
        \
diff --git a/src/save/item-writer.c b/src/save/item-writer.c
new file mode 100644 (file)
index 0000000..72aa5af
--- /dev/null
@@ -0,0 +1,158 @@
+#include "save/item-writer.h"
+#include "load/savedata-flag-types.h"
+#include "save/save-util.h"
+#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)
+{
+    BIT_FLAGS flags = 0x00000000;
+
+    if (o_ptr->pval)
+        flags |= SAVE_ITEM_PVAL;
+    if (o_ptr->discount)
+        flags |= SAVE_ITEM_DISCOUNT;
+    if (o_ptr->number != 1)
+        flags |= SAVE_ITEM_NUMBER;
+    if (o_ptr->name1)
+        flags |= SAVE_ITEM_NAME1;
+    if (o_ptr->name2)
+        flags |= SAVE_ITEM_NAME2;
+    if (o_ptr->timeout)
+        flags |= SAVE_ITEM_TIMEOUT;
+    if (o_ptr->to_h)
+        flags |= SAVE_ITEM_TO_H;
+    if (o_ptr->to_d)
+        flags |= SAVE_ITEM_TO_D;
+    if (o_ptr->to_a)
+        flags |= SAVE_ITEM_TO_A;
+    if (o_ptr->ac)
+        flags |= SAVE_ITEM_AC;
+    if (o_ptr->dd)
+        flags |= SAVE_ITEM_DD;
+    if (o_ptr->ds)
+        flags |= SAVE_ITEM_DS;
+    if (o_ptr->ident)
+        flags |= SAVE_ITEM_IDENT;
+    if (o_ptr->marked)
+        flags |= SAVE_ITEM_MARKED;
+    if (o_ptr->art_flags[0])
+        flags |= SAVE_ITEM_ART_FLAGS0;
+    if (o_ptr->art_flags[1])
+        flags |= SAVE_ITEM_ART_FLAGS1;
+    if (o_ptr->art_flags[2])
+        flags |= SAVE_ITEM_ART_FLAGS2;
+    if (o_ptr->art_flags[3])
+        flags |= SAVE_ITEM_ART_FLAGS3;
+    if (o_ptr->art_flags[4])
+        flags |= SAVE_ITEM_ART_FLAGS4;
+    if (o_ptr->curse_flags)
+        flags |= SAVE_ITEM_CURSE_FLAGS;
+    if (o_ptr->held_m_idx)
+        flags |= SAVE_ITEM_HELD_M_IDX;
+    if (o_ptr->xtra1)
+        flags |= SAVE_ITEM_XTRA1;
+    if (o_ptr->xtra2)
+        flags |= SAVE_ITEM_XTRA2;
+    if (o_ptr->xtra3)
+        flags |= SAVE_ITEM_XTRA3;
+    if (o_ptr->xtra4)
+        flags |= SAVE_ITEM_XTRA4;
+    if (o_ptr->xtra5)
+        flags |= SAVE_ITEM_XTRA5;
+    if (o_ptr->feeling)
+        flags |= SAVE_ITEM_FEELING;
+    if (o_ptr->inscription)
+        flags |= SAVE_ITEM_INSCRIPTION;
+    if (o_ptr->art_name)
+        flags |= SAVE_ITEM_ART_NAME;
+
+    /*** Item save flags ***/
+    wr_u32b(flags);
+
+    /*** Write only un-obvious elements ***/
+    wr_s16b(o_ptr->k_idx);
+
+    wr_byte((byte)o_ptr->iy);
+    wr_byte((byte)o_ptr->ix);
+
+    if (flags & SAVE_ITEM_PVAL)
+        wr_s16b(o_ptr->pval);
+
+    if (flags & SAVE_ITEM_DISCOUNT)
+        wr_byte(o_ptr->discount);
+    if (flags & SAVE_ITEM_NUMBER)
+        wr_byte((byte)o_ptr->number);
+
+    wr_s16b((s16b)o_ptr->weight);
+
+    if (flags & SAVE_ITEM_NAME1)
+        wr_byte((byte)o_ptr->name1);
+    if (flags & SAVE_ITEM_NAME2)
+        wr_byte((byte)o_ptr->name2);
+    if (flags & SAVE_ITEM_TIMEOUT)
+        wr_s16b(o_ptr->timeout);
+
+    if (flags & SAVE_ITEM_TO_H)
+        wr_s16b(o_ptr->to_h);
+    if (flags & SAVE_ITEM_TO_D)
+        wr_s16b((s16b)o_ptr->to_d);
+    if (flags & SAVE_ITEM_TO_A)
+        wr_s16b(o_ptr->to_a);
+    if (flags & SAVE_ITEM_AC)
+        wr_s16b(o_ptr->ac);
+    if (flags & SAVE_ITEM_DD)
+        wr_byte((byte)o_ptr->dd);
+    if (flags & SAVE_ITEM_DS)
+        wr_byte((byte)o_ptr->ds);
+
+    if (flags & SAVE_ITEM_IDENT)
+        wr_byte(o_ptr->ident);
+
+    if (flags & SAVE_ITEM_MARKED)
+        wr_byte(o_ptr->marked);
+
+    if (flags & SAVE_ITEM_ART_FLAGS0)
+        wr_u32b(o_ptr->art_flags[0]);
+    if (flags & SAVE_ITEM_ART_FLAGS1)
+        wr_u32b(o_ptr->art_flags[1]);
+    if (flags & SAVE_ITEM_ART_FLAGS2)
+        wr_u32b(o_ptr->art_flags[2]);
+    if (flags & SAVE_ITEM_ART_FLAGS3)
+        wr_u32b(o_ptr->art_flags[3]);
+    if (flags & SAVE_ITEM_ART_FLAGS4)
+        wr_u32b(o_ptr->art_flags[4]);
+
+    if (flags & SAVE_ITEM_CURSE_FLAGS)
+        wr_u32b(o_ptr->curse_flags);
+
+    /* Held by monster index */
+    if (flags & SAVE_ITEM_HELD_M_IDX)
+        wr_s16b(o_ptr->held_m_idx);
+
+    /* Extra information */
+    if (flags & SAVE_ITEM_XTRA1)
+        wr_byte(o_ptr->xtra1);
+    if (flags & SAVE_ITEM_XTRA2)
+        wr_byte(o_ptr->xtra2);
+    if (flags & SAVE_ITEM_XTRA3)
+        wr_byte(o_ptr->xtra3);
+    if (flags & SAVE_ITEM_XTRA4)
+        wr_s16b(o_ptr->xtra4);
+    if (flags & SAVE_ITEM_XTRA5)
+        wr_s16b(o_ptr->xtra5);
+
+    /* Feelings */
+    if (flags & SAVE_ITEM_FEELING)
+        wr_byte(o_ptr->feeling);
+
+    if (flags & SAVE_ITEM_INSCRIPTION)
+        wr_string(quark_str(o_ptr->inscription));
+    if (flags & SAVE_ITEM_ART_NAME)
+        wr_string(quark_str(o_ptr->art_name));
+}
diff --git a/src/save/item-writer.h b/src/save/item-writer.h
new file mode 100644 (file)
index 0000000..adeaab9
--- /dev/null
@@ -0,0 +1,5 @@
+#pragma once
+
+#include "system/angband.h"
+
+void wr_item(object_type *o_ptr);
index a0e1310..c42f635 100644 (file)
@@ -40,6 +40,7 @@
 #include "monster/monster-info.h"
 #include "monster/monster-status.h"
 #include "object/object-kind.h"
+#include "save/item-writer.h"
 #include "save/save-util.h"
 #include "store/store-util.h"
 #include "store/store.h"
 #include "view/display-messages.h"
 #include "world/world.h"
 
-/*
- * These functions write info in larger logical records
- */
-
-/*!
- * @brief アイテムオブジェクトを書き込む / Write an "item" record
- * @param o_ptr アイテムオブジェクト保存元ポインタ
- * @return なし
- */
-static void wr_item(object_type *o_ptr)
-{
-    BIT_FLAGS flags = 0x00000000;
-
-    if (o_ptr->pval)
-        flags |= SAVE_ITEM_PVAL;
-    if (o_ptr->discount)
-        flags |= SAVE_ITEM_DISCOUNT;
-    if (o_ptr->number != 1)
-        flags |= SAVE_ITEM_NUMBER;
-    if (o_ptr->name1)
-        flags |= SAVE_ITEM_NAME1;
-    if (o_ptr->name2)
-        flags |= SAVE_ITEM_NAME2;
-    if (o_ptr->timeout)
-        flags |= SAVE_ITEM_TIMEOUT;
-    if (o_ptr->to_h)
-        flags |= SAVE_ITEM_TO_H;
-    if (o_ptr->to_d)
-        flags |= SAVE_ITEM_TO_D;
-    if (o_ptr->to_a)
-        flags |= SAVE_ITEM_TO_A;
-    if (o_ptr->ac)
-        flags |= SAVE_ITEM_AC;
-    if (o_ptr->dd)
-        flags |= SAVE_ITEM_DD;
-    if (o_ptr->ds)
-        flags |= SAVE_ITEM_DS;
-    if (o_ptr->ident)
-        flags |= SAVE_ITEM_IDENT;
-    if (o_ptr->marked)
-        flags |= SAVE_ITEM_MARKED;
-    if (o_ptr->art_flags[0])
-        flags |= SAVE_ITEM_ART_FLAGS0;
-    if (o_ptr->art_flags[1])
-        flags |= SAVE_ITEM_ART_FLAGS1;
-    if (o_ptr->art_flags[2])
-        flags |= SAVE_ITEM_ART_FLAGS2;
-    if (o_ptr->art_flags[3])
-        flags |= SAVE_ITEM_ART_FLAGS3;
-    if (o_ptr->art_flags[4])
-        flags |= SAVE_ITEM_ART_FLAGS4;
-    if (o_ptr->curse_flags)
-        flags |= SAVE_ITEM_CURSE_FLAGS;
-    if (o_ptr->held_m_idx)
-        flags |= SAVE_ITEM_HELD_M_IDX;
-    if (o_ptr->xtra1)
-        flags |= SAVE_ITEM_XTRA1;
-    if (o_ptr->xtra2)
-        flags |= SAVE_ITEM_XTRA2;
-    if (o_ptr->xtra3)
-        flags |= SAVE_ITEM_XTRA3;
-    if (o_ptr->xtra4)
-        flags |= SAVE_ITEM_XTRA4;
-    if (o_ptr->xtra5)
-        flags |= SAVE_ITEM_XTRA5;
-    if (o_ptr->feeling)
-        flags |= SAVE_ITEM_FEELING;
-    if (o_ptr->inscription)
-        flags |= SAVE_ITEM_INSCRIPTION;
-    if (o_ptr->art_name)
-        flags |= SAVE_ITEM_ART_NAME;
-
-    /*** Item save flags ***/
-    wr_u32b(flags);
-
-    /*** Write only un-obvious elements ***/
-    wr_s16b(o_ptr->k_idx);
-
-    wr_byte((byte)o_ptr->iy);
-    wr_byte((byte)o_ptr->ix);
-
-    if (flags & SAVE_ITEM_PVAL)
-        wr_s16b(o_ptr->pval);
-
-    if (flags & SAVE_ITEM_DISCOUNT)
-        wr_byte(o_ptr->discount);
-    if (flags & SAVE_ITEM_NUMBER)
-        wr_byte((byte)o_ptr->number);
-
-    wr_s16b((s16b)o_ptr->weight);
-
-    if (flags & SAVE_ITEM_NAME1)
-        wr_byte((byte)o_ptr->name1);
-    if (flags & SAVE_ITEM_NAME2)
-        wr_byte((byte)o_ptr->name2);
-    if (flags & SAVE_ITEM_TIMEOUT)
-        wr_s16b(o_ptr->timeout);
-
-    if (flags & SAVE_ITEM_TO_H)
-        wr_s16b(o_ptr->to_h);
-    if (flags & SAVE_ITEM_TO_D)
-        wr_s16b((s16b)o_ptr->to_d);
-    if (flags & SAVE_ITEM_TO_A)
-        wr_s16b(o_ptr->to_a);
-    if (flags & SAVE_ITEM_AC)
-        wr_s16b(o_ptr->ac);
-    if (flags & SAVE_ITEM_DD)
-        wr_byte((byte)o_ptr->dd);
-    if (flags & SAVE_ITEM_DS)
-        wr_byte((byte)o_ptr->ds);
-
-    if (flags & SAVE_ITEM_IDENT)
-        wr_byte(o_ptr->ident);
-
-    if (flags & SAVE_ITEM_MARKED)
-        wr_byte(o_ptr->marked);
-
-    if (flags & SAVE_ITEM_ART_FLAGS0)
-        wr_u32b(o_ptr->art_flags[0]);
-    if (flags & SAVE_ITEM_ART_FLAGS1)
-        wr_u32b(o_ptr->art_flags[1]);
-    if (flags & SAVE_ITEM_ART_FLAGS2)
-        wr_u32b(o_ptr->art_flags[2]);
-    if (flags & SAVE_ITEM_ART_FLAGS3)
-        wr_u32b(o_ptr->art_flags[3]);
-    if (flags & SAVE_ITEM_ART_FLAGS4)
-        wr_u32b(o_ptr->art_flags[4]);
-
-    if (flags & SAVE_ITEM_CURSE_FLAGS)
-        wr_u32b(o_ptr->curse_flags);
-
-    /* Held by monster index */
-    if (flags & SAVE_ITEM_HELD_M_IDX)
-        wr_s16b(o_ptr->held_m_idx);
-
-    /* Extra information */
-    if (flags & SAVE_ITEM_XTRA1)
-        wr_byte(o_ptr->xtra1);
-    if (flags & SAVE_ITEM_XTRA2)
-        wr_byte(o_ptr->xtra2);
-    if (flags & SAVE_ITEM_XTRA3)
-        wr_byte(o_ptr->xtra3);
-    if (flags & SAVE_ITEM_XTRA4)
-        wr_s16b(o_ptr->xtra4);
-    if (flags & SAVE_ITEM_XTRA5)
-        wr_s16b(o_ptr->xtra5);
-
-    /* Feelings */
-    if (flags & SAVE_ITEM_FEELING)
-        wr_byte(o_ptr->feeling);
-
-    if (flags & SAVE_ITEM_INSCRIPTION)
-        wr_string(quark_str(o_ptr->inscription));
-    if (flags & SAVE_ITEM_ART_NAME)
-        wr_string(quark_str(o_ptr->art_name));
-}
-
 /*!
  * @brief モンスター情報を書き込む / Write a "monster" record
  * @param m_ptr モンスター情報保存元ポインタ