OSDN Git Service

[Refactor] #3230 PlayerType::update に関わる処理を、RedrawingFlagsUpdaterに集約した
[hengbandforosx/hengbandosx.git] / src / spell / spells-execution.cpp
1 #include "spell/spells-execution.h"
2 #include "realm/realm-arcane.h"
3 #include "realm/realm-chaos.h"
4 #include "realm/realm-craft.h"
5 #include "realm/realm-crusade.h"
6 #include "realm/realm-death.h"
7 #include "realm/realm-demon.h"
8 #include "realm/realm-hex.h"
9 #include "realm/realm-hissatsu.h"
10 #include "realm/realm-life.h"
11 #include "realm/realm-names-table.h"
12 #include "realm/realm-nature.h"
13 #include "realm/realm-song.h"
14 #include "realm/realm-sorcery.h"
15 #include "realm/realm-trump.h"
16 #include "system/player-type-definition.h"
17
18 /*!
19  * @brief 魔法処理のメインルーチン
20  * @param realm 魔法領域のID
21  * @param spell 各領域の魔法ID
22  * @param mode 求める処理
23  * @return 各領域魔法に各種テキストを求めた場合は文字列参照ポインタ、そうでない場合はnullptrを返す。
24  */
25 std::optional<std::string> exe_spell(PlayerType *player_ptr, int16_t realm, SPELL_IDX spell, SpellProcessType mode)
26 {
27     switch (realm) {
28     case REALM_LIFE:
29         return do_life_spell(player_ptr, spell, mode);
30     case REALM_SORCERY:
31         return do_sorcery_spell(player_ptr, spell, mode);
32     case REALM_NATURE:
33         return do_nature_spell(player_ptr, spell, mode);
34     case REALM_CHAOS:
35         return do_chaos_spell(player_ptr, spell, mode);
36     case REALM_DEATH:
37         return do_death_spell(player_ptr, spell, mode);
38     case REALM_TRUMP:
39         return do_trump_spell(player_ptr, spell, mode);
40     case REALM_ARCANE:
41         return do_arcane_spell(player_ptr, spell, mode);
42     case REALM_CRAFT:
43         return do_craft_spell(player_ptr, spell, mode);
44     case REALM_DAEMON:
45         return do_daemon_spell(player_ptr, spell, mode);
46     case REALM_CRUSADE:
47         return do_crusade_spell(player_ptr, spell, mode);
48     case REALM_MUSIC:
49         return do_music_spell(player_ptr, spell, mode);
50     case REALM_HISSATSU:
51         return do_hissatsu_spell(player_ptr, spell, mode);
52     case REALM_HEX:
53         return do_hex_spell(player_ptr, i2enum<spell_hex_type>(spell), mode);
54     }
55
56     return std::nullopt;
57 }