OSDN Git Service

[Refactor] #3677 object_tried() をItemEntity のオブジェクトメソッドに繰り込んだ
authorHourier <66951241+Hourier@users.noreply.github.com>
Sat, 21 Oct 2023 13:43:54 +0000 (22:43 +0900)
committerHourier <66951241+Hourier@users.noreply.github.com>
Tue, 31 Oct 2023 11:37:06 +0000 (20:37 +0900)
12 files changed:
src/cmd-item/cmd-eat.cpp
src/object-use/quaff/quaff-execution.cpp
src/object-use/read/read-execution.cpp
src/object-use/use-execution.cpp
src/object-use/zaprod-execution.cpp
src/object-use/zapwand-execution.cpp
src/perception/object-perception.cpp
src/perception/object-perception.h
src/system/baseitem-info.cpp
src/system/baseitem-info.h
src/system/item-entity.cpp
src/system/item-entity.h

index 96f474b..d23bed7 100644 (file)
@@ -261,7 +261,7 @@ void exe_eat_food(PlayerType *player_ptr, INVENTORY_IDX i_idx)
     /* We have tried it */
     const auto tval = bi_key.tval();
     if (tval == ItemKindType::FOOD) {
-        object_tried(o_ptr);
+        o_ptr->mark_as_tried();
     }
 
     /* The player is now aware of the object */
index c3adec8..3c4e286 100644 (file)
@@ -52,13 +52,13 @@ void ObjectQuaffEntity::execute(INVENTORY_IDX i_idx)
         return;
     }
 
-    const auto &o_ref = this->copy_object(i_idx);
+    auto item = this->copy_object(i_idx);
     vary_item(this->player_ptr, i_idx, -1);
     sound(SOUND_QUAFF);
-    auto ident = QuaffEffects(this->player_ptr).influence(o_ref);
+    auto ident = QuaffEffects(this->player_ptr).influence(item);
     if (PlayerRace(this->player_ptr).equals(PlayerRaceType::SKELETON)) {
         msg_print(_("液体の一部はあなたのアゴを素通りして落ちた!", "Some of the fluid falls through your jaws!"));
-        (void)potion_smash_effect(this->player_ptr, 0, this->player_ptr->y, this->player_ptr->x, o_ref.bi_id);
+        (void)potion_smash_effect(this->player_ptr, 0, this->player_ptr->y, this->player_ptr->x, item.bi_id);
     }
 
     static constexpr auto flags_srf = {
@@ -67,11 +67,11 @@ void ObjectQuaffEntity::execute(INVENTORY_IDX i_idx)
     };
     auto &rfu = RedrawingFlagsUpdater::get_instance();
     rfu.set_flags(flags_srf);
-    this->change_virtue_as_quaff(o_ref);
-    object_tried(&o_ref);
-    if (ident && !o_ref.is_aware()) {
-        object_aware(this->player_ptr, &o_ref);
-        gain_exp(this->player_ptr, (o_ref.get_baseitem().level + (this->player_ptr->lev >> 1)) / this->player_ptr->lev);
+    this->change_virtue_as_quaff(item);
+    item.mark_as_tried();
+    if (ident && !item.is_aware()) {
+        object_aware(this->player_ptr, &item);
+        gain_exp(this->player_ptr, (item.get_baseitem().level + (this->player_ptr->lev >> 1)) / this->player_ptr->lev);
     }
 
     static constexpr auto flags = {
@@ -84,7 +84,7 @@ void ObjectQuaffEntity::execute(INVENTORY_IDX i_idx)
         return;
     }
 
-    this->moisten(o_ref);
+    this->moisten(item);
 }
 
 bool ObjectQuaffEntity::can_influence()
index e61bd5a..8ff4fdd 100644 (file)
@@ -70,7 +70,7 @@ void ObjectReadEntity::execute(bool known)
 
     rfu.reset_flags(flags_srf);
     this->change_virtue_as_read(*o_ptr);
-    object_tried(o_ptr);
+    o_ptr->mark_as_tried();
     this->gain_exp_from_item_use(o_ptr, executor->is_identified());
     static constexpr auto flags_swrf = {
         SubWindowRedrawingFlag::INVENTORY,
index 0804980..03971a3 100644 (file)
@@ -117,7 +117,7 @@ void ObjectUseEntity::execute()
     }
 
     rfu.reset_flags(flags_srf);
