World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Класс AudioPlayer

#include <AudioPlayer.h>

Классы

struct  SoundHeader
 

Открытые члены

 AudioPlayer ()
 
virtual ~AudioPlayer ()
 
void Initialize ()
 
void SetMasterVolume (int level)
 
void MusicPlayTrack (enum MusicID eTrack)
 
void MusicStart ()
 
void MusicStop ()
 
void MusicPause ()
 
void MusicResume ()
 
void SetMusicVolume (int music_level)
 
float MusicGetVolume ()
 
void StopAll (int sample_id)
 
void PlaySound (SoundID eSoundID, int pid, unsigned int uNumRepeats, int x, int y, int a7)
 
void UpdateSounds ()
 
void StopChannels (int uStartChannel, int uEndChannel)
 
void LoadAudioSnd ()
 
void MessWithChannels ()
 
bool FindSound (const std::string &pName, struct AudioPlayer::SoundHeader *header)
 
PMemBuffer LoadSound (const std::string &pSoundName)
 
PMemBuffer LoadSound (int uSoundID)
 
void PlaySpellSound (unsigned int spell, unsigned int pid)
 

Защищенные типы

typedef struct AudioPlayer::SoundHeader SoundHeader
 

Защищенные данные

bool bPlayerReady
 
int currentMusicTrack
 
float uMasterVolume
 
PAudioTrack pCurrentMusicTrack
 
std::ifstream fAudioSnd
 
std::map< String, SoundHeadermSoundHeaders
 

Подробное описание

См. определение в файле AudioPlayer.h строка 111

Определения типов

◆ SoundHeader

Конструктор(ы)

◆ AudioPlayer()

AudioPlayer::AudioPlayer ( )
inline

См. определение в файле AudioPlayer.h строка 120

120 : bPlayerReady(false), currentMusicTrack(0), uMasterVolume(0) {}

◆ ~AudioPlayer()

virtual AudioPlayer::~AudioPlayer ( )
inlinevirtual

См. определение в файле AudioPlayer.h строка 121

121 {}

Методы

◆ Initialize()

void AudioPlayer::Initialize ( )

См. определение в файле AudioPlayer.cpp строка 364

364  {
365  currentMusicTrack = 0;
366  uMasterVolume = 127;
367 
368  pAudioPlayer->SetMasterVolume(engine->config->sound_level);
369  if (bPlayerReady) {
370  SetMusicVolume(engine->config->music_level);
371  }
372  LoadAudioSnd();
373 
374  bPlayerReady = true;
375 }

Перекрестные ссылки bPlayerReady, currentMusicTrack, engine, LoadAudioSnd(), pAudioPlayer, SetMasterVolume(), SetMusicVolume() и uMasterVolume.

Используется в Engine::MM7_Initialize().

+ Граф вызовов:
+ Граф вызова функции:

◆ SetMasterVolume()

void AudioPlayer::SetMasterVolume ( int  level)

См. определение в файле AudioPlayer.cpp строка 183

183  {
184  level = std::max(0, level);
185  level = std::min(9, level);
187 }

Перекрестные ссылки pSoundVolumeLevels и uMasterVolume.

Используется в Application::Menu::EventLoop(), Initialize() и LoadGame().

+ Граф вызова функции:

◆ MusicPlayTrack()

void AudioPlayer::MusicPlayTrack ( enum MusicID  eTrack)

См. определение в файле AudioPlayer.cpp строка 109

109  {
110  if (currentMusicTrack == eTrack) {
111  return;
112  }
113 
114  if (!engine->config->NoSound() && bPlayerReady && engine->config->music_level > 0) {
115  if (pCurrentMusicTrack) {
116  pCurrentMusicTrack->Stop();
117  }
118  currentMusicTrack = -1;
119 
120  String file_path = StringPrintf("Music\\%d.mp3", eTrack);
121  file_path = MakeDataPath(file_path.c_str());
122 
123  if (!FileExists(file_path.c_str())) {
124  logger->Warning(L"Music\\%d.mp3 not found", eTrack);
125  return;
126  }
127 
129  if (pCurrentMusicTrack) {
130  currentMusicTrack = eTrack;
131  pCurrentMusicTrack->SetVolume(
132  pSoundVolumeLevels[engine->config->music_level]);
133  pCurrentMusicTrack->Play();
134  }
135  }
136 }

