OSDN Git Service

Merge pull request #3569 from sikabane-works/release/3.0.0.88-alpha
[hengbandforosx/hengbandosx.git] / src / mspell / mspell-util.h
1 #pragma once
2
3 #include "system/angband.h"
4
5 /* Spell Type flag */
6 #define MONSTER_TO_PLAYER 0x01
7 #define MONSTER_TO_MONSTER 0x02
8
9 /* monster spell number */
10 #define RF4_SPELL_START 32 * 3
11 #define RF5_SPELL_START 32 * 4
12 #define RF6_SPELL_START 32 * 5
13
14 class FloorType;
15 class PlayerType;
16
17 struct mspell_cast_msg {
18     template <typename T, typename U, typename V, typename W>
19     mspell_cast_msg(T &&to_player_true, U &&to_mons_true, V &&to_player_false, W &&to_mons_false)
20         : to_player_true(std::forward<T>(to_player_true))
21         , to_mons_true(std::forward<U>(to_mons_true))
22         , to_player_false(std::forward<V>(to_player_false))
23         , to_mons_false(std::forward<W>(to_mons_false))
24     {
25     }
26     mspell_cast_msg() = default;
27     std::string to_player_true; /*!< msg_flagがTRUEかつプレイヤー対象*/
28     std::string to_mons_true; /*!< msg_flagがTRUEかつモンスター対象*/
29     std::string to_player_false; /*!< msg_flagがFALSEかつプレイヤー対象*/
30     std::string to_mons_false; /*!< msg_flagがFALSEかつモンスター対象*/
31 };
32
33 struct mspell_cast_msg_blind {
34     mspell_cast_msg_blind(concptr blind, concptr to_player, concptr to_mons);
35     mspell_cast_msg_blind() = default;
36     concptr blind; /*!< 盲目時*/
37     concptr to_player; /*!< 対プレイヤーかつ非盲目時*/
38     concptr to_mons; /*!< 対モンスター*/
39 };
40
41 struct mspell_cast_msg_simple {
42     mspell_cast_msg_simple(concptr to_player, concptr to_mons);
43     mspell_cast_msg_simple() = default;
44     concptr to_player; /*!< プレイヤー対象*/
45     concptr to_mons; /*!< モンスター対象*/
46 };
47
48 bool see_monster(PlayerType *player_ptr, MONSTER_IDX m_idx);
49 bool monster_near_player(FloorType *floor_ptr, MONSTER_IDX m_idx, MONSTER_IDX t_idx);
50 bool monspell_message_base(PlayerType *player_ptr, MONSTER_IDX m_idx, MONSTER_IDX t_idx, const mspell_cast_msg &msgs, bool msg_flag_aux, int target_type);
51 bool monspell_message(PlayerType *player_ptr, MONSTER_IDX m_idx, MONSTER_IDX t_idx, const mspell_cast_msg_blind &msgs, int target_type);
52 void simple_monspell_message(PlayerType *player_ptr, MONSTER_IDX m_idx, MONSTER_IDX t_idx, const mspell_cast_msg_simple &msgs, int target_type);