From 92554e8ad1045c3d014f93fa1b7e72ad0a74c4ea Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Sat, 21 Oct 2023 22:34:49 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#3677=20object=5Fknown()=20?= =?utf8?q?=E3=82=92ItemEntity=20=E3=81=AE=E3=82=AA=E3=83=96=E3=82=B8?= =?utf8?q?=E3=82=A7=E3=82=AF=E3=83=88=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89?= =?utf8?q?=E3=81=AB=E7=B9=B0=E3=82=8A=E8=BE=BC=E3=82=93=E3=81=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/artifact/random-art-generator.cpp | 2 +- src/birth/inventory-initializer.cpp | 2 +- src/effect/effect-item.cpp | 3 +-- src/floor/floor-object.cpp | 2 +- src/market/bounty.cpp | 2 +- src/mind/mind-archer.cpp | 6 ++--- src/object-enchant/others/apply-magic-others.cpp | 6 ++--- src/object/object-stack.cpp | 3 +-- src/perception/object-perception.cpp | 30 ------------------------ src/perception/object-perception.h | 1 - src/player/player-move.cpp | 2 +- src/player/process-death.cpp | 4 ++-- src/smith/object-smith.cpp | 2 +- src/specific-object/chest.cpp | 4 +--- src/spell-kind/spells-perception.cpp | 2 +- src/spell/spells-object.cpp | 2 +- src/store/store.cpp | 3 +-- src/system/item-entity.cpp | 12 ++++++++++ src/system/item-entity.h | 2 ++ src/wizard/wizard-special-process.cpp | 2 +- 20 files changed, 35 insertions(+), 57 deletions(-) diff --git a/src/artifact/random-art-generator.cpp b/src/artifact/random-art-generator.cpp index f02f81298..6b91ef538 100644 --- a/src/artifact/random-art-generator.cpp +++ b/src/artifact/random-art-generator.cpp @@ -388,7 +388,7 @@ static std::string name_unnatural_random_artifact(PlayerType *player_ptr, ItemEn constexpr auto prompt = _("このアーティファクトを何と名付けますか?", "What do you want to call the artifact? "); object_aware(player_ptr, o_ptr); - object_known(o_ptr); + o_ptr->mark_as_known(); o_ptr->ident |= IDENT_FULL_KNOWN; o_ptr->randart_name.reset(); (void)screen_object(player_ptr, o_ptr, 0L); diff --git a/src/birth/inventory-initializer.cpp b/src/birth/inventory-initializer.cpp index bb557ff25..b5d832ba7 100644 --- a/src/birth/inventory-initializer.cpp +++ b/src/birth/inventory-initializer.cpp @@ -86,7 +86,7 @@ void wield_all(PlayerType *player_ptr) void add_outfit(PlayerType *player_ptr, ItemEntity *o_ptr) { object_aware(player_ptr, o_ptr); - object_known(o_ptr); + o_ptr->mark_as_known(); int16_t slot = store_item_to_inventory(player_ptr, o_ptr); autopick_alter_item(player_ptr, slot, false); wield_all(player_ptr); diff --git a/src/effect/effect-item.cpp b/src/effect/effect-item.cpp index 3c112cffa..4e093a35d 100644 --- a/src/effect/effect-item.cpp +++ b/src/effect/effect-item.cpp @@ -11,7 +11,6 @@ #include "object-hook/hook-expendable.h" #include "object/object-broken.h" #include "object/object-mark-types.h" -#include "perception/object-perception.h" #include "spell-kind/spells-perception.h" #include "sv-definition/sv-other-types.h" #include "sv-definition/sv-scroll-types.h" @@ -214,7 +213,7 @@ bool affect_item(PlayerType *player_ptr, MONSTER_IDX who, POSITION r, POSITION y } o_ptr->pval = (0 - o_ptr->pval); - object_known(o_ptr); + o_ptr->mark_as_known(); if (known && o_ptr->marked.has(OmType::FOUND)) { msg_print(_("カチッと音がした!", "Click!")); is_item_affected = true; diff --git a/src/floor/floor-object.cpp b/src/floor/floor-object.cpp index a0dfa323c..1ed69fa24 100644 --- a/src/floor/floor-object.cpp +++ b/src/floor/floor-object.cpp @@ -74,7 +74,7 @@ static errr get_obj_index_prep(void) static void object_mention(PlayerType *player_ptr, ItemEntity *o_ptr) { object_aware(player_ptr, o_ptr); - object_known(o_ptr); + o_ptr->mark_as_known(); o_ptr->ident |= (IDENT_FULL_KNOWN); const auto item_name = describe_flavor(player_ptr, o_ptr, 0); diff --git a/src/market/bounty.cpp b/src/market/bounty.cpp index a02f35771..3e9fdb06b 100644 --- a/src/market/bounty.cpp +++ b/src/market/bounty.cpp @@ -180,7 +180,7 @@ bool exchange_cash(PlayerType *player_ptr) ItemMagicApplier(player_ptr, &forge, player_ptr->current_floor_ptr->object_level, AM_NO_FIXED_ART).execute(); object_aware(player_ptr, &forge); - object_known(&forge); + forge.mark_as_known(); /* * Hand it --- Assume there is an empty slot. diff --git a/src/mind/mind-archer.cpp b/src/mind/mind-archer.cpp index d3620cd1f..35bf48500 100644 --- a/src/mind/mind-archer.cpp +++ b/src/mind/mind-archer.cpp @@ -130,7 +130,7 @@ bool create_ammo(PlayerType *player_ptr) q_ptr->prep(lookup_baseitem_id({ ItemKindType::SHOT, m_bonus(1, player_ptr->lev) + 1 })); q_ptr->number = (byte)rand_range(15, 30); object_aware(player_ptr, q_ptr); - object_known(q_ptr); + q_ptr->mark_as_known(); ItemMagicApplier(player_ptr, q_ptr, player_ptr->lev, AM_NO_FIXED_ART).execute(); q_ptr->discount = 99; int16_t slot = store_item_to_inventory(player_ptr, q_ptr); @@ -158,7 +158,7 @@ bool create_ammo(PlayerType *player_ptr) q_ptr->prep(lookup_baseitem_id({ ItemKindType::ARROW, static_cast(m_bonus(1, player_ptr->lev) + 1) })); q_ptr->number = (byte)rand_range(5, 10); object_aware(player_ptr, q_ptr); - object_known(q_ptr); + q_ptr->mark_as_known(); ItemMagicApplier(player_ptr, q_ptr, player_ptr->lev, AM_NO_FIXED_ART).execute(); q_ptr->discount = 99; const auto item_name = describe_flavor(player_ptr, q_ptr, 0); @@ -185,7 +185,7 @@ bool create_ammo(PlayerType *player_ptr) q_ptr->prep(lookup_baseitem_id({ ItemKindType::BOLT, static_cast(m_bonus(1, player_ptr->lev) + 1) })); q_ptr->number = (byte)rand_range(4, 8); object_aware(player_ptr, q_ptr); - object_known(q_ptr); + q_ptr->mark_as_known(); ItemMagicApplier(player_ptr, q_ptr, player_ptr->lev, AM_NO_FIXED_ART).execute(); q_ptr->discount = 99; const auto item_name = describe_flavor(player_ptr, q_ptr, 0); diff --git a/src/object-enchant/others/apply-magic-others.cpp b/src/object-enchant/others/apply-magic-others.cpp index d383686b1..56221944a 100644 --- a/src/object-enchant/others/apply-magic-others.cpp +++ b/src/object-enchant/others/apply-magic-others.cpp @@ -66,7 +66,7 @@ void OtherItemsEnchanter::apply_magic() case ItemKindType::CAPTURE: this->o_ptr->pval = 0; object_aware(this->player_ptr, this->o_ptr); - object_known(this->o_ptr); + this->o_ptr->mark_as_known(); break; case ItemKindType::FIGURINE: this->generate_figurine(); @@ -165,7 +165,7 @@ void OtherItemsEnchanter::generate_corpse() this->o_ptr->pval = enum2i(r_idx); object_aware(this->player_ptr, this->o_ptr); - object_known(this->o_ptr); + this->o_ptr->mark_as_known(); } /* @@ -191,7 +191,7 @@ void OtherItemsEnchanter::generate_statue() } object_aware(this->player_ptr, this->o_ptr); - object_known(this->o_ptr); + this->o_ptr->mark_as_known(); } /* diff --git a/src/object/object-stack.cpp b/src/object/object-stack.cpp index 53515d015..72cc8ded4 100644 --- a/src/object/object-stack.cpp +++ b/src/object/object-stack.cpp @@ -11,7 +11,6 @@ #include "object-enchant/trc-types.h" #include "object/object-value.h" #include "object/tval-types.h" -#include "perception/object-perception.h" #include "smith/object-smith.h" #include "sv-definition/sv-other-types.h" #include "system/baseitem-info.h" @@ -262,7 +261,7 @@ void object_absorb(ItemEntity *o_ptr, ItemEntity *j_ptr) o_ptr->number = (total > max_num) ? max_num : total; if (j_ptr->is_known()) { - object_known(o_ptr); + o_ptr->mark_as_known(); } if (((o_ptr->ident & IDENT_STORE) || (j_ptr->ident & IDENT_STORE)) && (!((o_ptr->ident & IDENT_STORE) && (j_ptr->ident & IDENT_STORE)))) { diff --git a/src/perception/object-perception.cpp b/src/perception/object-perception.cpp index 0c9ab9ea3..d0b1cd702 100644 --- a/src/perception/object-perception.cpp +++ b/src/perception/object-perception.cpp @@ -3,40 +3,10 @@ #include "flavor/object-flavor-types.h" #include "game-option/play-record-options.h" #include "io/write-diary.h" -#include "object-enchant/item-feeling.h" -#include "object-enchant/special-object-flags.h" -#include "object-enchant/trg-types.h" -#include "object/item-tester-hooker.h" // 暫定、このファイルへ引っ越す. -#include "system/baseitem-info.h" #include "system/item-entity.h" #include "system/player-type-definition.h" /*! - * @brief オブジェクトを鑑定済にする / - * Known is true when the "attributes" of an object are "known". - * @param o_ptr 鑑定済にするオブジェクトの構造体参照ポインタ - * These include tohit, todam, toac, cost, and pval (charges).\n - *\n - * Note that "knowing" an object gives you everything that an "awareness"\n - * gives you, and much more. In fact, the player is always "aware" of any\n - * item of which he has full "knowledge".\n - *\n - * But having full knowledge of, say, one "wand of wonder", does not, by\n - * itself, give you knowledge, or even awareness, of other "wands of wonder".\n - * It happens that most "identify" routines (including "buying from a shop")\n - * will make the player "aware" of the object as well as fully "know" it.\n - *\n - * This routine also removes any inscriptions generated by "feelings".\n - */ -void object_known(ItemEntity *o_ptr) -{ - o_ptr->feeling = FEEL_NONE; - o_ptr->ident &= ~(IDENT_SENSE); - o_ptr->ident &= ~(IDENT_EMPTY); - o_ptr->ident |= (IDENT_KNOWN); -} - -/*! * @brief オブジェクトを*鑑定*済にする / * The player is now aware of the effects of the given object. * @param player_ptr プレイヤーへの参照ポインタ diff --git a/src/perception/object-perception.h b/src/perception/object-perception.h index d1ea95e9e..93a2319d5 100644 --- a/src/perception/object-perception.h +++ b/src/perception/object-perception.h @@ -2,6 +2,5 @@ class ItemEntity; class PlayerType; -void object_known(ItemEntity *o_ptr); void object_aware(PlayerType *player_ptr, const ItemEntity *o_ptr); void object_tried(const ItemEntity *o_ptr); diff --git a/src/player/player-move.cpp b/src/player/player-move.cpp index 524da6584..e35014725 100644 --- a/src/player/player-move.cpp +++ b/src/player/player-move.cpp @@ -96,7 +96,7 @@ static void discover_hidden_things(PlayerType *player_ptr, POSITION y, POSITION if (!o_ptr->is_known()) { msg_print(_("箱に仕掛けられたトラップを発見した!", "You have discovered a trap on the chest!")); - object_known(o_ptr); + o_ptr->mark_as_known(); disturb(player_ptr, false, false); } } diff --git a/src/player/process-death.cpp b/src/player/process-death.cpp index 1b6e29547..91ca9c4ce 100644 --- a/src/player/process-death.cpp +++ b/src/player/process-death.cpp @@ -243,7 +243,7 @@ static void inventory_aware(PlayerType *player_ptr) } object_aware(player_ptr, o_ptr); - object_known(o_ptr); + o_ptr->mark_as_known(); } } @@ -262,7 +262,7 @@ static void home_aware(PlayerType *player_ptr) } object_aware(player_ptr, o_ptr); - object_known(o_ptr); + o_ptr->mark_as_known(); } } } diff --git a/src/smith/object-smith.cpp b/src/smith/object-smith.cpp index 7f0822693..2e606e63f 100644 --- a/src/smith/object-smith.cpp +++ b/src/smith/object-smith.cpp @@ -362,7 +362,7 @@ Smith::DrainEssenceResult Smith::drain_essence(ItemEntity *o_ptr) o_ptr->ident |= (IDENT_FULL_KNOWN); object_aware(player_ptr, o_ptr); - object_known(o_ptr); + o_ptr->mark_as_known(); const auto new_flags = o_ptr->get_flags(); diff --git a/src/specific-object/chest.cpp b/src/specific-object/chest.cpp index f5c5e1b3b..1de2243ca 100644 --- a/src/specific-object/chest.cpp +++ b/src/specific-object/chest.cpp @@ -9,7 +9,6 @@ #include "monster-floor/monster-summon.h" #include "monster-floor/place-monster-types.h" #include "object-enchant/item-apply-magic.h" -#include "perception/object-perception.h" #include "player-info/class-info.h" #include "player/player-damage.h" #include "player/player-status-flags.h" @@ -137,8 +136,7 @@ void Chest::chest_death(bool scatter, POSITION y, POSITION x, OBJECT_IDX o_idx) /* Empty */ o_ptr->pval = 0; - /* Known */ - object_known(o_ptr); + o_ptr->mark_as_known(); } /*! diff --git a/src/spell-kind/spells-perception.cpp b/src/spell-kind/spells-perception.cpp index c481f6388..44e54de46 100644 --- a/src/spell-kind/spells-perception.cpp +++ b/src/spell-kind/spells-perception.cpp @@ -67,7 +67,7 @@ bool identify_item(PlayerType *player_ptr, ItemEntity *o_ptr) } object_aware(player_ptr, o_ptr); - object_known(o_ptr); + o_ptr->mark_as_known(); o_ptr->marked.set(OmType::TOUCHED); auto &rfu = RedrawingFlagsUpdater::get_instance(); diff --git a/src/spell/spells-object.cpp b/src/spell/spells-object.cpp index e53344025..2eba4de7e 100644 --- a/src/spell/spells-object.cpp +++ b/src/spell/spells-object.cpp @@ -173,7 +173,7 @@ void generate_amusement(PlayerType *player_ptr, int num, bool known) if (known) { object_aware(player_ptr, &item); - object_known(&item); + item.mark_as_known(); } (void)drop_near(player_ptr, &item, -1, player_ptr->y, player_ptr->x); diff --git a/src/store/store.cpp b/src/store/store.cpp index d585009c0..cfb7123b9 100644 --- a/src/store/store.cpp +++ b/src/store/store.cpp @@ -20,7 +20,6 @@ #include "object/object-value.h" #include "object/tval-types.h" #include "perception/identification.h" -#include "perception/object-perception.h" #include "store/black-market.h" #include "store/service-checker.h" #include "store/store-owners.h" @@ -365,7 +364,7 @@ static void store_create(PlayerType *player_ptr, short fix_k_idx, StoreSaleType } } - object_known(q_ptr); + q_ptr->mark_as_known(); q_ptr->ident |= IDENT_STORE; if (tval == ItemKindType::CHEST) { continue; diff --git a/src/system/item-entity.cpp b/src/system/item-entity.cpp index c0ff135dd..fbab630f2 100644 --- a/src/system/item-entity.cpp +++ b/src/system/item-entity.cpp @@ -10,6 +10,7 @@ #include "artifact/fixed-art-types.h" #include "artifact/random-art-effects.h" #include "monster-race/monster-race.h" +#include "object-enchant/item-feeling.h" #include "object-enchant/object-curse.h" #include "object-enchant/special-object-flags.h" #include "object/object-value.h" @@ -888,6 +889,17 @@ TrFlags ItemEntity::get_flags_known() const } /*! + * @brief オブジェクトを鑑定済にする + */ +void ItemEntity::mark_as_known() +{ + this->feeling = FEEL_NONE; + this->ident &= ~(IDENT_SENSE); + this->ident &= ~(IDENT_EMPTY); + this->ident |= (IDENT_KNOWN); +} + +/*! * @brief エゴ光源のフラグを修正する * * 寿命のある光源で寿命が0ターンの時、光源エゴアイテムに起因するフラグは diff --git a/src/system/item-entity.h b/src/system/item-entity.h index ad5bdd9ba..6b265dc10 100644 --- a/src/system/item-entity.h +++ b/src/system/item-entity.h @@ -143,6 +143,8 @@ public: TrFlags get_flags() const; TrFlags get_flags_known() const; + void mark_as_known(); + private: int get_baseitem_price() const; int calc_figurine_value() const; diff --git a/src/wizard/wizard-special-process.cpp b/src/wizard/wizard-special-process.cpp index c6a554f87..a0f889cb1 100644 --- a/src/wizard/wizard-special-process.cpp +++ b/src/wizard/wizard-special-process.cpp @@ -275,7 +275,7 @@ static std::string wiz_make_named_artifact_desc(PlayerType *player_ptr, FixedArt ItemEntity item; item.prep(lookup_baseitem_id(artifact.bi_key)); item.fixed_artifact_idx = a_idx; - object_known(&item); + item.mark_as_known(); return describe_flavor(player_ptr, &item, OD_NAME_ONLY); } -- 2.11.0