OSDN Git Service

[Refactor] ItemEntity に銘が刻まれているかどうか判定するメソッドを追加
authorHabu <habu1010+github@gmail.com>
Sun, 25 Dec 2022 04:35:52 +0000 (13:35 +0900)
committerHabu <habu1010+github@gmail.com>
Sat, 24 Dec 2022 09:58:28 +0000 (18:58 +0900)
銘が刻まれているかどうかの判定を ItemEntity::inscription の値が非ゼロかどうか比較
することで行っているが、inscription の std::string 化にそなえて
ItemEntity::is_inscribed() を新設し、判定箇所をこのメソッドで置き換える。

14 files changed:
src/autopick/autopick-util.cpp
src/cmd-item/cmd-item.cpp
src/flavor/flavor-describer.cpp
src/flavor/named-item-describer.cpp
src/inventory/inventory-curse.cpp
src/inventory/inventory-util.cpp
src/inventory/recharge-processor.cpp
src/io/input-key-requester.cpp
src/object/object-stack.cpp
src/player/player-status-flags.cpp
src/save/item-writer.cpp
src/specific-object/monster-ball.cpp
src/system/item-entity.cpp
src/system/item-entity.h

index f47f990..a15f2ac 100644 (file)
@@ -58,7 +58,7 @@ void auto_inscribe_item(PlayerType *player_ptr, ItemEntity *o_ptr, int idx)
         return;
     }
 
-    if (!o_ptr->inscription) {
+    if (!o_ptr->is_inscribed()) {
         o_ptr->inscription = quark_add(autopick_list[idx].insc.data());
     }
 
index 69b79b3..35fe837 100644 (file)
@@ -188,7 +188,7 @@ void do_cmd_uninscribe(PlayerType *player_ptr)
         return;
     }
 
