OSDN Git Service

[Refactor] #3230 PlayerType::update に関わる処理を、RedrawingFlagsUpdaterに集約した
[hengbandforosx/hengbandosx.git] / src / main / sound-of-music.cpp
1 /*!
2  * @file sound-of-music.cpp
3  * @brief BGM及び効果音のterm出力処理実装
4  */
5
6 #include "main/sound-of-music.h"
7 #include "game-option/disturbance-options.h"
8 #include "game-option/special-options.h"
9 #include "main/scene-table.h"
10 #include "system/player-type-definition.h"
11 #include "term/screen-processor.h"
12
13 // モンスターBGMの設定有無。設定なし時に関連処理をスキップする。
14 bool has_monster_music = false;
15
16 /*
17  * Flush the screen, make a noise
18  */
19 void bell(void)
20 {
21     term_fresh();
22     if (ring_bell) {
23         term_xtra(TERM_XTRA_NOISE, 0);
24     }
25
26     flush();
27 }
28
29 /*!
30  * @brief 音を鳴らす
31  * @todo intをsound_typeに差し替える
32  */
33 void sound(int val)
34 {
35     if (!use_sound) {
36         return;
37     }
38
39     term_xtra(TERM_XTRA_SOUND, val);
40 }
41
42 /*!
43  * @brief Hack -- Play a music
44  */
45 errr play_music(int type, int val)
46 {
47     if (!use_music) {
48         return 1;
49     }
50
51     interrupt_scene(type, val);
52     return term_xtra(type, val);
53 }
54
55 /*!
56  * @brief シチュエーションに合ったBGM選曲
57  * @param player_ptr プレイヤーへの参照ポインタ
58  * @details 設定がない場合はミュートする。
59  */
60 void select_floor_music(PlayerType *player_ptr)
61 {
62     if (!use_music) {
63         return;
64     }
65
66     refresh_scene_table(player_ptr);
67     term_xtra(TERM_XTRA_SCENE, 0);
68 }
69
70 /*!
71  * @brief モンスターBGM選曲
72  * @param player_ptr プレイヤーへの参照ポインタ
73  * @param monster_list モンスターリスト
74  */
75 void select_monster_music(PlayerType *player_ptr, const std::vector<MONSTER_IDX> &monster_list)
76 {
77     if (!use_music) {
78         return;
79     }
80
81     refresh_scene_table(player_ptr, monster_list);
82     term_xtra(TERM_XTRA_SCENE, 0);
83 }