Перекрестные ссылки bPlayerReady, CreateAudioTrack(), currentMusicTrack, engine, FileExists(), logger, MakeDataPath(), pCurrentMusicTrack, pSoundVolumeLevels, StringPrintf() и Log::Warning().

Используется в GUICredits::ExecuteCredits(), GUIWindow_MainMenu::Loop() и PlayLevelMusic().

+ Граф вызовов:
+ Граф вызова функции:

◆ MusicStart()

void AudioPlayer::MusicStart ( )

См. определение в файле AudioPlayer.cpp строка 138

138 {}

◆ MusicStop()

void AudioPlayer::MusicStop ( )

См. определение в файле AudioPlayer.cpp строка 140

140  {
141  if (!pCurrentMusicTrack) {
142  return;
143  }
144 
145  pCurrentMusicTrack->Stop();
146  pCurrentMusicTrack = nullptr;
147 }

Перекрестные ссылки pCurrentMusicTrack.

Используется в GUICredits::ExecuteCredits(), Application::Game::Loop() и PartyCreationUI_Loop().

+ Граф вызова функции:

◆ MusicPause()

void AudioPlayer::MusicPause ( )

См. определение в файле AudioPlayer.cpp строка 149

149  {
150  if (!pCurrentMusicTrack) {
151  return;
152  }
153 
154  pCurrentMusicTrack->Pause();
155 }

Перекрестные ссылки pCurrentMusicTrack.

Используется в Application::GameWindowHandler::OnDeactivated(), MPlayer::OpenHouseMovie() и MPlayer::PlayFullscreenMovie().

+ Граф вызова функции:

◆ MusicResume()

void AudioPlayer::MusicResume ( )

См. определение в файле AudioPlayer.cpp строка 157

157  {
158  if (!pCurrentMusicTrack) {
159  return;
160  }
161 
162  pCurrentMusicTrack->Resume();
163 }

Перекрестные ссылки pCurrentMusicTrack.

Используется в Application::GameWindowHandler::OnActivated() и MPlayer::Unload().

+ Граф вызова функции:

◆ SetMusicVolume()

void AudioPlayer::SetMusicVolume ( int  music_level)

См. определение в файле AudioPlayer.cpp строка 165

165  {
166  if (!pCurrentMusicTrack) {
167  return;
168  }
169 
170  vol = std::max(0, vol);
171  vol = std::min(9, vol);
172  pCurrentMusicTrack->SetVolume(pSoundVolumeLevels[vol] * 2.f);
173 }

Перекрестные ссылки pCurrentMusicTrack и pSoundVolumeLevels.

Используется в Application::Menu::EventLoop(), Application::Game::GameLoop(), Initialize() и LoadGame().

+ Граф вызова функции:

◆ MusicGetVolume()

float AudioPlayer::MusicGetVolume ( )

См. определение в файле AudioPlayer.cpp строка 175

175  {
176  if (!pCurrentMusicTrack) {
177  return 0.f;
178  }
179 
180  return pCurrentMusicTrack->GetVolume();
181 }

Перекрестные ссылки pCurrentMusicTrack.

◆ StopAll()

void AudioPlayer::StopAll ( int  sample_id)

См. определение в файле AudioPlayer.cpp строка 189

189  {
190  if (!bPlayerReady) {
191  return;
192  }
193 }

Перекрестные ссылки bPlayerReady.

Используется в BLV_ProcessPartyActions(), GUICredits::ExecuteCredits() и ODM_ProcessPartyActions().

+ Граф вызова функции:

◆ PlaySound()

void AudioPlayer::PlaySound ( SoundID  eSoundID,
int  pid,
unsigned int  uNumRepeats,
int  x,
int  y,
int  a7 
)

См. определение в файле AudioPlayer.cpp строка 195

