OSDN Git Service

[Refactor] #2738 struct floor_type をclass FloorType に変えた
[hengbandforosx/hengbandosx.git] / src / floor / floor-object.cpp
index 7b22403..a8f79b8 100644 (file)
 #include "inventory/item-getter.h"
 #include "main/sound-definitions-table.h"
 #include "main/sound-of-music.h"
-#include "object-enchant/apply-magic.h"
 #include "object-enchant/item-apply-magic.h"
+#include "object-enchant/item-magic-applier.h"
 #include "object-enchant/special-object-flags.h"
 #include "object/object-info.h"
 #include "object/object-kind-hook.h"
-#include "object/object-kind.h"
 #include "object/object-stack.h"
 #include "perception/object-perception.h"
 #include "system/alloc-entries.h"
 #include "system/artifact-type-definition.h"
+#include "system/baseitem-info-definition.h"
 #include "system/floor-type-definition.h"
 #include "system/grid-type-definition.h"
 #include "system/monster-type-definition.h"
@@ -81,7 +81,7 @@ static void object_mention(PlayerType *player_ptr, ObjectType *o_ptr)
     msg_format_wizard(player_ptr, CHEAT_OBJECT, _("%sを生成しました。", "%s was generated."), o_name);
 }
 
-static int get_base_floor(floor_type *floor_ptr, BIT_FLAGS mode, std::optional<int> rq_mon_level)
+static int get_base_floor(FloorType *floor_ptr, BIT_FLAGS mode, std::optional<int> rq_mon_level)
 {
     if (any_bits(mode, AM_GREAT)) {
         if (rq_mon_level.has_value()) {
@@ -145,7 +145,7 @@ bool make_object(PlayerType *player_ptr, ObjectType *j_ptr, BIT_FLAGS mode, std:
         j_ptr->prep(k_idx);
     }
 
-    apply_magic_to_object(player_ptr, j_ptr, floor_ptr->object_level, mode);
+    ItemMagicApplier(player_ptr, j_ptr, floor_ptr->object_level, mode).execute();
     set_ammo_quantity(j_ptr);
     if (cheat_peek) {
         object_mention(player_ptr, j_ptr);
@@ -179,7 +179,7 @@ bool make_gold(PlayerType *player_ptr, ObjectType *j_ptr)
     }
     j_ptr->prep(OBJ_GOLD_LIST + i);
 
-    int32_t base = k_info[OBJ_GOLD_LIST + i].cost;
+    int32_t base = baseitems_info[OBJ_GOLD_LIST + i].cost;
     j_ptr->pval = (base + (8L * randint1(base)) + randint1(8));
 
     return true;
@@ -290,7 +290,7 @@ void delete_object_idx(PlayerType *player_ptr, OBJECT_IDX o_idx)
  * @param floo_ptr 現在フロアへの参照ポインタ
  * @param o_idx 削除対象のオブジェクト構造体ポインタ
  */
-void excise_object_idx(floor_type *floor_ptr, OBJECT_IDX o_idx)
+void excise_object_idx(FloorType *floor_ptr, OBJECT_IDX o_idx)
 {
     auto &list = get_o_idx_list_contains(floor_ptr, o_idx);
     list.remove(o_idx);
@@ -302,7 +302,7 @@ void excise_object_idx(floor_type *floor_ptr, OBJECT_IDX o_idx)
  * @param o_idx 参照を得るリストに含まれるOBJECT_IDX
  * @return o_idxを含む ObjectIndexList への参照
  */
-ObjectIndexList &get_o_idx_list_contains(floor_type *floor_ptr, OBJECT_IDX o_idx)
+ObjectIndexList &get_o_idx_list_contains(FloorType *floor_ptr, OBJECT_IDX o_idx)
 {
     auto *o_ptr = &floor_ptr->o_list[o_idx];
 
@@ -485,7 +485,7 @@ OBJECT_IDX drop_near(PlayerType *player_ptr, ObjectType *j_ptr, PERCENTAGE chanc
 
             if (preserve_mode) {
                 if (j_ptr->is_fixed_artifact() && !j_ptr->is_known()) {
-                    a_info[j_ptr->fixed_artifact_idx].cur_num = 0;
+                    artifacts_info.at(j_ptr->fixed_artifact_idx).is_generated = false;
                 }
             }
 
@@ -538,7 +538,7 @@ OBJECT_IDX drop_near(PlayerType *player_ptr, ObjectType *j_ptr, PERCENTAGE chanc
         }
 
         if (j_ptr->is_fixed_artifact()) {
-            a_info[j_ptr->fixed_artifact_idx].cur_num = 0;
+            artifacts_info.at(j_ptr->fixed_artifact_idx).is_generated = false;
         }
 
         return 0;
@@ -575,7 +575,7 @@ OBJECT_IDX drop_near(PlayerType *player_ptr, ObjectType *j_ptr, PERCENTAGE chanc
  * @param floo_ptr 現在フロアへの参照ポインタ
  * @param item メッセージの対象にしたいアイテム所持スロット
  */
-void floor_item_charges(floor_type *floor_ptr, INVENTORY_IDX item)
+void floor_item_charges(FloorType *floor_ptr, INVENTORY_IDX item)
 {
     auto *o_ptr = &floor_ptr->o_list[item];
     if ((o_ptr->tval != ItemKindType::STAFF) && (o_ptr->tval != ItemKindType::WAND)) {