From 0a1250fe118ea7ab01b56a9d4cfb54fd240c9a6f Mon Sep 17 00:00:00 2001 From: Hourier Date: Sun, 28 Jun 2020 15:29:12 +0900 Subject: [PATCH] [Refactor] #37353 Separated hook-weapon.c/h from object-hook.c/h --- Hengband/Hengband/Hengband.vcxproj | 2 + Hengband/Hengband/Hengband.vcxproj.filters | 6 ++ src/Makefile.am | 3 +- src/cmd-item/cmd-item.c | 1 + src/cmd/cmd-basic.c | 1 + src/market/building-craft-fix.c | 1 + src/market/building-craft-weapon.c | 1 + src/object-hook/hook-weapon.c | 100 +++++++++++++++++++++++++++++ src/object-hook/hook-weapon.h | 9 +++ src/object/object-hook.c | 97 ---------------------------- src/object/object-hook.h | 5 -- 11 files changed, 123 insertions(+), 103 deletions(-) create mode 100644 src/object-hook/hook-weapon.c create mode 100644 src/object-hook/hook-weapon.h diff --git a/Hengband/Hengband/Hengband.vcxproj b/Hengband/Hengband/Hengband.vcxproj index 9bba82204..8f3a2f1fc 100644 --- a/Hengband/Hengband/Hengband.vcxproj +++ b/Hengband/Hengband/Hengband.vcxproj @@ -217,6 +217,7 @@ + @@ -632,6 +633,7 @@ + diff --git a/Hengband/Hengband/Hengband.vcxproj.filters b/Hengband/Hengband/Hengband.vcxproj.filters index 65b3552c9..88665d8da 100644 --- a/Hengband/Hengband/Hengband.vcxproj.filters +++ b/Hengband/Hengband/Hengband.vcxproj.filters @@ -1475,6 +1475,9 @@ object-hook + + object-hook + @@ -3241,6 +3244,9 @@ object-hook + + object-hook + diff --git a/src/Makefile.am b/src/Makefile.am index 9240f9d08..828e2d0b6 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -433,6 +433,7 @@ hengband_SOURCES = \ object-enchant/vorpal-weapon.c object-enchant/vorpal-weapon.h \ \ object-hook/hook-perception.c object-hook/hook-perception.h \ + object-hook/hook-weapon.c object-hook/hook-weapon.h \ \ perception/identification.c perception/identification.h \ perception/object-perception.c perception/object-perception.h \ @@ -642,7 +643,7 @@ COMPILE = $(srcdir)/gcc-wrap $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ -Icombat -Icore -Idungeon -Ieffect -Ifloor -Igame-option -Igrid \ -Iinfo-reader -Iinventory -Iio -Iio-dump -Iknowledge -Imarket -Imelee \ -Imind -Imonster -Imonster-attack -Imonster-floor -Imonster-race -Ilore \ - -Imspell -Imutation -Iobject -Iobject-enchant -Ipet -Iplayer \ + -Imspell -Imutation -Iobject -Iobject-enchant -Iobject-hook -Ipet -Iplayer \ -Iplayer-attack -Irealm -Iroom -Ispecific-object -Ispell -Ispell-kind \ -Ispell-realm -Isv-definition -Isystem -Iterm -Iutil -Iview -Iwizard -Iworld diff --git a/src/cmd-item/cmd-item.c b/src/cmd-item/cmd-item.c index 9b69eba11..bfbb60c7f 100644 --- a/src/cmd-item/cmd-item.c +++ b/src/cmd-item/cmd-item.c @@ -43,6 +43,7 @@ #include "object-enchant/object-ego.h" #include "object-enchant/special-object-flags.h" #include "object-enchant/trc-types.h" +#include "object-hook/hook-weapon.h" #include "object/item-use-flags.h" #include "object/object-flavor.h" #include "object/object-generator.h" diff --git a/src/cmd/cmd-basic.c b/src/cmd/cmd-basic.c index 975ff9dfa..904086142 100644 --- a/src/cmd/cmd-basic.c +++ b/src/cmd/cmd-basic.c @@ -56,6 +56,7 @@ #include "monster/monster-info.h" #include "object-enchant/special-object-flags.h" #include "object-enchant/tr-types.h" +#include "object-hook/hook-weapon.h" #include "object/item-use-flags.h" #include "object/object-broken.h" #include "object/object-flags.h" diff --git a/src/market/building-craft-fix.c b/src/market/building-craft-fix.c index 5bf127f12..bd6a4c73b 100644 --- a/src/market/building-craft-fix.c +++ b/src/market/building-craft-fix.c @@ -9,6 +9,7 @@ #include "object-enchant/object-boost.h" #include "object-enchant/special-object-flags.h" #include "object-enchant/tr-types.h" +#include "object-hook/hook-weapon.h" #include "object/item-use-flags.h" #include "object/object-flags.h" #include "object/object-flavor.h" diff --git a/src/market/building-craft-weapon.c b/src/market/building-craft-weapon.c index b7ce23a0a..88a28efcf 100644 --- a/src/market/building-craft-weapon.c +++ b/src/market/building-craft-weapon.c @@ -7,6 +7,7 @@ #include "io/input-key-acceptor.h" #include "market/building-util.h" #include "object-enchant/tr-types.h" +#include "object-hook/hook-weapon.h" #include "object/item-use-flags.h" #include "object/object-flags.h" #include "object/object-flavor.h" diff --git a/src/object-hook/hook-weapon.c b/src/object-hook/hook-weapon.c new file mode 100644 index 000000000..a38b56671 --- /dev/null +++ b/src/object-hook/hook-weapon.c @@ -0,0 +1,100 @@ +#include "object-hook/hook-weapon.h" +#include "sv-definition/sv-weapon-types.h" +#include "system/object-type-definition.h" + +/*! + * @brief 武器匠の「武器」鑑定対象になるかを判定する。/ Hook to specify "weapon" + * @param o_ptr オブジェクトの構造体の参照ポインタ。 + * @return 対象になるならTRUEを返す。 + */ +bool item_tester_hook_orthodox_melee_weapons(player_type *player_ptr, object_type *o_ptr) +{ + /* Unused */ + (void)player_ptr; + + switch (o_ptr->tval) { + case TV_HAFTED: + case TV_POLEARM: + case TV_DIGGING: { + return TRUE; + } + case TV_SWORD: { + if (o_ptr->sval != SV_POISON_NEEDLE) + return TRUE; + } + } + + return FALSE; +} + +/*! + * @brief オブジェクトが右手か左手に装備できる武器かどうかの判定 + * @param o_ptr 判定するオブジェクトの構造体参照ポインタ + * @return 右手か左手の武器として装備できるならばTRUEを返す。 + */ +bool item_tester_hook_melee_weapon(player_type *player_ptr, object_type *o_ptr) +{ + /* Unused */ + (void)player_ptr; + + /* Check for a usable slot */ + if ((o_ptr->tval >= TV_DIGGING) && (o_ptr->tval <= TV_SWORD)) + return TRUE; + + return FALSE; +} + +/*! + * @brief 修復対象となる壊れた武器かを判定する。 / Hook to specify "broken weapon" + * @param o_ptr オブジェクトの構造体の参照ポインタ。 + * @return 修復対象になるならTRUEを返す。 + */ +bool item_tester_hook_broken_weapon(player_type *player_ptr, object_type *o_ptr) +{ + /* Unused */ + (void)player_ptr; + + if (o_ptr->tval != TV_SWORD) + return FALSE; + + switch (o_ptr->sval) { + case SV_BROKEN_DAGGER: + case SV_BROKEN_SWORD: + return TRUE; + } + + return FALSE; +} + +/*! + * @brief オブジェクトが投射可能な武器かどうかを返す。 + * @param o_ptr 判定するオブジェクトの構造体参照ポインタ + * @return 投射可能な武器ならばTRUE + */ +bool item_tester_hook_boomerang(player_type *player_ptr, object_type *o_ptr) +{ + /* Unused */ + (void)player_ptr; + + if ((o_ptr->tval == TV_DIGGING) || (o_ptr->tval == TV_SWORD) || (o_ptr->tval == TV_POLEARM) || (o_ptr->tval == TV_HAFTED)) + return TRUE; + + return FALSE; +} + +/*! + * @brief オブジェクトがどちらの手にも装備できる武器かどうかの判定 + * @param o_ptr 判定するオブジェクトの構造体参照ポインタ + * @return 左右両方の手で装備できるならばTRUEを返す。 + */ +bool item_tester_hook_mochikae(player_type *player_ptr, object_type *o_ptr) +{ + /* Unused */ + (void)player_ptr; + + /* Check for a usable slot */ + if (((o_ptr->tval >= TV_DIGGING) && (o_ptr->tval <= TV_SWORD)) || (o_ptr->tval == TV_SHIELD) || (o_ptr->tval == TV_CAPTURE) || (o_ptr->tval == TV_CARD)) + return TRUE; + + return FALSE; +} diff --git a/src/object-hook/hook-weapon.h b/src/object-hook/hook-weapon.h new file mode 100644 index 000000000..8b6c2e2c1 --- /dev/null +++ b/src/object-hook/hook-weapon.h @@ -0,0 +1,9 @@ +#pragma once + +#include "system/angband.h" + +bool item_tester_hook_orthodox_melee_weapons(player_type *player_ptr, object_type *o_ptr); +bool item_tester_hook_melee_weapon(player_type *player_ptr, object_type *o_ptr); +bool item_tester_hook_broken_weapon(player_type *player_ptr, object_type *o_ptr); +bool item_tester_hook_boomerang(player_type *player_ptr, object_type *o_ptr); +bool item_tester_hook_mochikae(player_type *player_ptr, object_type *o_ptr); diff --git a/src/object/object-hook.c b/src/object/object-hook.c index db9733657..6812c7c7e 100644 --- a/src/object/object-hook.c +++ b/src/object/object-hook.c @@ -60,48 +60,6 @@ bool item_tester_hook_convertible(player_type *player_ptr, object_type *o_ptr) } /*! - * @brief 武器匠の「武器」鑑定対象になるかを判定する。/ Hook to specify "weapon" - * @param o_ptr オブジェクトの構造体の参照ポインタ。 - * @return 対象になるならTRUEを返す。 - */ -bool item_tester_hook_orthodox_melee_weapons(player_type *player_ptr, object_type *o_ptr) -{ - /* Unused */ - (void)player_ptr; - - switch (o_ptr->tval) { - case TV_HAFTED: - case TV_POLEARM: - case TV_DIGGING: { - return TRUE; - } - case TV_SWORD: { - if (o_ptr->sval != SV_POISON_NEEDLE) - return TRUE; - } - } - - return FALSE; -} - -/*! - * @brief オブジェクトが右手か左手に装備できる武器かどうかの判定 - * @param o_ptr 判定するオブジェクトの構造体参照ポインタ - * @return 右手か左手の武器として装備できるならばTRUEを返す。 - */ -bool item_tester_hook_melee_weapon(player_type *player_ptr, object_type *o_ptr) -{ - /* Unused */ - (void)player_ptr; - - /* Check for a usable slot */ - if ((o_ptr->tval >= TV_DIGGING) && (o_ptr->tval <= TV_SWORD)) - return TRUE; - - return FALSE; -} - -/*! * @brief 武器匠の「矢弾」鑑定対象になるかを判定する。/ Hook to specify "weapon" * @param o_ptr オブジェクトの構造体の参照ポインタ。 * @return 対象になるならTRUEを返す。 @@ -123,44 +81,6 @@ bool item_tester_hook_ammo(player_type *player_ptr, object_type *o_ptr) } /*! - * @brief 修復対象となる壊れた武器かを判定する。 / Hook to specify "broken weapon" - * @param o_ptr オブジェクトの構造体の参照ポインタ。 - * @return 修復対象になるならTRUEを返す。 - */ -bool item_tester_hook_broken_weapon(player_type *player_ptr, object_type *o_ptr) -{ - /* Unused */ - (void)player_ptr; - - if (o_ptr->tval != TV_SWORD) - return FALSE; - - switch (o_ptr->sval) { - case SV_BROKEN_DAGGER: - case SV_BROKEN_SWORD: - return TRUE; - } - - return FALSE; -} - -/*! - * @brief オブジェクトが投射可能な武器かどうかを返す。 - * @param o_ptr 判定するオブジェクトの構造体参照ポインタ - * @return 投射可能な武器ならばTRUE - */ -bool item_tester_hook_boomerang(player_type *player_ptr, object_type *o_ptr) -{ - /* Unused */ - (void)player_ptr; - - if ((o_ptr->tval == TV_DIGGING) || (o_ptr->tval == TV_SWORD) || (o_ptr->tval == TV_POLEARM) || (o_ptr->tval == TV_HAFTED)) - return TRUE; - - return FALSE; -} - -/*! * @brief オブジェクトをプレイヤーが食べることができるかを判定する / * Hook to determine if an object is eatable * @param o_ptr 判定したいオブジェクトの構造体参照ポインタ @@ -184,23 +104,6 @@ bool item_tester_hook_eatable(player_type *player_ptr, object_type *o_ptr) } /*! - * @brief オブジェクトがどちらの手にも装備できる武器かどうかの判定 - * @param o_ptr 判定するオブジェクトの構造体参照ポインタ - * @return 左右両方の手で装備できるならばTRUEを返す。 - */ -bool item_tester_hook_mochikae(player_type *player_ptr, object_type *o_ptr) -{ - /* Unused */ - (void)player_ptr; - - /* Check for a usable slot */ - if (((o_ptr->tval >= TV_DIGGING) && (o_ptr->tval <= TV_SWORD)) || (o_ptr->tval == TV_SHIELD) || (o_ptr->tval == TV_CAPTURE) || (o_ptr->tval == TV_CARD)) - return TRUE; - - return FALSE; -} - -/*! * @brief オブジェクトをプレイヤーが魔道具として発動できるかを判定する / * Hook to determine if an object is activatable * @param o_ptr 判定したいオブジェクトの構造体参照ポインタ diff --git a/src/object/object-hook.h b/src/object/object-hook.h index 6c6fdf0ee..8b66bb2bf 100644 --- a/src/object/object-hook.h +++ b/src/object/object-hook.h @@ -7,13 +7,8 @@ extern bool (*item_tester_hook)(player_type *, object_type *o_ptr); bool item_tester_hook_convertible(player_type *player_ptr, object_type *o_ptr); bool item_tester_hook_recharge(player_type *player_ptr, object_type *o_ptr); -bool item_tester_hook_orthodox_melee_weapons(player_type *player_ptr, object_type *o_ptr); -bool item_tester_hook_melee_weapon(player_type *player_ptr, object_type *o_ptr); bool item_tester_hook_ammo(player_type *player_ptr, object_type *o_ptr); -bool item_tester_hook_broken_weapon(player_type *player_ptr, object_type *o_ptr); -bool item_tester_hook_boomerang(player_type *player_ptr, object_type *o_ptr); bool item_tester_hook_eatable(player_type *player_ptr, object_type *o_ptr); -bool item_tester_hook_mochikae(player_type *player_ptr, object_type *o_ptr); bool item_tester_hook_activate(player_type *player_ptr, object_type *o_ptr); bool item_tester_hook_wear(player_type *player_ptr, object_type *o_ptr); bool item_tester_hook_use(player_type *player_ptr, object_type *o_ptr); -- 2.11.0