195  {
196  if (!bPlayerReady || engine->config->sound_level < 1 ||
197  (eSoundID == SOUND_Invalid)) {
198  return;
199  }
200 
201  if (mapSounds.find(eSoundID) == mapSounds.end()) {
202  logger->Warning(L"SoundID = %u not found", eSoundID);
203  return;
204  }
205 
206  SoundInfo &si = mapSounds[eSoundID];
207 
208  if (!si.sample) {
210 
211  if (si.sName == "") { // enable this for bonus sound effects
212  // logger->Warning(L"Trying to load sound \"%i\"", eSoundID);
213  // buffer = LoadSound(int(eSoundID));
214  } else {
215  buffer = LoadSound(si.sName);
216  }
217 
218  if (!buffer) {
219  logger->Warning(L"Failed to load sound \"%S\"", si.sName.c_str());
220  return;
221  }
222 
224  if (!si.sample) {
225  return;
226  }
227  }
228 
229  if (!si.sample) {
230  return;
231  }
232 
233  si.sample->SetVolume(uMasterVolume);
234 
235 
236  if (pid == 0) { // generic sound like from UI
237  si.sample->Play();
238  return;
239  } else if (pid == -1) { // exclusive sounds - can override
240  si.sample->Stop();
241  si.sample->Play();
242  return;
243  } else if (pid < 0) { // exclusive sounds - no override (close chest)
244  si.sample->Play();
245  } else {
246  ObjectType object_type = PID_TYPE(pid);
247  unsigned int object_id = PID_ID(pid);
248  switch (object_type) {
249  case OBJECT_BLVDoor: {
251  assert((int)object_id < pIndoor->uNumDoors);
252 
254  pParty->vPosition.y / 50.f,
255  pParty->vPosition.z / 50.f);
256  si.sample->SetPosition(pIndoor->pDoors[object_id].pXOffsets[0] / 50.f,
257  pIndoor->pDoors[object_id].pYOffsets[0] / 50.f,
258  pIndoor->pDoors[object_id].pZOffsets[0] / 50.f, 500.f);
259 
260  si.sample->Play(false, true);
261 
262  return;
263  }
264  case OBJECT_Player: {
265  si.sample->SetVolume((2.f * pSoundVolumeLevels[engine->config->voice_level]));
266  if (object_id == 5) si.sample->Stop();
267  si.sample->Play();
268  return;
269  }
270  case OBJECT_Actor: {
271  assert(object_id < uNumActors);
272 
274  pParty->vPosition.y / 50.f,
275  pParty->vPosition.z / 50.f);
276  si.sample->SetPosition(pActors[object_id].vPosition.x / 50.f,
277  pActors[object_id].vPosition.y / 50.f,
278  pActors[object_id].vPosition.z / 50.f, 500.f);
279 
280  si.sample->Play(false, true);
281  return;
282  }
283  case OBJECT_Decoration: {
284  assert(object_id < pLevelDecorations.size());
285 
286  provider->SetListenerPosition((float)pParty->vPosition.x / 50.f,
287  (float)pParty->vPosition.y / 50.f,
288  (float)pParty->vPosition.z / 50.f);
289  si.sample->SetPosition((float)pLevelDecorations[object_id].vPosition.x / 50.f,
290  (float)pLevelDecorations[object_id].vPosition.y / 50.f,
291  (float)pLevelDecorations[object_id].vPosition.z / 50.f, 2000.f);
292 
293  si.sample->Play(true, true);
294  return;
295  }
296  case OBJECT_Item: {
297  assert(object_id < uNumSpriteObjects);
298 
300  pParty->vPosition.y / 50.f,
301  pParty->vPosition.z / 50.f);
302  si.sample->SetPosition(pSpriteObjects[object_id].vPosition.x / 50.f,
303  pSpriteObjects[object_id].vPosition.y / 50.f,
304  pSpriteObjects[object_id].vPosition.z / 50.f, 500.f);
305 
306  si.sample->Play(false, true);
307  return;
308  }
309  case OBJECT_BModel: {
310  si.sample->Play();
311  return;
312  }
313 
314  default:
315  assert(false);
316  }
317  }
318 }