-    if (!o_ptr->inscription) {
+    if (!o_ptr->is_inscribed()) {
         msg_print(_("このアイテムには消すべき銘がない。", "That item had no inscription to remove."));
         return;
     }
@@ -221,7 +221,7 @@ void do_cmd_inscribe(PlayerType *player_ptr)
     msg_format(_("%sに銘を刻む。", "Inscribing %s."), o_name);
     msg_print(nullptr);
     strcpy(out_val, "");
-    if (o_ptr->inscription) {
+    if (o_ptr->is_inscribed()) {
         angband_strcpy(out_val, quark_str(o_ptr->inscription), MAX_INSCRIPTION);
     }
 
index 58cf6b1..81af2e1 100644 (file)
@@ -471,7 +471,7 @@ static std::string describe_ability_abbrev(const ItemEntity &item)
 {
     auto should_describe = abbrev_extra || abbrev_all;
     should_describe &= item.is_fully_known();
-    should_describe &= (item.inscription == 0) || !angband_strchr(quark_str(item.inscription), '%');
+    should_describe &= !item.is_inscribed() || !angband_strchr(quark_str(item.inscription), '%');
     if (!should_describe) {
         return "";
     }
@@ -482,7 +482,7 @@ static std::string describe_ability_abbrev(const ItemEntity &item)
 
 static std::string describe_player_inscription(const ItemEntity &item)
 {
-    if (item.inscription == 0) {
+    if (!item.is_inscribed()) {
         return "";
     }
 
index 7878007..5acb376 100644 (file)
@@ -148,7 +148,7 @@ static std::optional<std::string> describe_random_artifact_name_after_body_ja(co
 
 static std::string describe_fake_artifact_name_after_body_ja(const ItemEntity &item)
 {
-    if (!item.inscription) {
+    if (!item.is_inscribed()) {
         return "";
     }
 
@@ -303,7 +303,7 @@ static std::string describe_unique_name_after_body_en(const ItemEntity &item, co
         ss << ' ' << egos_info[item.ego_idx].name;
     }
 
-    if (item.inscription) {
+    if (item.is_inscribed()) {
         if (auto str = angband_strchr(quark_str(item.inscription), '#'); str != nullptr) {
             ss << ' ' << str + 1;
         }
index 86cb18a..ba16f69 100644 (file)
@@ -191,7 +191,7 @@ static void curse_teleport(PlayerType *player_ptr)
             continue;
         }
 
-        if (o_ptr->inscription && angband_strchr(quark_str(o_ptr->inscription), '.')) {
+        if (o_ptr->is_inscribed() && angband_strchr(quark_str(o_ptr->inscription), '.')) {
             continue;
         }
 
index 3f4a102..f18170d 100644 (file)
@@ -49,7 +49,7 @@ bool get_tag_floor(FloorType *floor_ptr, COMMAND_CODE *cp, char tag, FLOOR_IDX f
 {
     for (COMMAND_CODE i = 0; i < floor_num && i < 23; i++) {
         auto *o_ptr = &floor_ptr->o_list[floor_list[i]];
-        if (!o_ptr->inscription) {
+        if (!o_ptr->is_inscribed()) {
             continue;
         }
 
@@ -70,7 +70,7 @@ bool get_tag_floor(FloorType *floor_ptr, COMMAND_CODE *cp, char tag, FLOOR_IDX f
 
     for (COMMAND_CODE i = 0; i < floor_num && i < 23; i++) {
         auto *o_ptr = &floor_ptr->o_list[floor_list[i]];
-        if (!o_ptr->inscription) {
+        if (!o_ptr->is_inscribed()) {
             continue;
         }
 
@@ -124,7 +124,7 @@ bool get_tag(PlayerType *player_ptr, COMMAND_CODE *cp, char tag, BIT_FLAGS mode,
 
     for (COMMAND_CODE i = start; i <= end; i++) {
         auto *o_ptr = &player_ptr->inventory_list[i];
-        if ((o_ptr->bi_id == 0) || (o_ptr->inscription == 0)) {
+        if ((o_ptr->bi_id == 0) || !o_ptr->is_inscribed()) {
             continue;
         }
 
@@ -149,7 +149,7 @@ bool get_tag(PlayerType *player_ptr, COMMAND_CODE *cp, char tag, BIT_FLAGS mode,
 
     for (COMMAND_CODE i = start; i <= end; i++) {
         auto *o_ptr = &player_ptr->inventory_list[i];
-        if ((o_ptr->bi_id == 0) || (o_ptr->inscription == 0)) {
+        if ((o_ptr->bi_id == 0) || !o_ptr->is_inscribed()) {
             continue;
         }
 
@@ -211,7 +211,7 @@ bool get_item_allow(PlayerType *player_ptr, INVENTORY_IDX item)
         o_ptr = &player_ptr->current_floor_ptr->o_list[0 - item];
     }
 
-    if (!o_ptr->inscription) {
+    if (!o_ptr->is_inscribed()) {
         return true;
     }
 
index 51cc9aa..6890a89 100644 (file)
@@ -22,7 +22,7 @@
  */
 static void recharged_notice(PlayerType *player_ptr, ItemEntity *o_ptr)
 {
-    if (!o_ptr->inscription) {
+    if (!o_ptr->is_inscribed()) {
         return;
     }
 
index 7859312..907d555 100644 (file)
@@ -320,7 +320,7 @@ void InputKeyRequestor::sweep_confirmation_equipments()
     auto caret_command = this->get_caret_command();
     for (auto i = enum2i(INVEN_MAIN_HAND); i < INVEN_TOTAL; i++) {
         auto &o_ref = this->player_ptr->inventory_list[i];
-        if ((o_ref.bi_id == 0) || (o_ref.inscription == 0)) {
+        if ((o_ref.bi_id == 0) || !o_ref.is_inscribed()) {
             continue;
         }
 
index e1c28ed..8ec9a9c 100644 (file)
@@ -213,7 +213,7 @@ int object_similar_part(const ItemEntity *o_ptr, const ItemEntity *j_ptr)
         return 0;
     }
 
-    if (o_ptr->inscription && j_ptr->inscription && (o_ptr->inscription != j_ptr->inscription)) {
+    if (o_ptr->is_inscribed() && j_ptr->is_inscribed() && (o_ptr->inscription != j_ptr->inscription)) {
         return 0;
     }
 
@@ -277,7 +277,7 @@ void object_absorb(ItemEntity *o_ptr, ItemEntity *j_ptr)
     if (j_ptr->is_fully_known()) {
         o_ptr->ident |= (IDENT_FULL_KNOWN);
     }
-    if (j_ptr->inscription) {
+    if (j_ptr->is_inscribed()) {
         o_ptr->inscription = j_ptr->inscription;
     }
     if (j_ptr->feeling) {
index 9de0875..5e1d8bc 100644 (file)
@@ -806,7 +806,7 @@ BIT_FLAGS has_warning(PlayerType *player_ptr)
         auto flgs = object_flags(o_ptr);
 
         if (flgs.has(TR_WARNING)) {
-            if (!o_ptr->inscription || !(angband_strchr(quark_str(o_ptr->inscription), '$'))) {
+            if (!o_ptr->is_inscribed() || !(angband_strchr(quark_str(o_ptr->inscription), '$'))) {
                 set_bits(result, convert_inventory_slot_type_to_flag_cause(i2enum<inventory_slot_type>(i)));
             }
         }
@@ -1148,7 +1148,7 @@ void update_curses(PlayerType *player_ptr)
                 concptr insc = quark_str(o_ptr->inscription);
 
                 /* {.} will stop random teleportation. */
-                if (o_ptr->inscription && angband_strchr(insc, '.')) {
+                if (o_ptr->is_inscribed() && angband_strchr(insc, '.')) {
                 } else {
                     player_ptr->cursed_special.set(CurseSpecialTraitType::TELEPORT_SELF);
                 }
index 02e1c71..d9e56b4 100644 (file)
@@ -106,7 +106,7 @@ static void write_item_flags(ItemEntity *o_ptr, BIT_FLAGS *flags)
         set_bits(*flags, SaveDataItemFlagType::FEELING);
     }
 
-    if (o_ptr->inscription) {
+    if (o_ptr->is_inscribed()) {
         set_bits(*flags, SaveDataItemFlagType::INSCRIPTION);
     }
 
index be156c3..df02c88 100644 (file)
@@ -32,7 +32,7 @@ static void inscribe_nickname(ae_type *ae_ptr, CapturedMonsterType *cap_mon_ptr)
     concptr t;
     char *s;
     char buf[80] = "";
-    if (ae_ptr->o_ptr->inscription) {
+    if (ae_ptr->o_ptr->is_inscribed()) {
         strcpy(buf, quark_str(ae_ptr->o_ptr->inscription));
     }
 
@@ -134,7 +134,7 @@ static void add_quark_to_inscription(PlayerType *player_ptr, ae_type *ae_ptr, co
 
 static void check_inscription_value(PlayerType *player_ptr, ae_type *ae_ptr)
 {
-    if (ae_ptr->o_ptr->inscription == 0) {
+    if (!ae_ptr->o_ptr->is_inscribed()) {
         return;
     }
 
index 400a67b..5426edc 100644 (file)
@@ -799,3 +799,8 @@ bool ItemEntity::is_cross_bow() const
 {
     return this->bi_key.is_cross_bow();
 }
+
+bool ItemEntity::is_inscribed() const
+{
+    return this->inscription != 0;
+}
index 228f688..6a251e9 100644 (file)
@@ -132,6 +132,7 @@ public:
     bool is_junk() const;
     bool is_armour() const;
     bool is_cross_bow() const;
+    bool is_inscribed() const;
 
 private:
     int get_baseitem_price() const;