From cb792cd5619aa75314eb78f4aa96fb3c46749144 Mon Sep 17 00:00:00 2001 From: Hourier <66951241+Hourier@users.noreply.github.com> Date: Thu, 23 Nov 2023 21:13:50 +0900 Subject: [PATCH] =?utf8?q?[Refactor]=20#3766=20item=5Factivation=5Fdragon?= =?utf8?q?=5Fbreath()=20=E3=82=92ItemEntity=20=E3=81=AE=E3=82=AA=E3=83=96?= =?utf8?q?=E3=82=B8=E3=82=A7=E3=82=AF=E3=83=88=E3=83=A1=E3=82=BD=E3=83=83?= =?utf8?q?=E3=83=89=E3=81=B8=E7=A7=BB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/object/object-info.cpp | 28 +--------------------------- src/system/item-entity.cpp | 27 +++++++++++++++++++++++++++ src/system/item-entity.h | 2 ++ 3 files changed, 30 insertions(+), 27 deletions(-) diff --git a/src/object/object-info.cpp b/src/object/object-info.cpp index d560b5172..15c686d5e 100644 --- a/src/object/object-info.cpp +++ b/src/object/object-info.cpp @@ -16,7 +16,6 @@ #include "inventory/inventory-slot-types.h" #include "monster-race/monster-race.h" #include "object-enchant/activation-info-table.h" -#include "object-enchant/dragon-breaths-table.h" #include "object-enchant/object-ego.h" #include "player-base/player-class.h" #include "player/player-realm.h" @@ -33,31 +32,6 @@ #include "util/int-char-converter.h" #include -/*! - * @brief アイテムの発動効果名称を返す(サブルーチン/ブレス) - * @param item アイテムへの参照 - * @return std::string 発動名称 - */ -static std::string item_activation_dragon_breath(const ItemEntity &item) -{ - std::string desc = _("", "breathe "); - auto n = 0; - const auto flags = item.get_flags(); - for (auto i = 0; dragonbreath_info[i].flag != 0; i++) { - if (flags.has(dragonbreath_info[i].flag)) { - if (n > 0) { - desc.append(_("、", ", ")); - } - - desc.append(dragonbreath_info[i].name); - n++; - } - } - - desc.append(_("のブレス(250)", " (250)")); - return desc; -} - static std::string build_activation_description(const activation_type &act, const ItemEntity &item) { switch (act.index) { @@ -76,7 +50,7 @@ static std::string build_activation_description(const activation_type &act, cons return act.desc; case RandomArtActType::BR_DRAGON: - return item_activation_dragon_breath(item); + return item.build_activation_description_dragon_breath(); case RandomArtActType::AGGRAVATE: if (item.is_specific_artifact(FixedArtifactId::HYOUSIGI)) { return _("拍子木を打ちならす", "beat wooden clappers"); diff --git a/src/system/item-entity.cpp b/src/system/item-entity.cpp index 416fc369a..5e3343719 100644 --- a/src/system/item-entity.cpp +++ b/src/system/item-entity.cpp @@ -11,6 +11,7 @@ #include "artifact/random-art-effects.h" #include "monster-race/monster-race.h" #include "object-enchant/activation-info-table.h" +#include "object-enchant/dragon-breaths-table.h" #include "object-enchant/item-feeling.h" #include "object-enchant/object-curse.h" #include "object-enchant/special-object-flags.h" @@ -27,6 +28,7 @@ #include "util/bit-flags-calculator.h" #include "util/enum-converter.h" #include "util/string-processor.h" +#include ItemEntity::ItemEntity() : bi_key(BaseitemKey(ItemKindType::NONE)) @@ -905,6 +907,31 @@ TrFlags ItemEntity::get_flags_known() const } /*! + * @brief アイテムの発動効果名称を返す (ドラゴンブレス) + * @return 発動名称 + */ +std::string ItemEntity::build_activation_description_dragon_breath() const +{ + std::stringstream ss; + ss << _("", "breathe "); + auto n = 0; + const auto flags = this->get_flags(); + for (auto i = 0; dragonbreath_info[i].flag != 0; i++) { + if (flags.has(dragonbreath_info[i].flag)) { + if (n > 0) { + ss << _("、", ", "); + } + + ss << dragonbreath_info[i].name; + n++; + } + } + + ss << _("のブレス(250)", " (250)"); + return ss.str(); +} + +/*! * @brief オブジェクトを鑑定済にする */ void ItemEntity::mark_as_known() diff --git a/src/system/item-entity.h b/src/system/item-entity.h index 2f98ba2e1..76be3ea1d 100644 --- a/src/system/item-entity.h +++ b/src/system/item-entity.h @@ -16,6 +16,7 @@ #include "system/system-variables.h" #include "util/flag-group.h" #include +#include #include enum class FixedArtifactId : short; @@ -146,6 +147,7 @@ public: ArtifactType &get_fixed_artifact() const; TrFlags get_flags() const; TrFlags get_flags_known() const; + std::string build_activation_description_dragon_breath() const; void mark_as_known(); void mark_as_tried(); -- 2.11.0