Перекрестные ссылки bPlayerReady, CreateAudioSample(), engine, LEVEL_Indoor, LoadSound(), logger, mapSounds, OBJECT_Actor, OBJECT_BLVDoor, OBJECT_BModel, OBJECT_Decoration, OBJECT_Item, OBJECT_Player, pActors, IndoorLocation::pDoors, pIndoor, pLevelDecorations, pParty, provider, pSoundVolumeLevels, pSpriteObjects, BLVDoor::pXOffsets, BLVDoor::pYOffsets, BLVDoor::pZOffsets, SoundInfo::sample, OpenALSoundProvider::SetListenerPosition(), SoundInfo::sName, SOUND_Invalid, uCurrentlyLoadedLevelType, uMasterVolume, uNumActors, uNumSpriteObjects, Party::vPosition и Log::Warning().

Используется в CastSpellInfoHelpers::_427E01_cast_spell(), Player::_42ECB5_PlayerAttacksActor(), _46BFFA_update_spell_fx(), Player::AddItem(), Party::AddItemToParty(), Actor::AI_SpellAttack(), Arena_SelectionFightLevel(), ArenaFight(), BackToHouseMenu(), BLV_ProcessPartyActions(), BLV_UpdateDoors(), Player::CanCastSpell(), CloseWindowBackground(), SpriteObject::Create_Splash_Object(), CreateParty_EventLoop(), DamagePlayerFromMonster(), stru262_TurnBased::End(), Application::Menu::EventLoop(), Application::Game::EventLoop(), EventProcessor(), Game_QuitGameWhilePlaying(), Game_StartNewGameWhilePlaying(), GuildDialog(), GUIWindow_Spellbook::GUIWindow_Spellbook(), GUIWindow_Book::InitializeFonts(), InitializeSpellBookTextures(), Inventory_ItemPopupAndAlchemy(), LoadGame(), ODM_ProcessPartyActions(), OnCloseSpellBook(), OnPaperdollLeftClick(), Chest::Open(), GUIWindow_Spellbook::OpenSpellbookPage(), Player::PlayAwardSound(), PlayHouseSound(), ArcomageGame::PlaySound(), Actor::PlaySound(), Player::PlaySound(), PlaySpellSound(), PrepareToLoadODM(), Player::ReceiveSpecialAttackEffect(), GUIWindow_Book::Release(), stru262_TurnBased::Start(), sub_4B6478(), TempleDialog(), TravelByTransport(), UI_OnVkKeyDown(), ui_play_gold_anim(), UIShop_Buy_Identify_Repair(), GUIWindow_QuestBook::Update(), GUIWindow_JournalBook::Update(), GUIWindow_AutonotesBook::Update(), GUIWindow_MapBook::Update(), GUIWindow_RestWindow::Update(), OnButtonClick::Update(), OnButtonClick2::Update(), OnButtonClick3::Update(), OnButtonClick4::Update(), OnSaveLoad::Update(), OnCancel::Update(), OnCancel2::Update(), OnCancel3::Update(), Player::UseItem_DrinkPotion_etc() и UseNPCSkill().

+ Граф вызовов:
+ Граф вызова функции:

◆ UpdateSounds()

void AudioPlayer::UpdateSounds ( )

См. определение в файле AudioPlayer.cpp строка 322

322  {
323  float pitch = pi * (float)pParty->sRotationX / 1024.f;
324  float yaw = pi * (float)pParty->sRotationY / 1024.f;
325  provider->SetOrientation(yaw, pitch);
327  pParty->vPosition.y / 50.f,
328  pParty->vPosition.z / 50.f);
329 }

Перекрестные ссылки pi, pParty, provider, OpenALSoundProvider::SetListenerPosition(), OpenALSoundProvider::SetOrientation(), Party::sRotationX, Party::sRotationY и Party::vPosition.

Используется в Application::Game::GameLoop().

+ Граф вызовов:
+ Граф вызова функции:

◆ StopChannels()

void AudioPlayer::StopChannels ( int  uStartChannel,
int  uEndChannel 
)

См. определение в файле AudioPlayer.cpp строка 331

331 {}

