OSDN Git Service

[Refactor] #40467 Separated birth-loader.c/h from load.c
authorHourier <hourier@users.sourceforge.jp>
Sun, 5 Jul 2020 02:45:23 +0000 (11:45 +0900)
committerHourier <hourier@users.sourceforge.jp>
Sun, 5 Jul 2020 02:45:23 +0000 (11:45 +0900)
Hengband/Hengband/Hengband.vcxproj
Hengband/Hengband/Hengband.vcxproj.filters
src/Makefile.am
src/savedata/birth-loader.c [new file with mode: 0644]
src/savedata/birth-loader.h [new file with mode: 0644]
src/savedata/load.c

index 6c27523..967a65c 100644 (file)
     <ClCompile Include="..\..\src\object-hook\hook-armor.c" />\r
     <ClCompile Include="..\..\src\object-potion\quaff-execution.c" />\r
     <ClCompile Include="..\..\src\savedata\angband-version-comparer.c" />\r
+    <ClCompile Include="..\..\src\savedata\birth-loader.c" />\r
     <ClCompile Include="..\..\src\savedata\item-loader.c" />\r
     <ClCompile Include="..\..\src\savedata\load-util.c" />\r
     <ClCompile Include="..\..\src\savedata\load-v1-5-0.c" />\r
     <ClInclude Include="..\..\src\object-hook\hook-weapon.h" />\r
     <ClInclude Include="..\..\src\object-potion\quaff-execution.h" />\r
     <ClInclude Include="..\..\src\savedata\angband-version-comparer.h" />\r
+    <ClInclude Include="..\..\src\savedata\birth-loader.h" />\r
     <ClInclude Include="..\..\src\savedata\item-loader.h" />\r
     <ClInclude Include="..\..\src\savedata\load-util.h" />\r
     <ClInclude Include="..\..\src\savedata\load-v1-5-0.h" />\r
index c88a658..3fed67e 100644 (file)
     <ClCompile Include="..\..\src\savedata\option-loader.c">
       <Filter>savedata</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\src\savedata\birth-loader.c">
+      <Filter>savedata</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\src\cmd\cmd-basic.h">
     <ClInclude Include="..\..\src\savedata\option-loader.h">
       <Filter>savedata</Filter>
     </ClInclude>
+    <ClInclude Include="..\..\src\savedata\birth-loader.h">
+      <Filter>savedata</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <None Include="..\..\src\wall.bmp" />
index 18a087b..d344efa 100644 (file)
@@ -520,6 +520,7 @@ hengband_SOURCES = \
        room/pit-nest-kinds-table.c room/pit-nest-kinds-table.h \
        \
        savedata/angband-version-comparer.c savedata/angband-version-comparer.h \
+       savedata/birth-loader.c savedata/birth-loader.h \
        savedata/item-loader.c savedata/item-loader.h \
        savedata/monster-loader.c savedata/monster-loader.h \
        savedata/old-feature-types.h \
diff --git a/src/savedata/birth-loader.c b/src/savedata/birth-loader.c
new file mode 100644 (file)
index 0000000..0e015ea
--- /dev/null
@@ -0,0 +1,59 @@
+#include "birth-loader.h"
+#include "birth/quick-start.h"
+#include "savedata/angband-version-comparer.h"
+#include "savedata/load-util.h"
+#include "system/angband.h"
+
+/*!
+ * @brief クイックスタート情報を読み込む / Load quick start data
+ * @return なし
+ */
+void load_quick_start(void)
+{
+    if (z_older_than(11, 0, 13)) {
+        previous_char.quick_ok = FALSE;
+        return;
+    }
+
+    rd_byte(&previous_char.psex);
+    byte tmp8u;
+    rd_byte(&tmp8u);
+    previous_char.prace = (player_race_type)tmp8u;
+    rd_byte(&tmp8u);
+    previous_char.pclass = (player_class_type)tmp8u;
+    rd_byte(&tmp8u);
+    previous_char.pseikaku = (player_personality_type)tmp8u;
+    rd_byte(&tmp8u);
+    previous_char.realm1 = (REALM_IDX)tmp8u;
+    rd_byte(&tmp8u);
+    previous_char.realm2 = (REALM_IDX)tmp8u;
+
+    rd_s16b(&previous_char.age);
+    rd_s16b(&previous_char.ht);
+    rd_s16b(&previous_char.wt);
+    rd_s16b(&previous_char.sc);
+    rd_s32b(&previous_char.au);
+
+    for (int i = 0; i < A_MAX; i++)
+        rd_s16b(&previous_char.stat_max[i]);
+    for (int i = 0; i < A_MAX; i++)
+        rd_s16b(&previous_char.stat_max_max[i]);
+
+    for (int i = 0; i < PY_MAX_LEVEL; i++) {
+        s16b tmp16s;
+        rd_s16b(&tmp16s);
+        previous_char.player_hp[i] = (HIT_POINT)tmp16s;
+    }
+
+    rd_s16b(&previous_char.chaos_patron);
+
+    for (int i = 0; i < 8; i++)
+        rd_s16b(&previous_char.vir_types[i]);
+
+    for (int i = 0; i < 4; i++)
+        rd_string(previous_char.history[i], sizeof(previous_char.history[i]));
+
+    rd_byte(&tmp8u);
+    rd_byte(&tmp8u);
+    previous_char.quick_ok = (bool)tmp8u;
+}
diff --git a/src/savedata/birth-loader.h b/src/savedata/birth-loader.h
new file mode 100644 (file)
index 0000000..7e24c65
--- /dev/null
@@ -0,0 +1,3 @@
+#pragma once
+
+void load_quick_start(void);
index 7ae9c68..7b71683 100644 (file)
@@ -74,6 +74,7 @@
 #include "player/race-info-table.h"
 #include "player/special-defense-types.h"
 #include "savedata/angband-version-comparer.h"
