2 * @file main-win-sound.cpp
3 * @brief Windows版固有実装(効果音)
6 #include "main-win/main-win-sound.h"
7 #include "main-win/main-win-cfg-reader.h"
8 #include "main-win/main-win-define.h"
9 #include "main-win/main-win-file-utils.h"
10 #include "main-win/main-win-mmsystem.h"
11 #include "main-win/main-win-utils.h"
12 #include "util/angband-files.h"
14 #include "main/sound-definitions-table.h"
19 concptr ANGBAND_DIR_XTRA_SOUND;
24 CfgData *sound_cfg_data;
27 * @brief action-valに対応する[Sound]セクションのキー名を取得する
28 * @param index "term_xtra()"の第2引数action-valに対応する値
32 static concptr sound_key_at(int index, char *buf)
36 if (index >= SOUND_MAX)
39 return angband_sound_name[index];
45 * "sound_debug.cfg"ファイルを優先して読み込む。無ければ"sound.cfg"ファイルを読み込む。
46 * この処理は複数回実行されることを想定していない。複数回実行した場合には前回読み込まれた設定のメモリは解放されない。
48 void load_sound_prefs(void)
50 CfgReader reader(ANGBAND_DIR_XTRA_SOUND, { "sound_debug.cfg", "sound.cfg" });
51 sound_cfg_data = reader.read_sections({ { "Sound", TERM_XTRA_SOUND, sound_key_at } });
56 * @param val see sound_type
59 * @retval -1 PlaySoundの戻り値が正常終了以外
61 errr play_sound(int val)
63 concptr filename = sound_cfg_data->get_rand(TERM_XTRA_SOUND, val);
68 char buf[MAIN_WIN_MAX_PATH];
69 path_build(buf, MAIN_WIN_MAX_PATH, ANGBAND_DIR_XTRA_SOUND, filename);
71 if (::PlaySoundW(to_wchar(buf).wc_str(), 0, SND_FILENAME | SND_ASYNC)) {