Используется в GUIWindow_Book::BasicBookInitialization(), stru262_TurnBased::End(), EnterHouse(), Application::Game::EventLoop(), EventProcessor(), Application::Game::GameLoop(), GameUI_InitializeDialogue(), CastSpellInfo::GetCastSpellInInventoryWindow(), GUIWindow_AutonotesBook::GUIWindow_AutonotesBook(), GUIWindow_CalendarBook::GUIWindow_CalendarBook(), GUIWindow_CharacterRecord::GUIWindow_CharacterRecord(), GUIWindow_House::GUIWindow_House(), GUIWindow_JournalBook::GUIWindow_JournalBook(), GUIWindow_MapBook::GUIWindow_MapBook(), GUIWindow_QuestBook::GUIWindow_QuestBook(), GUIWindow_QuickReference::GUIWindow_QuickReference(), GUIWindow_Transition::GUIWindow_Transition(), GUIWindow_Book::InitializeFonts(), InitializeSpellBookTextures(), GUIWindow_MainMenu::Loop(), Application::Game::Loop(), Application::Menu::MenuLoop(), MessWithChannels(), ODM_UpdateUserInputAndOther(), OnCastTargetedSpell::OnCastTargetedSpell(), Application::GameWindowHandler::OnDeactivated(), Chest::Open(), PartyCreationUI_LoopInternal(), PlayerTurn(), ArcomageGame::PrepareArcomage(), PrepareToLoadRestUI(), Engine::ResetCursor_Palettes_LODs_Level_Audio_SFT_Windows(), stru262_TurnBased::Start(), sub_4451A8_press_any_key(), Transition_StopSound_Autosave(), TravelByTransport() и UI_OnMouseRightClick().

+ Граф вызова функции:

◆ LoadAudioSnd()

void AudioPlayer::LoadAudioSnd ( )

См. определение в файле AudioPlayer.cpp строка 342

342  {
343  static_assert(sizeof(SoundHeader_mm7) == 52, "Wrong type size");
344 
345  fAudioSnd.open(MakeDataPath("Sounds\\Audio.snd"), std::ios_base::binary);
346  if (!fAudioSnd.good()) {
347  logger->Warning(L"Can't open file: %s", L"Sounds\\Audio.snd");
348  return;
349  }
350 
351  uint32_t uNumSoundHeaders;
352  fAudioSnd.read((char*)&uNumSoundHeaders, 4);
353  for (uint32_t i = 0; i < uNumSoundHeaders; i++) {
354  SoundHeader_mm7 header_mm7;
355  fAudioSnd.read((char*)&header_mm7, sizeof(SoundHeader_mm7));
356  SoundHeader header;
357  header.uFileOffset = header_mm7.uFileOffset;
358  header.uCompressedSize = header_mm7.uCompressedSize;
359  header.uDecompressedSize = header_mm7.uDecompressedSize;
360  mSoundHeaders[MakeLower(header_mm7.pSoundName)] = header;
361  }
362 }

Перекрестные ссылки fAudioSnd, logger, MakeDataPath(), MakeLower(), mSoundHeaders, AudioPlayer::SoundHeader::uCompressedSize, AudioPlayer::SoundHeader::uDecompressedSize, AudioPlayer::SoundHeader::uFileOffset и Log::Warning().

Используется в Initialize().

+ Граф вызовов:
+ Граф вызова функции:

◆ MessWithChannels()

void AudioPlayer::MessWithChannels ( )

См. определение в файле AudioPlayer.cpp строка 320

320 { pAudioPlayer->StopChannels(-1, -1); }

Перекрестные ссылки pAudioPlayer и StopChannels().

+ Граф вызовов:

◆ FindSound()

bool AudioPlayer::FindSound ( const std::string pName,
struct AudioPlayer::SoundHeader header 
)

См. определение в файле AudioPlayer.cpp строка 385

385  {
386  if (header == nullptr) {
387  return false;
388  }
389 
390  std::map<String, SoundHeader>::iterator it = mSoundHeaders.find(MakeLower(pName));
391  if (it == mSoundHeaders.end()) {
392  return false;
393  }
394 
395  *header = it->second;
396 
397  return true;
398 }

Перекрестные ссылки MakeLower() и mSoundHeaders.

Используется в LoadSound().

+ Граф вызовов:
+ Граф вызова функции:

◆ LoadSound() [1/2]

PMemBuffer AudioPlayer::LoadSound ( const std::string pSoundName)

См. определение в файле AudioPlayer.cpp строка 438