+#include "savedata/birth-loader.h"
 #include "savedata/item-loader.h"
 #include "savedata/load-util.h"
 #include "savedata/load-v1-5-0.h"
@@ -109,73 +110,6 @@ static const int QUEST_OLD_CASTLE = 27; // 古い城.
 static const int QUEST_ROYAL_CRYPT = 28; // 王家の墓.
 
 /*!
- * @brief ダミー情報スキップ / Hack -- strip the "ghost" info
- * @return なし
- * @details
- * This is such a nasty hack it hurts.
- */
-static void rd_ghost(void)
-{
-    char buf[64];
-    rd_string(buf, sizeof(buf));
-    strip_bytes(60);
-}
-
-/*!
- * @brief クイックスタート情報を読み込む / Load quick start data
- * @return なし
- */
-static void load_quick_start(void)
-{
-    if (z_older_than(11, 0, 13)) {
-        previous_char.quick_ok = FALSE;
-        return;
-    }
-
-    rd_byte(&previous_char.psex);
-    byte tmp8u;
-    rd_byte(&tmp8u);
-    previous_char.prace = (player_race_type)tmp8u;
-    rd_byte(&tmp8u);
-    previous_char.pclass = (player_class_type)tmp8u;
-    rd_byte(&tmp8u);
-    previous_char.pseikaku = (player_personality_type)tmp8u;
-    rd_byte(&tmp8u);
-    previous_char.realm1 = (REALM_IDX)tmp8u;
-    rd_byte(&tmp8u);
-    previous_char.realm2 = (REALM_IDX)tmp8u;
-
-    rd_s16b(&previous_char.age);
-    rd_s16b(&previous_char.ht);
-    rd_s16b(&previous_char.wt);
-    rd_s16b(&previous_char.sc);
-    rd_s32b(&previous_char.au);
-
-    for (int i = 0; i < A_MAX; i++)
-        rd_s16b(&previous_char.stat_max[i]);
-    for (int i = 0; i < A_MAX; i++)
-        rd_s16b(&previous_char.stat_max_max[i]);
-
-    for (int i = 0; i < PY_MAX_LEVEL; i++) {
-        s16b tmp16s;
-        rd_s16b(&tmp16s);
-        previous_char.player_hp[i] = (HIT_POINT)tmp16s;
-    }
-
-    rd_s16b(&previous_char.chaos_patron);
-
-    for (int i = 0; i < 8; i++)
-        rd_s16b(&previous_char.vir_types[i]);
-
-    for (int i = 0; i < 4; i++)
-        rd_string(previous_char.history[i], sizeof(previous_char.history[i]));
-
-    rd_byte(&tmp8u);
-    rd_byte(&tmp8u);
-    previous_char.quick_ok = (bool)tmp8u;
-}
-
-/*!
  * @brief その他の情報を読み込む / Read the "extra" information
  * @return なし
  */
@@ -1436,6 +1370,19 @@ static void rd_randomizer(void)
 }
 
 /*!
+ * @brief ダミー情報スキップ / Strip the "ghost" info
+ * @return なし
+ * @details
+ * This is such a nasty hack it hurts.
+ */
+static void rd_ghost(void)
+{
+    char buf[64];
+    rd_string(buf, sizeof(buf));
+    strip_bytes(60);
+}
+
+/*!
  * @brief ロード処理全体のサブ関数 / Actually read the savefile
  * @return エラーコード
  */