-    object_tried(o_ptr);
+    o_ptr->mark_as_tried();
     if (ident && !o_ptr->is_aware()) {
         object_aware(this->player_ptr, o_ptr);
         gain_exp(this->player_ptr, (lev + (this->player_ptr->lev >> 1)) / this->player_ptr->lev);
index f6a4325..0372392 100644 (file)
@@ -139,7 +139,7 @@ void ObjectZapRodEntity::execute(INVENTORY_IDX i_idx)
         chg_virtue(this->player_ptr, Virtue::KNOWLEDGE, -1);
     }
 
-    object_tried(o_ptr);
+    o_ptr->mark_as_tried();
     if ((ident != 0) && !o_ptr->is_aware()) {
         object_aware(this->player_ptr, o_ptr);
         gain_exp(this->player_ptr, (lev + (this->player_ptr->lev >> 1)) / this->player_ptr->lev);
index 40587b1..55b4ebc 100644 (file)
@@ -120,7 +120,7 @@ void ObjectZapWandEntity::execute(INVENTORY_IDX i_idx)
         chg_virtue(this->player_ptr, Virtue::KNOWLEDGE, -1);
     }
 
-    object_tried(o_ptr);
+    o_ptr->mark_as_tried();
     if (ident && !o_ptr->is_aware()) {
         object_aware(this->player_ptr, o_ptr);
         gain_exp(this->player_ptr, (lev + (this->player_ptr->lev >> 1)) / this->player_ptr->lev);
index d0b1cd7..9a6fe0a 100644 (file)
@@ -45,13 +45,3 @@ void object_aware(PlayerType *player_ptr, const ItemEntity *o_ptr)
     const auto item_name = describe_flavor(player_ptr, q_ptr, OD_NAME_ONLY);
     exe_write_diary(player_ptr, DiaryKind::FOUND, 0, item_name);
 }
-
-/*!
- * @brief オブジェクトを試行済にする /
- * Something has been "sampled"
- * @param o_ptr 試行済にするオブジェクトの構造体参照ポインタ
- */
-void object_tried(const ItemEntity *o_ptr)
-{
-    o_ptr->get_baseitem().tried = true;
-}
index 93a2319..04f3321 100644 (file)
@@ -3,4 +3,3 @@
 class ItemEntity;
 class PlayerType;
 void object_aware(PlayerType *player_ptr, const ItemEntity *o_ptr);
-void object_tried(const ItemEntity *o_ptr);
index 4d23f4a..782821f 100644 (file)
@@ -615,4 +615,12 @@ void BaseitemInfo::decide_easy_know()
     }
 }
 
+/*!
+ * @brief オブジェクトを試行済にする
+ */
+void BaseitemInfo::mark_as_tried()
+{
+    this->tried = true;
+}
+
 std::vector<BaseitemInfo> baseitems_info;
index 331740f..9feb9d6 100644 (file)
@@ -125,6 +125,8 @@ public:
     IDX flavor{}; /*!< 未鑑定名の何番目を当てるか(0は未鑑定名なし) / Special object flavor (or zero) */
     bool aware{}; /*!< ベースアイテムが鑑定済かどうか /  The player is "aware" of the item's effects */
     bool tried{}; /*!< ベースアイテムを未鑑定のまま試したことがあるか /  The player has "tried" one of the items */
+
+    void mark_as_tried();
 };
 
 extern std::vector<BaseitemInfo> baseitems_info;
index fbab630..741a0c9 100644 (file)
@@ -900,6 +900,14 @@ void ItemEntity::mark_as_known()
 }
 
 /*!
+ * @brief オブジェクトを試行済にする
+ */
+void ItemEntity::mark_as_tried()
+{
+    this->get_baseitem().mark_as_tried();
+}
+
+/*!
  * @brief エゴ光源のフラグを修正する
  *
  * 寿命のある光源で寿命が0ターンの時、光源エゴアイテムに起因するフラグは
index 6b265dc..8d657bd 100644 (file)
@@ -144,6 +144,7 @@ public:
     TrFlags get_flags_known() const;
 
     void mark_as_known();
+    void mark_as_tried();
 
 private:
     int get_baseitem_price() const;