438  {
439  SoundHeader header = { 0 };
440  if (!FindSound(pSoundName, &header)) {
441  return nullptr;
442  }
443 
444  PMemBuffer buffer = AllocMemBuffer(header.uDecompressedSize);
445 
446  fAudioSnd.seekg(header.uFileOffset, std::ios_base::beg);
447  if (header.uCompressedSize >= header.uDecompressedSize) {
448  header.uCompressedSize = header.uDecompressedSize;
449  if (header.uDecompressedSize) {
450  fAudioSnd.read((char*)buffer->GetData(), header.uDecompressedSize);
451  } else {
452  logger->Warning(L"Can't load sound file!");
453  }
454  } else {
455  PMemBuffer compressed = AllocMemBuffer(header.uCompressedSize);
456  fAudioSnd.read((char*)compressed->GetData(), header.uCompressedSize);
457  buffer = zlib::Uncompress(compressed);
458  }
459 
460  return buffer;
461 }

Перекрестные ссылки AllocMemBuffer(), fAudioSnd, FindSound(), logger, AudioPlayer::SoundHeader::uCompressedSize, AudioPlayer::SoundHeader::uDecompressedSize, AudioPlayer::SoundHeader::uFileOffset, zlib::Uncompress() и Log::Warning().

Используется в PlaySound().

+ Граф вызовов:
+ Граф вызова функции:

◆ LoadSound() [2/2]

PMemBuffer AudioPlayer::LoadSound ( int  uSoundID)

См. определение в файле AudioPlayer.cpp строка 401

401  { // bit of a kludge (load sound by ID index) - plays some interesting files
402  SoundHeader header = { 0 };
403 
404  if (uSoundID < 0 || uSoundID > mSoundHeaders.size())
405  return nullptr;
406 
407  // iterate through to get sound by int ID
408  std::map<String, SoundHeader>::iterator it = mSoundHeaders.begin();
409  std::advance(it, uSoundID);
410 
411  if (it == mSoundHeaders.end()) {
412  return nullptr;
413  }
414 
415  header = it->second;
416 
417  // read into buffer
418  PMemBuffer buffer = AllocMemBuffer(header.uDecompressedSize);
419 
420  fAudioSnd.seekg(header.uFileOffset, std::ios_base::beg);
421  if (header.uCompressedSize >= header.uDecompressedSize) {
422  header.uCompressedSize = header.uDecompressedSize;
423  if (header.uDecompressedSize) {
424  fAudioSnd.read((char*)buffer->GetData(), header.uDecompressedSize);
425  } else {
426  logger->Warning(L"Can't load sound file!");
427  }
428  } else {
429  PMemBuffer compressed = AllocMemBuffer(header.uCompressedSize);
430  fAudioSnd.read((char*)compressed->GetData(), header.uCompressedSize);
431  buffer = zlib::Uncompress(compressed);
432  }
433 
434  return buffer;
435 }

Перекрестные ссылки AllocMemBuffer(), fAudioSnd, logger, mSoundHeaders, AudioPlayer::SoundHeader::uCompressedSize, AudioPlayer::SoundHeader::uDecompressedSize, AudioPlayer::SoundHeader::uFileOffset, zlib::Uncompress() и Log::Warning().

+ Граф вызовов:

◆ PlaySpellSound()

void AudioPlayer::PlaySpellSound ( unsigned int  spell,
unsigned int  pid 
)

См. определение в файле AudioPlayer.cpp строка 476

476  {
477  PlaySound((SoundID)word_4EE088_sound_ids[spell], pid, 0, -1, 0, 0);
478 }

Перекрестные ссылки PlaySound() и word_4EE088_sound_ids.

Используется в CastSpellInfoHelpers::_427E01_cast_spell(), _46BFFA_update_spell_fx(), Actor::AI_SpellAttack(), EventCastSpell() и Application::Game::EventLoop().

+ Граф вызовов:
+ Граф вызова функции:

Данные класса

◆ bPlayerReady

bool AudioPlayer::bPlayerReady
protected

См. определение в файле AudioPlayer.h строка 147

Используется в Initialize(), MusicPlayTrack(), PlaySound() и StopAll().

◆ currentMusicTrack

int AudioPlayer::currentMusicTrack
protected

