From 640ba11c39bcef6453e13bc6b27e240261d85ae7 Mon Sep 17 00:00:00 2001 From: Hourier Date: Wed, 29 Apr 2020 14:46:40 +0900 Subject: [PATCH] [Refactor] #39963 Separated spells-execution.c/h and spells-util.h from spells.h/spells1.c --- Hengband_vcs2017/Hengband/Hengband.vcxproj | 3 ++ Hengband_vcs2017/Hengband/Hengband.vcxproj.filters | 9 +++++ src/Makefile.am | 2 + src/cmd/cmd-hissatsu.c | 3 +- src/cmd/cmd-spell.c | 2 + src/core.c | 2 + src/knowledge/knowledge-experiences.c | 2 + src/player-status.c | 2 + src/realm/realm-arcane.c | 1 + src/realm/realm-arcane.h | 2 + src/realm/realm-chaos.c | 1 + src/realm/realm-chaos.h | 2 + src/realm/realm-craft.c | 3 +- src/realm/realm-craft.h | 2 + src/realm/realm-crusade.c | 3 +- src/realm/realm-crusade.h | 2 + src/realm/realm-daemon.c | 4 +- src/realm/realm-daemon.h | 2 + src/realm/realm-death.c | 1 + src/realm/realm-death.h | 2 + src/realm/realm-hex.c | 2 + src/realm/realm-hex.h | 4 +- src/realm/realm-hissatsu.c | 1 + src/realm/realm-hissatsu.h | 2 + src/realm/realm-life.c | 1 + src/realm/realm-life.h | 2 + src/realm/realm-nature.c | 1 + src/realm/realm-nature.h | 2 + src/realm/realm-song.c | 3 +- src/realm/realm-song.h | 4 +- src/realm/realm-sorcery.c | 1 + src/realm/realm-sorcery.h | 2 + src/realm/realm-trump.c | 1 + src/realm/realm-trump.h | 2 + src/spell/spells-execution.c | 46 ++++++++++++++++++++++ src/spell/spells-execution.h | 3 ++ src/spell/spells-util.h | 12 ++++++ src/spells.h | 13 ------ src/spells1.c | 46 +--------------------- src/spells3.c | 2 + 40 files changed, 129 insertions(+), 71 deletions(-) create mode 100644 src/spell/spells-execution.c create mode 100644 src/spell/spells-execution.h create mode 100644 src/spell/spells-util.h diff --git a/Hengband_vcs2017/Hengband/Hengband.vcxproj b/Hengband_vcs2017/Hengband/Hengband.vcxproj index 0d5e70ef3..219c74342 100644 --- a/Hengband_vcs2017/Hengband/Hengband.vcxproj +++ b/Hengband_vcs2017/Hengband/Hengband.vcxproj @@ -306,6 +306,7 @@ + @@ -511,6 +512,8 @@ + + diff --git a/Hengband_vcs2017/Hengband/Hengband.vcxproj.filters b/Hengband_vcs2017/Hengband/Hengband.vcxproj.filters index 976ab042e..be8bf53fe 100644 --- a/Hengband_vcs2017/Hengband/Hengband.vcxproj.filters +++ b/Hengband_vcs2017/Hengband/Hengband.vcxproj.filters @@ -700,6 +700,9 @@ spell + + spell + @@ -1403,6 +1406,12 @@ spell + + spell + + + spell + diff --git a/src/Makefile.am b/src/Makefile.am index a7878f2f4..97b0fdb5a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -170,6 +170,8 @@ hengband_SOURCES = \ effect/spells-effect-util.c effect/spells-effect-util.h \ \ spell/technic-info-table.c spell/technic-info-table.h \ + spell/spells-execution.c spell/spells-execution.h \ + spell/spells-util.h \ spells.h \ spells1.c spells2.c spells3.c \ spells-diceroll.c spells-diceroll.h \ diff --git a/src/cmd/cmd-hissatsu.c b/src/cmd/cmd-hissatsu.c index 21e2211b9..130850f67 100644 --- a/src/cmd/cmd-hissatsu.c +++ b/src/cmd/cmd-hissatsu.c @@ -24,10 +24,11 @@ #include "cmd-basic.h" #include "cmd-spell.h" #include "view/display-main-window.h" +#include "spell/spells-util.h" +#include "spell/spells-execution.h" #define TECHNIC_HISSATSU (REALM_HISSATSU - MIN_TECHNIC) - /*! * @brief 使用可能な剣術を選択する / * Allow user to choose a blade arts. diff --git a/src/cmd/cmd-spell.c b/src/cmd/cmd-spell.c index 1fc450a37..db0798452 100644 --- a/src/cmd/cmd-spell.c +++ b/src/cmd/cmd-spell.c @@ -33,6 +33,8 @@ #include "floor.h" #include "autopick/autopick-reader-writer.h" #include "japanese.h" +#include "spell/spells-util.h" +#include "spell/spells-execution.h" /*! * 魔法領域フラグ管理テーブル / diff --git a/src/core.c b/src/core.c index d8f5041bc..84b2f8c15 100644 --- a/src/core.c +++ b/src/core.c @@ -113,6 +113,8 @@ #include "realm/realm.h" #include "realm/realm-song.h" #include "targeting.h" +#include "spell/spells-util.h" +#include "spell/spells-execution.h" /*! * コピーライト情報 / diff --git a/src/knowledge/knowledge-experiences.c b/src/knowledge/knowledge-experiences.c index ebfcfd266..9dd402e3f 100644 --- a/src/knowledge/knowledge-experiences.c +++ b/src/knowledge/knowledge-experiences.c @@ -12,6 +12,8 @@ #include "object/object-kind.h" #include "player-skill.h" #include "spell/technic-info-table.h" +#include "spell/spells-util.h" +#include "spell/spells-execution.h" /* * Display weapon-exp diff --git a/src/player-status.c b/src/player-status.c index 21b7159af..d6dbbccf5 100644 --- a/src/player-status.c +++ b/src/player-status.c @@ -48,6 +48,8 @@ #include "horror-descriptions.h" #include "market/arena-info-table.h" +#include "spell/spells-util.h" +#include "spell/spells-execution.h" /*! * @brief 能力値テーブル / Abbreviations of healthy stats diff --git a/src/realm/realm-arcane.c b/src/realm/realm-arcane.c index 8af897eed..c0599d1f1 100644 --- a/src/realm/realm-arcane.c +++ b/src/realm/realm-arcane.c @@ -13,6 +13,7 @@ #include "player-status.h" #include "player-effects.h" #include "targeting.h" +#include "realm/realm-arcane.h" /*! * @brief 秘術領域魔法の各処理を行う diff --git a/src/realm/realm-arcane.h b/src/realm/realm-arcane.h index 59a6e6a17..4cb51b2ad 100644 --- a/src/realm/realm-arcane.h +++ b/src/realm/realm-arcane.h @@ -1,3 +1,5 @@ #pragma once +#include "spell/spells-util.h" + concptr do_arcane_spell(player_type *caster_ptr, SPELL_IDX spell, spell_type mode); diff --git a/src/realm/realm-chaos.c b/src/realm/realm-chaos.c index 134457818..afb31ffaf 100644 --- a/src/realm/realm-chaos.c +++ b/src/realm/realm-chaos.c @@ -12,6 +12,7 @@ #include "spells.h" #include "targeting.h" #include "view/display-main-window.h" +#include "realm/realm-chaos.h" /*! * @brief カオス領域魔法の各処理を行う diff --git a/src/realm/realm-chaos.h b/src/realm/realm-chaos.h index c2bbc7f20..ff2c20fd8 100644 --- a/src/realm/realm-chaos.h +++ b/src/realm/realm-chaos.h @@ -1,3 +1,5 @@ #pragma once +#include "spell/spells-util.h" + concptr do_chaos_spell(player_type *caster_ptr, SPELL_IDX spell, spell_type mode); diff --git a/src/realm/realm-craft.c b/src/realm/realm-craft.c index b71a669f5..46df580dc 100644 --- a/src/realm/realm-craft.c +++ b/src/realm/realm-craft.c @@ -10,8 +10,7 @@ #include "mutation.h" #include "player-status.h" #include "player-effects.h" - - +#include "realm/realm-craft.h" /*! * @brief 匠領域魔法の各処理を行う diff --git a/src/realm/realm-craft.h b/src/realm/realm-craft.h index e844984b3..d99c834e9 100644 --- a/src/realm/realm-craft.h +++ b/src/realm/realm-craft.h @@ -1,3 +1,5 @@ #pragma once +#include "spell/spells-util.h" + concptr do_craft_spell(player_type *caster_ptr, SPELL_IDX spell, spell_type mode); diff --git a/src/realm/realm-crusade.c b/src/realm/realm-crusade.c index adaa21762..f7e76a2b9 100644 --- a/src/realm/realm-crusade.c +++ b/src/realm/realm-crusade.c @@ -13,8 +13,7 @@ #include "player-class.h" #include "player-effects.h" #include "targeting.h" - - +#include "realm/realm-crusade.h" /*! * @brief 破邪領域魔法の各処理を行う diff --git a/src/realm/realm-crusade.h b/src/realm/realm-crusade.h index f8f17b471..8e0e1cd04 100644 --- a/src/realm/realm-crusade.h +++ b/src/realm/realm-crusade.h @@ -1,3 +1,5 @@ #pragma once +#include "spell/spells-util.h" + concptr do_crusade_spell(player_type *caster_ptr, SPELL_IDX spell, spell_type mode); diff --git a/src/realm/realm-daemon.c b/src/realm/realm-daemon.c index 495bb39e8..3265152de 100644 --- a/src/realm/realm-daemon.c +++ b/src/realm/realm-daemon.c @@ -1,5 +1,4 @@ - -#include "angband.h" +#include "angband.h" #include "util.h" #include "player-class.h" @@ -14,6 +13,7 @@ #include "player-race.h" #include "player-damage.h" #include "targeting.h" +#include "realm/realm-daemon.h" /*! * @brief 悪魔領域魔法の各処理を行う diff --git a/src/realm/realm-daemon.h b/src/realm/realm-daemon.h index 850b53dc4..209f6c8fe 100644 --- a/src/realm/realm-daemon.h +++ b/src/realm/realm-daemon.h @@ -1,4 +1,6 @@ #pragma once +#include "spell/spells-util.h" + concptr do_daemon_spell(player_type *caster_ptr, SPELL_IDX spell, spell_type mode); diff --git a/src/realm/realm-death.c b/src/realm/realm-death.c index 362f5e481..04f311d67 100644 --- a/src/realm/realm-death.c +++ b/src/realm/realm-death.c @@ -12,6 +12,7 @@ #include "player-class.h" #include "player-damage.h" #include "player-race.h" +#include "realm/realm-death.h" /*! * @brief 暗黒領域魔法の各処理を行う diff --git a/src/realm/realm-death.h b/src/realm/realm-death.h index d5fafff89..c31cda795 100644 --- a/src/realm/realm-death.h +++ b/src/realm/realm-death.h @@ -1,3 +1,5 @@ #pragma once +#include "spell/spells-util.h" + concptr do_death_spell(player_type *caster_ptr, SPELL_IDX spell, spell_type mode); diff --git a/src/realm/realm-hex.c b/src/realm/realm-hex.c index a82fe32de..4b9532bce 100644 --- a/src/realm/realm-hex.c +++ b/src/realm/realm-hex.c @@ -37,6 +37,8 @@ #include "realm/realm-song.h" #include "view/display-main-window.h" #include "world.h" +#include "realm/realm-hex.h" +#include "spell/spells-execution.h" #define MAX_KEEP 4 /*!<呪術の最大詠唱数 */ diff --git a/src/realm/realm-hex.h b/src/realm/realm-hex.h index f764c3bf8..92c9e999e 100644 --- a/src/realm/realm-hex.h +++ b/src/realm/realm-hex.h @@ -1,8 +1,6 @@ #pragma once -/*! - * @file realm/realm-hex.h - */ +#include "spell/spells-util.h" #define hex_spelling_any(CREATURE_PTR) \ (((CREATURE_PTR)->realm1 == REALM_HEX) && ((CREATURE_PTR)->magic_num1[0])) diff --git a/src/realm/realm-hissatsu.c b/src/realm/realm-hissatsu.c index b32c9b71b..e4e33680d 100644 --- a/src/realm/realm-hissatsu.c +++ b/src/realm/realm-hissatsu.c @@ -22,6 +22,7 @@ #include "spells-floor.h" #include "world.h" #include "effect/spells-effect-util.h" +#include "spell/spells-util.h" /*! * @brief 剣術の各処理を行う diff --git a/src/realm/realm-hissatsu.h b/src/realm/realm-hissatsu.h index 7c3f82f48..64c63b7e7 100644 --- a/src/realm/realm-hissatsu.h +++ b/src/realm/realm-hissatsu.h @@ -1,3 +1,5 @@ #pragma once +#include "spell/spells-util.h" + concptr do_hissatsu_spell(player_type *caster_ptr, SPELL_IDX spell, spell_type mode); diff --git a/src/realm/realm-life.c b/src/realm/realm-life.c index 6ac0c6971..2af7072b2 100644 --- a/src/realm/realm-life.c +++ b/src/realm/realm-life.c @@ -7,6 +7,7 @@ #include "player-effects.h" #include "floor.h" #include "targeting.h" +#include "realm/realm-life.h" /*! * @brief 生命領域魔法の各処理を行う diff --git a/src/realm/realm-life.h b/src/realm/realm-life.h index 664e600b6..ba4ceca9d 100644 --- a/src/realm/realm-life.h +++ b/src/realm/realm-life.h @@ -1,3 +1,5 @@ #pragma once +#include "spell/spells-util.h" + concptr do_life_spell(player_type *caster_ptr, SPELL_IDX spell, spell_type mode); diff --git a/src/realm/realm-nature.c b/src/realm/realm-nature.c index 1cf2fb02b..52e310056 100644 --- a/src/realm/realm-nature.c +++ b/src/realm/realm-nature.c @@ -13,6 +13,7 @@ #include "player-damage.h" #include "targeting.h" #include "effect/spells-effect-util.h" +#include "realm/realm-nature.h" /*! * @brief 自然領域魔法の各処理を行う diff --git a/src/realm/realm-nature.h b/src/realm/realm-nature.h index 91ee79398..d91adccab 100644 --- a/src/realm/realm-nature.h +++ b/src/realm/realm-nature.h @@ -1,3 +1,5 @@ #pragma once +#include "spell/spells-util.h" + concptr do_nature_spell(player_type *caster_ptr, SPELL_IDX spell, spell_type mode); diff --git a/src/realm/realm-song.c b/src/realm/realm-song.c index 7deef0acd..4e8032b45 100644 --- a/src/realm/realm-song.c +++ b/src/realm/realm-song.c @@ -1,8 +1,6 @@ #include "angband.h" #include "util.h" -#include "realm/realm-song.h" - #include "cmd-spell.h" #include "spells.h" #include "spells-status.h" @@ -11,6 +9,7 @@ #include "player-effects.h" #include "targeting.h" #include "view/display-main-window.h" +#include "realm/realm-song.h" /*! * @brief 歌の開始を処理する / Start singing if the player is a Bard diff --git a/src/realm/realm-song.h b/src/realm/realm-song.h index 1affe70b9..163140b48 100644 --- a/src/realm/realm-song.h +++ b/src/realm/realm-song.h @@ -30,4 +30,6 @@ #define MUSIC_DETECT 101 -extern concptr do_music_spell(player_type *caster_ptr, SPELL_IDX spell, spell_type mode); +#include "spell/spells-util.h" + +concptr do_music_spell(player_type *caster_ptr, SPELL_IDX spell, spell_type mode); diff --git a/src/realm/realm-sorcery.c b/src/realm/realm-sorcery.c index ade2831e3..fe5d146f5 100644 --- a/src/realm/realm-sorcery.c +++ b/src/realm/realm-sorcery.c @@ -10,6 +10,7 @@ #include "spells-floor.h" #include "player-effects.h" #include "targeting.h" +#include "realm/realm-sorcery.h" /*! * @brief 仙術領域魔法の各処理を行う diff --git a/src/realm/realm-sorcery.h b/src/realm/realm-sorcery.h index 075e3490a..031eb8cf4 100644 --- a/src/realm/realm-sorcery.h +++ b/src/realm/realm-sorcery.h @@ -1,3 +1,5 @@ #pragma once +#include "spell/spells-util.h" + concptr do_sorcery_spell(player_type *caster_ptr, SPELL_IDX spell, spell_type mode); diff --git a/src/realm/realm-trump.c b/src/realm/realm-trump.c index 90bd8c4ad..10867d934 100644 --- a/src/realm/realm-trump.c +++ b/src/realm/realm-trump.c @@ -10,6 +10,7 @@ #include "player-class.h" #include "targeting.h" #include "effect/spells-effect-util.h" +#include "realm/realm-trump.h" /*! * @brief トランプ領域魔法の各処理を行う diff --git a/src/realm/realm-trump.h b/src/realm/realm-trump.h index 812caaadf..492ad33fb 100644 --- a/src/realm/realm-trump.h +++ b/src/realm/realm-trump.h @@ -1,3 +1,5 @@ #pragma once +#include "spell/spells-util.h" + concptr do_trump_spell(player_type *caster_ptr, SPELL_IDX spell, spell_type mode); diff --git a/src/spell/spells-execution.c b/src/spell/spells-execution.c new file mode 100644 index 000000000..11c987dde --- /dev/null +++ b/src/spell/spells-execution.c @@ -0,0 +1,46 @@ +#include "angband.h" +#include "spell/spells-util.h" +#include "spell/spells-execution.h" +#include "realm/realm.h" +#include "realm/realm-arcane.h" +#include "realm/realm-chaos.h" +#include "realm/realm-craft.h" +#include "realm/realm-crusade.h" +#include "realm/realm-daemon.h" +#include "realm/realm-death.h" +#include "realm/realm-hex.h" +#include "realm/realm-hissatsu.h" +#include "realm/realm-life.h" +#include "realm/realm-nature.h" +#include "realm/realm-song.h" +#include "realm/realm-sorcery.h" +#include "realm/realm-trump.h" + +/*! + * @brief 魔法処理のメインルーチン + * @param realm 魔法領域のID + * @param spell 各領域の魔法ID + * @param mode 求める処理 + * @return 各領域魔法に各種テキストを求めた場合は文字列参照ポインタ、そうでない場合はNULLポインタを返す。 + */ +concptr exe_spell(player_type *caster_ptr, REALM_IDX realm, SPELL_IDX spell, spell_type mode) +{ + switch (realm) + { + case REALM_LIFE: return do_life_spell(caster_ptr, spell, mode); + case REALM_SORCERY: return do_sorcery_spell(caster_ptr, spell, mode); + case REALM_NATURE: return do_nature_spell(caster_ptr, spell, mode); + case REALM_CHAOS: return do_chaos_spell(caster_ptr, spell, mode); + case REALM_DEATH: return do_death_spell(caster_ptr, spell, mode); + case REALM_TRUMP: return do_trump_spell(caster_ptr, spell, mode); + case REALM_ARCANE: return do_arcane_spell(caster_ptr, spell, mode); + case REALM_CRAFT: return do_craft_spell(caster_ptr, spell, mode); + case REALM_DAEMON: return do_daemon_spell(caster_ptr, spell, mode); + case REALM_CRUSADE: return do_crusade_spell(caster_ptr, spell, mode); + case REALM_MUSIC: return do_music_spell(caster_ptr, spell, mode); + case REALM_HISSATSU: return do_hissatsu_spell(caster_ptr, spell, mode); + case REALM_HEX: return do_hex_spell(caster_ptr, spell, mode); + } + + return NULL; +} diff --git a/src/spell/spells-execution.h b/src/spell/spells-execution.h new file mode 100644 index 000000000..a491d323d --- /dev/null +++ b/src/spell/spells-execution.h @@ -0,0 +1,3 @@ +#pragma once + +concptr exe_spell(player_type *caster_ptr, REALM_IDX realm, SPELL_IDX spell, spell_type mode); diff --git a/src/spell/spells-util.h b/src/spell/spells-util.h new file mode 100644 index 000000000..80b409f16 --- /dev/null +++ b/src/spell/spells-util.h @@ -0,0 +1,12 @@ +#pragma once + +typedef enum +{ + SPELL_NAME = 0, + SPELL_DESC = 1, + SPELL_INFO = 2, + SPELL_CAST = 3, + SPELL_FAIL = 4, + SPELL_STOP = 5, + SPELL_CONT = 6 +} spell_type; diff --git a/src/spells.h b/src/spells.h index 7c56af2c2..9fc9b1c0d 100644 --- a/src/spells.h +++ b/src/spells.h @@ -1,19 +1,6 @@ #pragma once #include "realm/realm.h" -typedef enum -{ - SPELL_NAME = 0, - SPELL_DESC = 1, - SPELL_INFO = 2, - SPELL_CAST = 3, - SPELL_FAIL = 4, - SPELL_STOP = 5, - SPELL_CONT = 6 -} spell_type; - -concptr exe_spell(player_type *caster_ptr, REALM_IDX realm, SPELL_IDX spell, spell_type mode); - #define DETECT_RAD_DEFAULT 30 #define DETECT_RAD_MAP 30 #define DETECT_RAD_ALL 255 diff --git a/src/spells1.c b/src/spells1.c index 9fa20ecc3..8b05e3382 100644 --- a/src/spells1.c +++ b/src/spells1.c @@ -49,54 +49,10 @@ #include "feature.h" #include "view/display-main-window.h" -#include "realm/realm.h" -#include "realm/realm-arcane.h" -#include "realm/realm-chaos.h" -#include "realm/realm-craft.h" -#include "realm/realm-crusade.h" -#include "realm/realm-daemon.h" -#include "realm/realm-death.h" -#include "realm/realm-hex.h" -#include "realm/realm-hissatsu.h" -#include "realm/realm-life.h" -#include "realm/realm-nature.h" -#include "realm/realm-song.h" -#include "realm/realm-sorcery.h" -#include "realm/realm-trump.h" - #include "effect/effect-feature.h" #include "effect/effect-item.h" #include "effect/spells-effect-util.h" - -/*! - * @brief 魔法処理のメインルーチン - * @param realm 魔法領域のID - * @param spell 各領域の魔法ID - * @param mode 求める処理 - * @return 各領域魔法に各種テキストを求めた場合は文字列参照ポインタ、そうでない場合はNULLポインタを返す。 - */ -concptr exe_spell(player_type *caster_ptr, REALM_IDX realm, SPELL_IDX spell, spell_type mode) -{ - switch (realm) - { - case REALM_LIFE: return do_life_spell(caster_ptr, spell, mode); - case REALM_SORCERY: return do_sorcery_spell(caster_ptr, spell, mode); - case REALM_NATURE: return do_nature_spell(caster_ptr, spell, mode); - case REALM_CHAOS: return do_chaos_spell(caster_ptr, spell, mode); - case REALM_DEATH: return do_death_spell(caster_ptr, spell, mode); - case REALM_TRUMP: return do_trump_spell(caster_ptr, spell, mode); - case REALM_ARCANE: return do_arcane_spell(caster_ptr, spell, mode); - case REALM_CRAFT: return do_craft_spell(caster_ptr, spell, mode); - case REALM_DAEMON: return do_daemon_spell(caster_ptr, spell, mode); - case REALM_CRUSADE: return do_crusade_spell(caster_ptr, spell, mode); - case REALM_MUSIC: return do_music_spell(caster_ptr, spell, mode); - case REALM_HISSATSU: return do_hissatsu_spell(caster_ptr, spell, mode); - case REALM_HEX: return do_hex_spell(caster_ptr, spell, mode); - } - - return NULL; -} - +#include "realm/realm-hex.h" /*! * @brief 配置した鏡リストの次を取得する / diff --git a/src/spells3.c b/src/spells3.c index 42b36cd69..c787d6345 100644 --- a/src/spells3.c +++ b/src/spells3.c @@ -63,6 +63,8 @@ #include "autopick/autopick.h" #include "targeting.h" #include "effect/spells-effect-util.h" +#include "spell/spells-util.h" +#include "spell/spells-execution.h" /*! テレポート先探索の試行数 / Maximum number of tries for teleporting */ #define MAX_TRIES 100 -- 2.11.0