From cac0d1782467c8c96c184c227bf422d8816fc3f8 Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Wed, 23 Nov 2022 20:46:02 +0900 Subject: [PATCH] =?UTF-8?q?[Refactor]=20#2828=20'=E9=AD=94=E6=B3=95?= =?UTF-8?q?=E6=A3=92=E3=81=BE=E3=81=9F=E3=81=AF=E6=9D=96'=20=E3=81=A8?= =?UTF-8?q?=E3=81=84=E3=81=86=E5=88=A4=E5=AE=9A=E3=82=92ItemEntity::is=5Fw?= =?UTF-8?q?and=5Fstaff()=20=E5=8F=8A=E3=81=B3BaseitemKey::is=5Fwand=5Fstaf?= =?UTF-8?q?f()=20=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=UTF-8 Content-Transfer-Encoding: 8bit --- src/autopick/autopick-entry.cpp | 2 +- src/cmd-item/cmd-eat.cpp | 2 +- src/flavor/flavor-describer.cpp | 2 +- src/floor/floor-object.cpp | 5 +---- src/mind/mind-mage.cpp | 2 +- src/monster-attack/monster-eating.cpp | 2 +- src/object-hook/hook-expendable.cpp | 2 +- src/spell-kind/magic-item-recharger.cpp | 2 +- src/store/store-util.cpp | 10 +++------- src/system/baseitem-info.cpp | 11 +++++++++++ src/system/baseitem-info.h | 1 + src/system/item-entity.cpp | 5 +++++ src/system/item-entity.h | 1 + src/view/object-describer.cpp | 7 +------ 14 files changed, 30 insertions(+), 24 deletions(-) diff --git a/src/autopick/autopick-entry.cpp b/src/autopick/autopick-entry.cpp index 47b8f3ced2..9cc35fc072 100644 --- a/src/autopick/autopick-entry.cpp +++ b/src/autopick/autopick-entry.cpp @@ -469,7 +469,7 @@ void autopick_entry_from_object(PlayerType *player_ptr, autopick_type *entry, It if (o_ptr->is_ammo()) { ADD_FLG(FLG_MISSILES); - } else if (o_ptr->tval == ItemKindType::SCROLL || o_ptr->tval == ItemKindType::STAFF || o_ptr->is_wand_rod()) { + } else if (o_ptr->tval == ItemKindType::SCROLL || o_ptr->is_wand_staff() || o_ptr->is_wand_rod()) { ADD_FLG(FLG_DEVICES); } else if (o_ptr->tval == ItemKindType::LITE) { ADD_FLG(FLG_LIGHTS); diff --git a/src/cmd-item/cmd-eat.cpp b/src/cmd-item/cmd-eat.cpp index 3558403657..cf928763c0 100644 --- a/src/cmd-item/cmd-eat.cpp +++ b/src/cmd-item/cmd-eat.cpp @@ -491,7 +491,7 @@ bool exe_eat_food_type_object(PlayerType *player_ptr, ItemEntity *o_ptr) */ bool exe_eat_charge_of_magic_device(PlayerType *player_ptr, ItemEntity *o_ptr, INVENTORY_IDX item) { - if (o_ptr->tval != ItemKindType::STAFF && o_ptr->tval != ItemKindType::WAND) { + if (!o_ptr->is_wand_staff()) { return false; } diff --git a/src/flavor/flavor-describer.cpp b/src/flavor/flavor-describer.cpp index d01e893f91..118ba4fef5 100644 --- a/src/flavor/flavor-describer.cpp +++ b/src/flavor/flavor-describer.cpp @@ -483,7 +483,7 @@ static void describe_remaining(flavor_type *flavor_ptr) return; } - if (((flavor_ptr->o_ptr->tval == ItemKindType::STAFF) || (flavor_ptr->o_ptr->tval == ItemKindType::WAND))) { + if (flavor_ptr->o_ptr->is_wand_staff()) { describe_charges_staff_wand(flavor_ptr); } else if (flavor_ptr->o_ptr->tval == ItemKindType::ROD) { describe_charges_rod(flavor_ptr); diff --git a/src/floor/floor-object.cpp b/src/floor/floor-object.cpp index c51df52ed5..a0cca27787 100644 --- a/src/floor/floor-object.cpp +++ b/src/floor/floor-object.cpp @@ -586,10 +586,7 @@ OBJECT_IDX drop_near(PlayerType *player_ptr, ItemEntity *j_ptr, PERCENTAGE chanc 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)) { - return; - } - if (!o_ptr->is_known()) { + if (!o_ptr->is_wand_staff() || !o_ptr->is_known()) { return; } diff --git a/src/mind/mind-mage.cpp b/src/mind/mind-mage.cpp index cba8259632..47e32768c4 100644 --- a/src/mind/mind-mage.cpp +++ b/src/mind/mind-mage.cpp @@ -103,7 +103,7 @@ bool eat_magic(PlayerType *player_ptr, int power) msg_format(_("魔力が逆流した!%sは完全に魔力を失った。", "The recharging backfires - %s is completely drained!"), o_name); if (o_ptr->tval == ItemKindType::ROD) { o_ptr->timeout = k_ptr->pval * o_ptr->number; - } else if ((o_ptr->tval == ItemKindType::WAND) || (o_ptr->tval == ItemKindType::STAFF)) { + } else if (o_ptr->is_wand_staff()) { o_ptr->pval = 0; } diff --git a/src/monster-attack/monster-eating.cpp b/src/monster-attack/monster-eating.cpp index 56df7c9485..510e62e989 100644 --- a/src/monster-attack/monster-eating.cpp +++ b/src/monster-attack/monster-eating.cpp @@ -223,7 +223,7 @@ void process_eat_lite(PlayerType *player_ptr, MonsterAttackPlayer *monap_ptr) */ bool process_un_power(PlayerType *player_ptr, MonsterAttackPlayer *monap_ptr) { - if (((monap_ptr->o_ptr->tval != ItemKindType::STAFF) && (monap_ptr->o_ptr->tval != ItemKindType::WAND)) || (monap_ptr->o_ptr->pval == 0)) { + if (!monap_ptr->o_ptr->is_wand_staff() || (monap_ptr->o_ptr->pval == 0)) { return false; } diff --git a/src/object-hook/hook-expendable.cpp b/src/object-hook/hook-expendable.cpp index 98cf7cd626..f3cab810ff 100644 --- a/src/object-hook/hook-expendable.cpp +++ b/src/object-hook/hook-expendable.cpp @@ -35,7 +35,7 @@ bool item_tester_hook_eatable(PlayerType *player_ptr, const ItemEntity *o_ptr) auto food_type = PlayerRace(player_ptr).food(); if (food_type == PlayerRaceFoodType::MANA) { - if (o_ptr->tval == ItemKindType::STAFF || o_ptr->tval == ItemKindType::WAND) { + if (o_ptr->is_wand_staff()) { return true; } } else if (food_type == PlayerRaceFoodType::CORPSE) { diff --git a/src/spell-kind/magic-item-recharger.cpp b/src/spell-kind/magic-item-recharger.cpp index 9320cdf563..2e0de93d04 100644 --- a/src/spell-kind/magic-item-recharger.cpp +++ b/src/spell-kind/magic-item-recharger.cpp @@ -125,7 +125,7 @@ bool recharge(PlayerType *player_ptr, int power) msg_format(_("魔力が逆流した!%sは完全に魔力を失った。", "The recharging backfires - %s is completely drained!"), o_name); if ((o_ptr->tval == ItemKindType::ROD) && (o_ptr->timeout < 10000)) { o_ptr->timeout = (o_ptr->timeout + 100) * 2; - } else if ((o_ptr->tval == ItemKindType::WAND) || (o_ptr->tval == ItemKindType::STAFF)) { + } else if (o_ptr->is_wand_staff()) { o_ptr->pval = 0; } return update_player(player_ptr); diff --git a/src/store/store-util.cpp b/src/store/store-util.cpp index ffcc253044..d4828dbade 100644 --- a/src/store/store-util.cpp +++ b/src/store/store-util.cpp @@ -101,17 +101,13 @@ std::vector store_same_magic_device_pvals(ItemEntity *j_ptr) auto list = std::vector(); for (INVENTORY_IDX i = 0; i < st_ptr->stock_num; i++) { auto *o_ptr = &st_ptr->stock[i]; - if (o_ptr == j_ptr) { - continue; - } - if (o_ptr->bi_id != j_ptr->bi_id) { - continue; - } - if (o_ptr->tval != ItemKindType::STAFF && o_ptr->tval != ItemKindType::WAND) { + if ((o_ptr == j_ptr) || (o_ptr->bi_id != j_ptr->bi_id) || !o_ptr->is_wand_staff()) { continue; } + list.push_back(o_ptr->pval); } + return list; } diff --git a/src/system/baseitem-info.cpp b/src/system/baseitem-info.cpp index 313eb9b858..9b018cf295 100644 --- a/src/system/baseitem-info.cpp +++ b/src/system/baseitem-info.cpp @@ -184,6 +184,17 @@ bool BaseitemKey::is_wand_rod() const } } +bool BaseitemKey::is_wand_staff() const +{ + switch (this->type_value) { + case ItemKindType::WAND: + case ItemKindType::STAFF: + return true; + default: + return false; + } +} + bool BaseitemKey::is_mushrooms() const { if (!this->subtype_value.has_value()) { diff --git a/src/system/baseitem-info.h b/src/system/baseitem-info.h index 2800d467b9..ffdd1dee0f 100644 --- a/src/system/baseitem-info.h +++ b/src/system/baseitem-info.h @@ -45,6 +45,7 @@ class BaseitemKey { bool has_unidentified_name() const; bool can_recharge() const; bool is_wand_rod() const; + bool is_wand_staff() const; private: ItemKindType type_value; diff --git a/src/system/item-entity.cpp b/src/system/item-entity.cpp index 784479dcea..199b155332 100644 --- a/src/system/item-entity.cpp +++ b/src/system/item-entity.cpp @@ -814,3 +814,8 @@ bool ItemEntity::is_wand_rod() const { return BaseitemKey(this->tval).is_wand_rod(); } + +bool ItemEntity::is_wand_staff() const +{ + return BaseitemKey(this->tval).is_wand_staff(); +} diff --git a/src/system/item-entity.h b/src/system/item-entity.h index f595e2b974..5553225215 100644 --- a/src/system/item-entity.h +++ b/src/system/item-entity.h @@ -124,6 +124,7 @@ class ItemEntity { bool has_unidentified_name() const; ItemKindType get_arrow_kind() const; bool is_wand_rod() const; + bool is_wand_staff() const; private: int get_baseitem_price() const; diff --git a/src/view/object-describer.cpp b/src/view/object-describer.cpp index 9bab6b0fd3..eb221ee8d7 100644 --- a/src/view/object-describer.cpp +++ b/src/view/object-describer.cpp @@ -19,12 +19,7 @@ */ void inven_item_charges(const ItemEntity &item) { - const auto tval = item.tval; - if ((tval != ItemKindType::STAFF) && (tval != ItemKindType::WAND)) { - return; - } - - if (!item.is_known()) { + if (!item.is_wand_staff() || !item.is_known()) { return; }