См. определение в файле AudioPlayer.h строка 148

Используется в Initialize() и MusicPlayTrack().

◆ uMasterVolume

float AudioPlayer::uMasterVolume
protected

См. определение в файле AudioPlayer.h строка 149

Используется в Initialize(), PlaySound() и SetMasterVolume().

◆ pCurrentMusicTrack

PAudioTrack AudioPlayer::pCurrentMusicTrack
protected

См. определение в файле AudioPlayer.h строка 150

Используется в MusicGetVolume(), MusicPause(), MusicPlayTrack(), MusicResume(), MusicStop() и SetMusicVolume().

◆ fAudioSnd

std::ifstream AudioPlayer::fAudioSnd
protected

См. определение в файле AudioPlayer.h строка 151

Используется в LoadAudioSnd() и LoadSound().

◆ mSoundHeaders

std::map<String, SoundHeader> AudioPlayer::mSoundHeaders
protected

См. определение в файле AudioPlayer.h строка 152

Используется в FindSound(), LoadAudioSnd() и LoadSound().


Объявления и описания членов классов находятся в файлах:
AudioPlayer::FindSound
bool FindSound(const std::string &pName, struct AudioPlayer::SoundHeader *header)
Definition: AudioPlayer.cpp:385
uNumActors
size_t uNumActors
Definition: Actor.cpp:39
Party::vPosition
Vec3_int_ vPosition
Definition: Party.h:250
AudioPlayer::SetMasterVolume
void SetMasterVolume(int level)
Definition: AudioPlayer.cpp:183
pLevelDecorations
std::array< LevelDecoration, 3000 > pLevelDecorations
Definition: Decoration.cpp:8
BLVDoor::pZOffsets
uint16_t * pZOffsets
Definition: Indoor.h:400
SoundHeader_mm7
Definition: AudioPlayer.cpp:334
AudioPlayer::SetMusicVolume
void SetMusicVolume(int music_level)
Definition: AudioPlayer.cpp:165
AudioPlayer::currentMusicTrack
int currentMusicTrack
Definition: AudioPlayer.h:148
pSpriteObjects
std::array< SpriteObject, MAX_SPRITE_OBJECTS > pSpriteObjects
Definition: SpriteObject.cpp:34
OBJECT_Item
@ OBJECT_Item
Definition: Actor.h:66
OpenALSoundProvider::SetOrientation
void SetOrientation(float yaw, float pitch)
Definition: OpenALSoundProvider.cpp:97
Party::sRotationX
int sRotationX
Definition: Party.h:252
AudioPlayer::uMasterVolume
float uMasterVolume
Definition: AudioPlayer.h:149
level
GLint level
Definition: SDL_opengl.h:1572
AudioPlayer::PlaySound
void PlaySound(SoundID eSoundID, int pid, unsigned int uNumRepeats, int x, int y, int a7)
Definition: AudioPlayer.cpp:195
engine
std::shared_ptr< Engine > engine
Definition: Engine.cpp:130
SoundInfo::sName
std::string sName
Definition: AudioPlayer.cpp:45
AudioPlayer::SoundHeader::uFileOffset
size_t uFileOffset
Definition: AudioPlayer.h:114
SoundInfo::sample
PAudioSample sample
Definition: AudioPlayer.cpp:50
OBJECT_Decoration
@ OBJECT_Decoration
Definition: Actor.h:69
FileExists
bool FileExists(const char *fname)
Definition: Engine.cpp:153
pIndoor
IndoorLocation * pIndoor
Definition: Indoor.cpp:49
OBJECT_Actor
@ OBJECT_Actor
Definition: Actor.h:67
AudioPlayer::LoadSound
PMemBuffer LoadSound(const std::string &pSoundName)
Definition: AudioPlayer.cpp:438
SoundInfo
Definition: AudioPlayer.cpp:40
buffer
EGLContext EGLenum EGLClientBuffer buffer
Definition: SDL_egl.h:952
AllocMemBuffer
PMemBuffer AllocMemBuffer(size_t size)
Definition: MemBuffer.cpp:20
CreateAudioTrack
PAudioTrack CreateAudioTrack(const std::string &file_path)
Definition: OpenALSoundProvider.cpp:657
pParty
Party * pParty
Definition: Party.cpp:30
provider
OpenALSoundProvider * provider
Definition: MediaPlayer.cpp:41
BLVDoor::pXOffsets
uint16_t * pXOffsets
Definition: Indoor.h:398
OBJECT_BModel
@ OBJECT_BModel
Definition: Actor.h:70
binary
const GLuint GLenum const void * binary
Definition: SDL_opengl_glext.h:1871
CreateAudioSample
PAudioSample CreateAudioSample(PMemBuffer buffer)
Definition: OpenALSoundProvider.cpp:873
AudioPlayer::bPlayerReady
bool bPlayerReady
Definition: AudioPlayer.h:147
ObjectType
ObjectType
Definition: Actor.h:63
Log::Warning
void Warning(const wchar_t *pFormat,...)
Definition: Log.cpp:28
AudioPlayer::StopChannels
void StopChannels(int uStartChannel, int uEndChannel)
Definition: AudioPlayer.cpp:331
pActors
std::array< Actor, 500 > pActors
Definition: Actor.cpp:38
AudioPlayer::SoundHeader
struct AudioPlayer::SoundHeader SoundHeader
f
GLfloat f
Definition: SDL_opengl_glext.h:1873
pi
const float pi
Definition: VectorTypes.h:22
SOUND_Invalid
@ SOUND_Invalid
Definition: AudioPlayer.h:11
LEVEL_Indoor
@ LEVEL_Indoor
Definition: Indoor.h:286
zlib::Uncompress
int Uncompress(void *dest, unsigned int *destLen, const void *source, unsigned int sourceLen)
Definition: ZlibWrapper.cpp:7
OBJECT_Player
@ OBJECT_Player
Definition: Actor.h:68
mapSounds
std::map< uint32_t, SoundInfo > mapSounds
Definition: AudioPlayer.cpp:53
uNumSpriteObjects
size_t uNumSpriteObjects
Definition: SpriteObject.cpp:33
word_4EE088_sound_ids
std::array< uint16_t, 101 > word_4EE088_sound_ids
Definition: AudioPlayer.cpp:463
BLVDoor::pYOffsets
uint16_t * pYOffsets
Definition: Indoor.h:399
MakeDataPath
std::string MakeDataPath(const char *file_rel_path)
Definition: Engine.cpp:126
OBJECT_BLVDoor
@ OBJECT_BLVDoor
Definition: Actor.h:65
AudioPlayer::pCurrentMusicTrack
PAudioTrack pCurrentMusicTrack
Definition: AudioPlayer.h:150
SoundID
SoundID
Definition: AudioPlayer.h:10
MakeLower
String MakeLower(const String &text)
Definition: Strings.cpp:43
uCurrentlyLoadedLevelType
LEVEL_TYPE uCurrentlyLoadedLevelType
Definition: Indoor.cpp:52
AudioPlayer::LoadAudioSnd
void LoadAudioSnd()
Definition: AudioPlayer.cpp:342
pAudioPlayer
AudioPlayer * pAudioPlayer
Definition: AudioPlayer.cpp:20
logger
Log * logger
Definition: IocContainer.cpp:47
AudioPlayer::fAudioSnd
std::ifstream fAudioSnd
Definition: AudioPlayer.h:151
OpenALSoundProvider::SetListenerPosition
void SetListenerPosition(float x, float y, float z)
Definition: OpenALSoundProvider.cpp:93
PMemBuffer
std::shared_ptr< IMemBuffer > PMemBuffer
Definition: MemBuffer.h:13
StringPrintf
String StringPrintf(const char *fmt,...)
Definition: Strings.cpp:9
uint32_t
unsigned __int32 uint32_t
Definition: SDL_config.h:39
Party::sRotationY
int sRotationY
Definition: Party.h:251
IndoorLocation::pDoors
struct BLVDoor * pDoors
Definition: Indoor.h:638
String
std::string String
Definition: Strings.h:10
pSoundVolumeLevels
std::array< float, 10 > pSoundVolumeLevels
Definition: AudioPlayer.cpp:23
AudioPlayer::mSoundHeaders
std::map< String, SoundHeader > mSoundHeaders
Definition: AudioPlayer.h:152