World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
AudioPlayer.h
См. документацию.
1 #pragma once
2 
3 #include <fstream>
4 #include <map>
5 #include <string>
6 
7 #include "Engine/Strings.h"
8 #include "Media/Media.h"
9 
10 enum SoundID {
21  SOUND_48 = 0x30,
58  SOUND_damage = 0x7A,
59  SOUND_deal = 0x7B,
60  SOUND_defeat = 0x7C,
63  SOUND_shuffle = 0x7F,
64  SOUND_title = 0x80,
66  SOUND_typing = 0x82,
67  SOUND_victory = 0x83,
68  SOUND_wall_up = 0x84,
72  SOUND_gold01 = 200,
73  SOUND_heal = 202,
74  SOUND_fizzle = 203,
80  SOUND_drink = 0xD2,
81  SOUND_eat = 211,
82  SOUND_gong = 0xD7,
83  SOUND_hurp = 0xD9,
84  SOUND_church = 218,
85  SOUND_chimes = 0xDB,
86  SOUND_splash = 220,
87  SOUND_star1 = 0xDD,
88  SOUND_star2 = 0xDE,
89  SOUND_star4 = 0xE0,
95  SOUND_hf445a = 5788,
96  SOUND_Haste = 10040,
97  SOUND_21fly03 = 11090,
98  SOUND_WaterWalk = 12040,
99  SOUND_Stoneskin = 13040,
100  SOUND_Bless = 14010,
101  SOUND_Fate = 14020,
106  SOUND_quest = 20001,
107 };
108 
110 
111 class AudioPlayer {
112  protected:
113  typedef struct SoundHeader {
114  size_t uFileOffset;
117  } SoundHeader;
118 
119  public:
121  virtual ~AudioPlayer() {}
122 
123  void Initialize();
124 
125  void SetMasterVolume(int level);
126 
127  void MusicPlayTrack(enum MusicID eTrack);
128  void MusicStart();
129  void MusicStop();
130  void MusicPause();
131  void MusicResume();
132  void SetMusicVolume(int music_level);
133  float MusicGetVolume();
134 
135  void StopAll(int sample_id);
136  void PlaySound(SoundID eSoundID, int pid, unsigned int uNumRepeats, int x, int y, int a7);
137  void UpdateSounds();
138  void StopChannels(int uStartChannel, int uEndChannel);
139  void LoadAudioSnd();
140  void MessWithChannels();
141  bool FindSound(const std::string &pName, struct AudioPlayer::SoundHeader *header);
142  PMemBuffer LoadSound(const std::string &pSoundName);
143  PMemBuffer LoadSound(int uSoundID);
144  void PlaySpellSound(unsigned int spell, unsigned int pid);
145 
146  protected:
151  std::ifstream fAudioSnd;
152  std::map<String, SoundHeader> mSoundHeaders;
153 };
154 
155 struct SoundDesc;
156 
157 class SoundList {
158  public:
159  inline SoundList() {}
160 
161  void Initialize();
162  void FromFile(void *data_mm6, void *data_mm7, void *data_mm8);
163 };
164 
165 struct SoundData;
166 
167 extern int sLastTrackLengthMS;
168 extern AudioPlayer *pAudioPlayer;
169 extern SoundList *pSoundList;
170 
171 extern std::array<float, 10> pSoundVolumeLevels;
172 
173 void PlayLevelMusic();
SOUND_RunCooledLava
@ SOUND_RunCooledLava
Definition: AudioPlayer.h:24
AudioPlayer::FindSound
bool FindSound(const std::string &pName, struct AudioPlayer::SoundHeader *header)
Definition: AudioPlayer.cpp:385
SOUND_ClickPlus
@ SOUND_ClickPlus
Definition: AudioPlayer.h:17
SOUND_WalkDirt
@ SOUND_WalkDirt
Definition: AudioPlayer.h:48
SOUND_spellfail0201
@ SOUND_spellfail0201
Definition: AudioPlayer.h:79
SOUND_fizzle
@ SOUND_fizzle
Definition: AudioPlayer.h:74
SOUND_RunSwamp
@ SOUND_RunSwamp
Definition: AudioPlayer.h:30
AudioPlayer::SetMasterVolume
void SetMasterVolume(int level)
Definition: AudioPlayer.cpp:183
SOUND_fireBall
@ SOUND_fireBall
Definition: AudioPlayer.h:14
AudioPlayer::SetMusicVolume
void SetMusicVolume(int music_level)
Definition: AudioPlayer.cpp:165
SOUND_TurnPageU
@ SOUND_TurnPageU
Definition: AudioPlayer.h:75
AudioPlayer::currentMusicTrack
int currentMusicTrack
Definition: AudioPlayer.h:148
SOUND_RunWater
@ SOUND_RunWater
Definition: AudioPlayer.h:31
SOUND_closebook
@ SOUND_closebook
Definition: AudioPlayer.h:94
SOUND_gold01
@ SOUND_gold01
Definition: AudioPlayer.h:72
SOUND_typing
@ SOUND_typing
Definition: AudioPlayer.h:66
SOUND_trumpet
@ SOUND_trumpet
Definition: AudioPlayer.h:71
SOUND_WalkRoad
@ SOUND_WalkRoad
Definition: AudioPlayer.h:50
AudioPlayer::uMasterVolume
float uMasterVolume
Definition: AudioPlayer.h:149
AudioPlayer::SoundHeader::uDecompressedSize
size_t uDecompressedSize
Definition: AudioPlayer.h:116
SOUND_batllest
@ SOUND_batllest
Definition: AudioPlayer.h:77
level
GLint level
Definition: SDL_opengl.h:1572
SOUND_shoot_blaster01
@ SOUND_shoot_blaster01
Definition: AudioPlayer.h:35
AudioPlayer::PlaySound
void PlaySound(SoundID eSoundID, int pid, unsigned int uNumRepeats, int x, int y, int a7)
Definition: AudioPlayer.cpp:195
SOUND_swing_with_axe03
@ SOUND_swing_with_axe03
Definition: AudioPlayer.h:39
AudioPlayer::MusicResume
void MusicResume()
Definition: AudioPlayer.cpp:157
SOUND_shoot_bow01
@ SOUND_shoot_bow01
Definition: AudioPlayer.h:36
SOUND_error
@ SOUND_error
Definition: AudioPlayer.h:19
SOUND_drink
@ SOUND_drink
Definition: AudioPlayer.h:80
SOUND_RunGrass
@ SOUND_RunGrass
Definition: AudioPlayer.h:27
AudioPlayer::SoundHeader::uFileOffset
size_t uFileOffset
Definition: AudioPlayer.h:114
AudioPlayer::MusicPlayTrack
void MusicPlayTrack(enum MusicID eTrack)
Definition: AudioPlayer.cpp:109
SOUND_shuffle
@ SOUND_shuffle
Definition: AudioPlayer.h:63
SOUND_WalkSnow
@ SOUND_WalkSnow
Definition: AudioPlayer.h:51
AudioPlayer::MusicStart
void MusicStart()
Definition: AudioPlayer.cpp:138
SOUND_encounter
@ SOUND_encounter
Definition: AudioPlayer.h:92
SOUND_panflute
@ SOUND_panflute
Definition: AudioPlayer.h:70
SOUND_chimes
@ SOUND_chimes
Definition: AudioPlayer.h:85
SOUND_luteguitar
@ SOUND_luteguitar
Definition: AudioPlayer.h:69
SOUND_Bless
@ SOUND_Bless
Definition: AudioPlayer.h:100
AudioPlayer::MusicGetVolume
float MusicGetVolume()
Definition: AudioPlayer.cpp:175
AudioPlayer::Initialize
void Initialize()
Definition: AudioPlayer.cpp:364
SOUND_WoodDoorClosing
@ SOUND_WoodDoorClosing
Definition: AudioPlayer.h:13
SOUND_RunWaterIndoor
@ SOUND_RunWaterIndoor
Definition: AudioPlayer.h:32
SOUND_swing_with_sword02
@ SOUND_swing_with_sword02
Definition: AudioPlayer.h:43
SOUND_wall_up
@ SOUND_wall_up
Definition: AudioPlayer.h:68
pSoundVolumeLevels
std::array< float, 10 > pSoundVolumeLevels
Definition: AudioPlayer.cpp:23
SOUND_WalkWaterIndoor
@ SOUND_WalkWaterIndoor
Definition: AudioPlayer.h:54
AudioPlayer::StopAll
void StopAll(int sample_id)
Definition: AudioPlayer.cpp:189
AudioPlayer::SoundHeader::uCompressedSize
size_t uCompressedSize
Definition: AudioPlayer.h:115
AudioPlayer::LoadSound
PMemBuffer LoadSound(const std::string &pSoundName)
Definition: AudioPlayer.cpp:438
SOUND_gong
@ SOUND_gong
Definition: AudioPlayer.h:82
SOUND_21fly03
@ SOUND_21fly03
Definition: AudioPlayer.h:97
sLastTrackLengthMS
int sLastTrackLengthMS
Definition: AudioPlayer.cpp:19
AudioPlayer::MusicStop
void MusicStop()
Definition: AudioPlayer.cpp:140
SOUND_deal
@ SOUND_deal
Definition: AudioPlayer.h:59
SOUND_WaterWalk
@ SOUND_WaterWalk
Definition: AudioPlayer.h:98
SoundList::Initialize
void Initialize()
Definition: AudioPlayer.cpp:72
y
EGLSurface EGLint EGLint y
Definition: SDL_egl.h:1596
SOUND_RunDirt
@ SOUND_RunDirt
Definition: AudioPlayer.h:26
SOUND_hf445a
@ SOUND_hf445a
Definition: AudioPlayer.h:95
SOUND_tower_up
@ SOUND_tower_up
Definition: AudioPlayer.h:65
SOUND_swing_with_sword01
@ SOUND_swing_with_sword01
Definition: AudioPlayer.h:42
SOUND_ClickMovingSelector
@ SOUND_ClickMovingSelector
Definition: AudioPlayer.h:16
SOUND_swing_with_blunt_weapon01
@ SOUND_swing_with_blunt_weapon01
Definition: AudioPlayer.h:40
SOUND_damage
@ SOUND_damage
Definition: AudioPlayer.h:58
AudioPlayer::UpdateSounds
void UpdateSounds()
Definition: AudioPlayer.cpp:322
x
EGLSurface EGLint x
Definition: SDL_egl.h:1596
PAudioTrack
std::shared_ptr< IAudioTrack > PAudioTrack
Definition: Media.h:40
AudioPlayer::PlaySpellSound
void PlaySpellSound(unsigned int spell, unsigned int pid)
Definition: AudioPlayer.cpp:476
SOUND_ClickSkill
@ SOUND_ClickSkill
Definition: AudioPlayer.h:18
SOUND_metal_vs_metal03h
@ SOUND_metal_vs_metal03h
Definition: AudioPlayer.h:20
SOUND_WalkCooledLava
@ SOUND_WalkCooledLava
Definition: AudioPlayer.h:46
MUSIC_MainMenu
@ MUSIC_MainMenu
Definition: AudioPlayer.h:109
SOUND_WalkBadlands
@ SOUND_WalkBadlands
Definition: AudioPlayer.h:44
SOUND_RunSnow
@ SOUND_RunSnow
Definition: AudioPlayer.h:29
SOUND_quest
@ SOUND_quest
Definition: AudioPlayer.h:106
SOUND_SelectingANewCharacter
@ SOUND_SelectingANewCharacter
Definition: AudioPlayer.h:34
AudioPlayer::bPlayerReady
bool bPlayerReady
Definition: AudioPlayer.h:147
SoundList::SoundList
SoundList()
Definition: AudioPlayer.h:159
SoundList
Definition: AudioPlayer.h:157
SOUND_victory
@ SOUND_victory
Definition: AudioPlayer.h:67
SOUND_9armageddon01
@ SOUND_9armageddon01
Definition: AudioPlayer.h:104
AudioPlayer::StopChannels
void StopChannels(int uStartChannel, int uEndChannel)
Definition: AudioPlayer.cpp:331
SOUND_eleccircle
@ SOUND_eleccircle
Definition: AudioPlayer.h:91
AudioPlayer::SoundHeader
struct AudioPlayer::SoundHeader SoundHeader
SOUND_star2
@ SOUND_star2
Definition: AudioPlayer.h:88
Media.h
MUSIC_Credits
@ MUSIC_Credits
Definition: AudioPlayer.h:109
SOUND_eradicate
@ SOUND_eradicate
Definition: AudioPlayer.h:90
SOUND_bricks_up
@ SOUND_bricks_up
Definition: AudioPlayer.h:57
SOUND_swing_with_axe01
@ SOUND_swing_with_axe01
Definition: AudioPlayer.h:38
SOUND_Invalid
@ SOUND_Invalid
Definition: AudioPlayer.h:11
pSoundList
SoundList * pSoundList
Definition: AudioPlayer.cpp:21
SOUND_Fate
@ SOUND_Fate
Definition: AudioPlayer.h:101
SOUND_enter
@ SOUND_enter
Definition: AudioPlayer.h:12
SOUND_defeat
@ SOUND_defeat
Definition: AudioPlayer.h:60
SOUND_RunRoad
@ SOUND_RunRoad
Definition: AudioPlayer.h:28
SOUND_ClickMinus
@ SOUND_ClickMinus
Definition: AudioPlayer.h:15
SOUND_title
@ SOUND_title
Definition: AudioPlayer.h:64
SoundDesc
Definition: AudioPlayer.cpp:66
SOUND_WalkWater
@ SOUND_WalkWater
Definition: AudioPlayer.h:53
SOUND_RunBadlands
@ SOUND_RunBadlands
Definition: AudioPlayer.h:22
SOUND_querry_up
@ SOUND_querry_up
Definition: AudioPlayer.h:61
SOUND_RunCarpet
@ SOUND_RunCarpet
Definition: AudioPlayer.h:23
MusicID
MusicID
Definition: AudioPlayer.h:109
SOUND_WalkCarpet
@ SOUND_WalkCarpet
Definition: AudioPlayer.h:45
SOUND_bricks_down
@ SOUND_bricks_down
Definition: AudioPlayer.h:56
SOUND_Stoneskin
@ SOUND_Stoneskin
Definition: AudioPlayer.h:99
SOUND_WalkGrass
@ SOUND_WalkGrass
Definition: AudioPlayer.h:49
SOUND_eat
@ SOUND_eat
Definition: AudioPlayer.h:81
SOUND_RunWood
@ SOUND_RunWood
Definition: AudioPlayer.h:33
SOUND_openchest0101
@ SOUND_openchest0101
Definition: AudioPlayer.h:78
SOUND_94dayofprotection03
@ SOUND_94dayofprotection03
Definition: AudioPlayer.h:103
SOUND_heal
@ SOUND_heal
Definition: AudioPlayer.h:73
SOUND_hurp
@ SOUND_hurp
Definition: AudioPlayer.h:83
AudioPlayer::AudioPlayer
AudioPlayer()
Definition: AudioPlayer.h:120
SOUND_star4
@ SOUND_star4
Definition: AudioPlayer.h:89
AudioPlayer::pCurrentMusicTrack
PAudioTrack pCurrentMusicTrack
Definition: AudioPlayer.h:150
AudioPlayer
Definition: AudioPlayer.h:111
AudioPlayer::SoundHeader
Definition: AudioPlayer.h:113
SoundID
SoundID
Definition: AudioPlayer.h:10
SOUND_RunDesert
@ SOUND_RunDesert
Definition: AudioPlayer.h:25
AudioPlayer::MessWithChannels
void MessWithChannels()
Definition: AudioPlayer.cpp:320
SOUND_51heroism03
@ SOUND_51heroism03
Definition: AudioPlayer.h:102
AudioPlayer::LoadAudioSnd
void LoadAudioSnd()
Definition: AudioPlayer.cpp:342
SOUND_batlleen
@ SOUND_batlleen
Definition: AudioPlayer.h:76
pAudioPlayer
AudioPlayer * pAudioPlayer
Definition: AudioPlayer.cpp:20
SOUND_WalkSwamp
@ SOUND_WalkSwamp
Definition: AudioPlayer.h:52
SOUND_openbook
@ SOUND_openbook
Definition: AudioPlayer.h:93
AudioPlayer::~AudioPlayer
virtual ~AudioPlayer()
Definition: AudioPlayer.h:121
string
GLsizei const GLchar *const * string
Definition: SDL_opengl_glext.h:691
SOUND_StartMainChoice02
@ SOUND_StartMainChoice02
Definition: AudioPlayer.h:37
SOUND_WalkDesert
@ SOUND_WalkDesert
Definition: AudioPlayer.h:47
SOUND_swing_with_blunt_weapon03
@ SOUND_swing_with_blunt_weapon03
Definition: AudioPlayer.h:41
SOUND_church
@ SOUND_church
Definition: AudioPlayer.h:84
AudioPlayer::fAudioSnd
std::ifstream fAudioSnd
Definition: AudioPlayer.h:151
AudioPlayer::MusicPause
void MusicPause()
Definition: AudioPlayer.cpp:149
SOUND_Sacrifice2
@ SOUND_Sacrifice2
Definition: AudioPlayer.h:105
SOUND_WalkWood
@ SOUND_WalkWood
Definition: AudioPlayer.h:55
PMemBuffer
std::shared_ptr< IMemBuffer > PMemBuffer
Definition: MemBuffer.h:13
SOUND_querry_down
@ SOUND_querry_down
Definition: AudioPlayer.h:62
SOUND_48
@ SOUND_48
Definition: AudioPlayer.h:21
PlayLevelMusic
void PlayLevelMusic()
Definition: AudioPlayer.cpp:377
SOUND_star1
@ SOUND_star1
Definition: AudioPlayer.h:87
SOUND_Haste
@ SOUND_Haste
Definition: AudioPlayer.h:96
SoundList::FromFile
void FromFile(void *data_mm6, void *data_mm7, void *data_mm8)
Definition: AudioPlayer.cpp:74
AudioPlayer::mSoundHeaders
std::map< String, SoundHeader > mSoundHeaders
Definition: AudioPlayer.h:152
Strings.h
SOUND_splash
@ SOUND_splash
Definition: AudioPlayer.h:86