OSDN Git Service

[Refactor] #1796 ItemLoaderBase、ItemLoaderFactoryクラスを作ってアイテム読み込み処理用のクラスを分離しやすくした
[hengbandforosx/hengbandosx.git] / src / load / inventory-loader.cpp
index 607f9aa..ec3ca09 100644 (file)
@@ -1,7 +1,8 @@
 #include "load/inventory-loader.h"
 #include "inventory/inventory-slot-types.h"
-#include "load/item-loader.h"
+#include "load/item/item-loader-factory.h"
 #include "load/load-util.h"
+#include "load/old/item-loader-savefile10.h"
 #include "object/object-mark-types.h"
 #include "system/object-type-definition.h"
 #include "system/player-type-definition.h"
@@ -28,23 +29,21 @@ static errr rd_inventory(player_type *player_ptr)
 
     int slot = 0;
     while (true) {
-        uint16_t n;
-        rd_u16b(&n);
+        auto n = rd_u16b();
 
-        if (n == 0xFFFF)
+        if (n == 0xFFFF) {
             break;
-        object_type forge;
-        object_type *q_ptr;
-        q_ptr = &forge;
-        q_ptr->wipe();
+        }
 
-        rd_item(q_ptr);
-        if (!q_ptr->k_idx)
+        object_type item;
+        auto item_loader = ItemLoaderFactory::get_item_loader();
+        item_loader->rd_item(&item);
+        if (!item.k_idx)
             return (53);
 
         if (n >= INVEN_MAIN_HAND) {
-            q_ptr->marked |= OM_TOUCHED;
-            (&player_ptr->inventory_list[n])->copy_from(q_ptr);
+            item.marked |= OM_TOUCHED;
+            player_ptr->inventory_list[n].copy_from(&item);
             player_ptr->equip_cnt++;
             continue;
         }
@@ -55,8 +54,8 @@ static errr rd_inventory(player_type *player_ptr)
         }
 
         n = slot++;
-        q_ptr->marked |= OM_TOUCHED;
-        (&player_ptr->inventory_list[n])->copy_from(q_ptr);
+        item.marked |= OM_TOUCHED;
+        player_ptr->inventory_list[n].copy_from(&item);
         player_ptr->inven_cnt++;
     }
 
@@ -65,10 +64,8 @@ static errr rd_inventory(player_type *player_ptr)
 
 errr load_inventory(player_type *player_ptr)
 {
-    byte tmp8u;
     for (int i = 0; i < 64; i++) {
-        rd_byte(&tmp8u);
-        player_ptr->spell_order[i] = (SPELL_IDX)tmp8u;
+        player_ptr->spell_order[i] = rd_byte();
     }
 
     if (!rd_inventory(player_ptr))