mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
Add movement sound manager for water splashes and jump/land vocalizations
Implements water splash sounds (enter water + footsteps) with size-based intensity and jump/land vocalizations for all 16 race/gender combinations.
This commit is contained in:
parent
f1e7f75141
commit
1e23370c0e
3 changed files with 479 additions and 0 deletions
|
|
@ -109,6 +109,7 @@ set(WOWEE_SOURCES
|
||||||
src/audio/ui_sound_manager.cpp
|
src/audio/ui_sound_manager.cpp
|
||||||
src/audio/combat_sound_manager.cpp
|
src/audio/combat_sound_manager.cpp
|
||||||
src/audio/spell_sound_manager.cpp
|
src/audio/spell_sound_manager.cpp
|
||||||
|
src/audio/movement_sound_manager.cpp
|
||||||
|
|
||||||
# Pipeline (asset loaders)
|
# Pipeline (asset loaders)
|
||||||
src/pipeline/mpq_manager.cpp
|
src/pipeline/mpq_manager.cpp
|
||||||
|
|
|
||||||
124
include/audio/movement_sound_manager.hpp
Normal file
124
include/audio/movement_sound_manager.hpp
Normal file
|
|
@ -0,0 +1,124 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
namespace wowee {
|
||||||
|
namespace pipeline {
|
||||||
|
class AssetManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace audio {
|
||||||
|
|
||||||
|
class MovementSoundManager {
|
||||||
|
public:
|
||||||
|
MovementSoundManager() = default;
|
||||||
|
~MovementSoundManager() = default;
|
||||||
|
|
||||||
|
// Initialization
|
||||||
|
bool initialize(pipeline::AssetManager* assets);
|
||||||
|
void shutdown();
|
||||||
|
|
||||||
|
// Volume control
|
||||||
|
void setVolumeScale(float scale);
|
||||||
|
|
||||||
|
// Character size (for water splash intensity)
|
||||||
|
enum class CharacterSize {
|
||||||
|
SMALL, // Gnome, Dwarf
|
||||||
|
MEDIUM, // Human, Night Elf, Undead, Troll, Blood Elf, Draenei
|
||||||
|
LARGE, // Orc, Tauren
|
||||||
|
GIANT // Large NPCs, bosses
|
||||||
|
};
|
||||||
|
|
||||||
|
// Player race (for jump/land vocalizations)
|
||||||
|
enum class PlayerRace {
|
||||||
|
HUMAN_MALE,
|
||||||
|
HUMAN_FEMALE,
|
||||||
|
DWARF_MALE,
|
||||||
|
DWARF_FEMALE,
|
||||||
|
NIGHT_ELF_MALE,
|
||||||
|
NIGHT_ELF_FEMALE,
|
||||||
|
ORC_MALE,
|
||||||
|
ORC_FEMALE,
|
||||||
|
TAUREN_MALE,
|
||||||
|
TAUREN_FEMALE,
|
||||||
|
TROLL_MALE,
|
||||||
|
TROLL_FEMALE,
|
||||||
|
UNDEAD_MALE,
|
||||||
|
UNDEAD_FEMALE,
|
||||||
|
GNOME_MALE,
|
||||||
|
GNOME_FEMALE
|
||||||
|
};
|
||||||
|
|
||||||
|
// Water interaction sounds
|
||||||
|
void playEnterWater(CharacterSize size); // Jumping into water
|
||||||
|
void playWaterFootstep(CharacterSize size); // Walking/running in water
|
||||||
|
|
||||||
|
// Jump/Land sounds (player vocalizations)
|
||||||
|
void playJump(PlayerRace race);
|
||||||
|
void playLand(PlayerRace race);
|
||||||
|
|
||||||
|
private:
|
||||||
|
struct MovementSample {
|
||||||
|
std::string path;
|
||||||
|
std::vector<uint8_t> data;
|
||||||
|
bool loaded;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Water splash sound libraries
|
||||||
|
std::vector<MovementSample> enterWaterSmallSounds_;
|
||||||
|
std::vector<MovementSample> enterWaterMediumSounds_;
|
||||||
|
std::vector<MovementSample> enterWaterGiantSounds_;
|
||||||
|
|
||||||
|
std::vector<MovementSample> waterFootstepSmallSounds_;
|
||||||
|
std::vector<MovementSample> waterFootstepMediumSounds_;
|
||||||
|
std::vector<MovementSample> waterFootstepHugeSounds_;
|
||||||
|
|
||||||
|
// Jump/Land vocal libraries (all 16 race/gender combos)
|
||||||
|
std::vector<MovementSample> jumpHumanMaleSounds_;
|
||||||
|
std::vector<MovementSample> landHumanMaleSounds_;
|
||||||
|
std::vector<MovementSample> jumpHumanFemaleSounds_;
|
||||||
|
std::vector<MovementSample> landHumanFemaleSounds_;
|
||||||
|
std::vector<MovementSample> jumpDwarfMaleSounds_;
|
||||||
|
std::vector<MovementSample> landDwarfMaleSounds_;
|
||||||
|
std::vector<MovementSample> jumpDwarfFemaleSounds_;
|
||||||
|
std::vector<MovementSample> landDwarfFemaleSounds_;
|
||||||
|
std::vector<MovementSample> jumpNightElfMaleSounds_;
|
||||||
|
std::vector<MovementSample> landNightElfMaleSounds_;
|
||||||
|
std::vector<MovementSample> jumpNightElfFemaleSounds_;
|
||||||
|
std::vector<MovementSample> landNightElfFemaleSounds_;
|
||||||
|
std::vector<MovementSample> jumpOrcMaleSounds_;
|
||||||
|
std::vector<MovementSample> landOrcMaleSounds_;
|
||||||
|
std::vector<MovementSample> jumpOrcFemaleSounds_;
|
||||||
|
std::vector<MovementSample> landOrcFemaleSounds_;
|
||||||
|
std::vector<MovementSample> jumpTaurenMaleSounds_;
|
||||||
|
std::vector<MovementSample> landTaurenMaleSounds_;
|
||||||
|
std::vector<MovementSample> jumpTaurenFemaleSounds_;
|
||||||
|
std::vector<MovementSample> landTaurenFemaleSounds_;
|
||||||
|
std::vector<MovementSample> jumpTrollMaleSounds_;
|
||||||
|
std::vector<MovementSample> landTrollMaleSounds_;
|
||||||
|
std::vector<MovementSample> jumpTrollFemaleSounds_;
|
||||||
|
std::vector<MovementSample> landTrollFemaleSounds_;
|
||||||
|
std::vector<MovementSample> jumpUndeadMaleSounds_;
|
||||||
|
std::vector<MovementSample> landUndeadMaleSounds_;
|
||||||
|
std::vector<MovementSample> jumpUndeadFemaleSounds_;
|
||||||
|
std::vector<MovementSample> landUndeadFemaleSounds_;
|
||||||
|
std::vector<MovementSample> jumpGnomeMaleSounds_;
|
||||||
|
std::vector<MovementSample> landGnomeMaleSounds_;
|
||||||
|
std::vector<MovementSample> jumpGnomeFemaleSounds_;
|
||||||
|
std::vector<MovementSample> landGnomeFemaleSounds_;
|
||||||
|
|
||||||
|
// State tracking
|
||||||
|
float volumeScale_ = 1.0f;
|
||||||
|
bool initialized_ = false;
|
||||||
|
|
||||||
|
// Helper methods
|
||||||
|
bool loadSound(const std::string& path, MovementSample& sample, pipeline::AssetManager* assets);
|
||||||
|
void playSound(const std::vector<MovementSample>& library, float volumeMultiplier = 1.0f);
|
||||||
|
void playRandomSound(const std::vector<MovementSample>& library, float volumeMultiplier = 1.0f);
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace audio
|
||||||
|
} // namespace wowee
|
||||||
354
src/audio/movement_sound_manager.cpp
Normal file
354
src/audio/movement_sound_manager.cpp
Normal file
|
|
@ -0,0 +1,354 @@
|
||||||
|
#include "audio/movement_sound_manager.hpp"
|
||||||
|
#include "audio/audio_engine.hpp"
|
||||||
|
#include "pipeline/asset_manager.hpp"
|
||||||
|
#include "core/logger.hpp"
|
||||||
|
#include <random>
|
||||||
|
|
||||||
|
namespace wowee {
|
||||||
|
namespace audio {
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
std::random_device rd;
|
||||||
|
std::mt19937 gen(rd());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MovementSoundManager::initialize(pipeline::AssetManager* assets) {
|
||||||
|
if (!assets) {
|
||||||
|
LOG_ERROR("MovementSoundManager: AssetManager is null");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG_INFO("MovementSoundManager: Initializing...");
|
||||||
|
|
||||||
|
// Load water splash sounds - entering water
|
||||||
|
enterWaterSmallSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Spells\\EnterWaterSmall.wav", enterWaterSmallSounds_[0], assets);
|
||||||
|
|
||||||
|
enterWaterMediumSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Spells\\EnterWaterMedium.wav", enterWaterMediumSounds_[0], assets);
|
||||||
|
|
||||||
|
enterWaterGiantSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Spells\\EnterWaterGiant.wav", enterWaterGiantSounds_[0], assets);
|
||||||
|
|
||||||
|
// Load water footstep sounds - walking in water (5 variations each)
|
||||||
|
waterFootstepSmallSounds_.resize(5);
|
||||||
|
loadSound("Sound\\Spells\\WaterFootstepSmall1.wav", waterFootstepSmallSounds_[0], assets);
|
||||||
|
loadSound("Sound\\Spells\\WaterFootstepSmall2.wav", waterFootstepSmallSounds_[1], assets);
|
||||||
|
loadSound("Sound\\Spells\\WaterFootstepSmall3.wav", waterFootstepSmallSounds_[2], assets);
|
||||||
|
loadSound("Sound\\Spells\\WaterFootstepSmall4.wav", waterFootstepSmallSounds_[3], assets);
|
||||||
|
loadSound("Sound\\Spells\\WaterFootstepSmall5.wav", waterFootstepSmallSounds_[4], assets);
|
||||||
|
|
||||||
|
waterFootstepMediumSounds_.resize(5);
|
||||||
|
loadSound("Sound\\Spells\\WaterFootstepMedium1.wav", waterFootstepMediumSounds_[0], assets);
|
||||||
|
loadSound("Sound\\Spells\\WaterFootstepMedium2.wav", waterFootstepMediumSounds_[1], assets);
|
||||||
|
loadSound("Sound\\Spells\\WaterFootstepMedium3.wav", waterFootstepMediumSounds_[2], assets);
|
||||||
|
loadSound("Sound\\Spells\\WaterFootstepMedium4.wav", waterFootstepMediumSounds_[3], assets);
|
||||||
|
loadSound("Sound\\Spells\\WaterFootstepMedium5.wav", waterFootstepMediumSounds_[4], assets);
|
||||||
|
|
||||||
|
waterFootstepHugeSounds_.resize(5);
|
||||||
|
loadSound("Sound\\Spells\\WaterFootstepHuge1.wav", waterFootstepHugeSounds_[0], assets);
|
||||||
|
loadSound("Sound\\Spells\\WaterFootstepHuge2.wav", waterFootstepHugeSounds_[1], assets);
|
||||||
|
loadSound("Sound\\Spells\\WaterFootstepHuge3.wav", waterFootstepHugeSounds_[2], assets);
|
||||||
|
loadSound("Sound\\Spells\\WaterFootstepHuge4.wav", waterFootstepHugeSounds_[3], assets);
|
||||||
|
loadSound("Sound\\Spells\\WaterFootstepHuge5.wav", waterFootstepHugeSounds_[4], assets);
|
||||||
|
|
||||||
|
// Load jump/land vocalizations for all races
|
||||||
|
// Human Male
|
||||||
|
jumpHumanMaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Human\\HumanMaleJump1.wav", jumpHumanMaleSounds_[0], assets);
|
||||||
|
landHumanMaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Human\\HumanMaleLand1.wav", landHumanMaleSounds_[0], assets);
|
||||||
|
|
||||||
|
// Human Female
|
||||||
|
jumpHumanFemaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Human\\HumanFemaleJump1.wav", jumpHumanFemaleSounds_[0], assets);
|
||||||
|
landHumanFemaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Human\\HumanFemaleLand1.wav", landHumanFemaleSounds_[0], assets);
|
||||||
|
|
||||||
|
// Dwarf Male
|
||||||
|
jumpDwarfMaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Dwarf\\DwarfMaleJump1.wav", jumpDwarfMaleSounds_[0], assets);
|
||||||
|
landDwarfMaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Dwarf\\DwarfMaleLand1.wav", landDwarfMaleSounds_[0], assets);
|
||||||
|
|
||||||
|
// Dwarf Female
|
||||||
|
jumpDwarfFemaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Dwarf\\DwarfFemaleJump1.wav", jumpDwarfFemaleSounds_[0], assets);
|
||||||
|
landDwarfFemaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Dwarf\\DwarfFemaleLand1.wav", landDwarfFemaleSounds_[0], assets);
|
||||||
|
|
||||||
|
// Night Elf Male
|
||||||
|
jumpNightElfMaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\NightElf\\NightElfMaleJump1.wav", jumpNightElfMaleSounds_[0], assets);
|
||||||
|
landNightElfMaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\NightElf\\NightElfMaleLand1.wav", landNightElfMaleSounds_[0], assets);
|
||||||
|
|
||||||
|
// Night Elf Female
|
||||||
|
jumpNightElfFemaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\NightElf\\NightElfFemaleJump1.wav", jumpNightElfFemaleSounds_[0], assets);
|
||||||
|
landNightElfFemaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\NightElf\\NightElfFemaleLand1.wav", landNightElfFemaleSounds_[0], assets);
|
||||||
|
|
||||||
|
// Orc Male
|
||||||
|
jumpOrcMaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Orc\\OrcMaleJump1.wav", jumpOrcMaleSounds_[0], assets);
|
||||||
|
landOrcMaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Orc\\OrcMaleLand1.wav", landOrcMaleSounds_[0], assets);
|
||||||
|
|
||||||
|
// Orc Female
|
||||||
|
jumpOrcFemaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Orc\\OrcFemaleJump1.wav", jumpOrcFemaleSounds_[0], assets);
|
||||||
|
landOrcFemaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Orc\\OrcFemaleLand1.wav", landOrcFemaleSounds_[0], assets);
|
||||||
|
|
||||||
|
// Tauren Male
|
||||||
|
jumpTaurenMaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Tauren\\TaurenMaleJump1.wav", jumpTaurenMaleSounds_[0], assets);
|
||||||
|
landTaurenMaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Tauren\\TaurenMaleLand1.wav", landTaurenMaleSounds_[0], assets);
|
||||||
|
|
||||||
|
// Tauren Female
|
||||||
|
jumpTaurenFemaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Tauren\\TaurenFemaleJump1.wav", jumpTaurenFemaleSounds_[0], assets);
|
||||||
|
landTaurenFemaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Tauren\\TaurenFemaleLand1.wav", landTaurenFemaleSounds_[0], assets);
|
||||||
|
|
||||||
|
// Troll Male
|
||||||
|
jumpTrollMaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Troll\\TrollMaleJump1.wav", jumpTrollMaleSounds_[0], assets);
|
||||||
|
landTrollMaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Troll\\TrollMaleLand1.wav", landTrollMaleSounds_[0], assets);
|
||||||
|
|
||||||
|
// Troll Female
|
||||||
|
jumpTrollFemaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Troll\\TrollFemaleJump1.wav", jumpTrollFemaleSounds_[0], assets);
|
||||||
|
landTrollFemaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Troll\\TrollFemaleLand1.wav", landTrollFemaleSounds_[0], assets);
|
||||||
|
|
||||||
|
// Undead Male
|
||||||
|
jumpUndeadMaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Scourge\\ScourgeMaleJump1.wav", jumpUndeadMaleSounds_[0], assets);
|
||||||
|
landUndeadMaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Scourge\\ScourgeMaleLand1.wav", landUndeadMaleSounds_[0], assets);
|
||||||
|
|
||||||
|
// Undead Female
|
||||||
|
jumpUndeadFemaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Scourge\\ScourgeFemaleJump1.wav", jumpUndeadFemaleSounds_[0], assets);
|
||||||
|
landUndeadFemaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Scourge\\ScourgeFemaleLand1.wav", landUndeadFemaleSounds_[0], assets);
|
||||||
|
|
||||||
|
// Gnome Male
|
||||||
|
jumpGnomeMaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Gnome\\GnomeMaleJump1.wav", jumpGnomeMaleSounds_[0], assets);
|
||||||
|
landGnomeMaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Gnome\\GnomeMaleLand1.wav", landGnomeMaleSounds_[0], assets);
|
||||||
|
|
||||||
|
// Gnome Female
|
||||||
|
jumpGnomeFemaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Gnome\\GnomeFemaleJump1.wav", jumpGnomeFemaleSounds_[0], assets);
|
||||||
|
landGnomeFemaleSounds_.resize(1);
|
||||||
|
loadSound("Sound\\Character\\Gnome\\GnomeFemaleLand1.wav", landGnomeFemaleSounds_[0], assets);
|
||||||
|
|
||||||
|
LOG_INFO("MovementSoundManager: Water sounds - Enter small: ", enterWaterSmallSounds_[0].loaded ? "YES" : "NO",
|
||||||
|
", Enter medium: ", enterWaterMediumSounds_[0].loaded ? "YES" : "NO",
|
||||||
|
", Enter giant: ", enterWaterGiantSounds_[0].loaded ? "YES" : "NO");
|
||||||
|
LOG_INFO("MovementSoundManager: Jump/Land - Human: ", jumpHumanMaleSounds_[0].loaded ? "YES" : "NO",
|
||||||
|
", Orc: ", jumpOrcMaleSounds_[0].loaded ? "YES" : "NO",
|
||||||
|
", Tauren: ", jumpTaurenMaleSounds_[0].loaded ? "YES" : "NO");
|
||||||
|
|
||||||
|
initialized_ = true;
|
||||||
|
LOG_INFO("MovementSoundManager: Initialization complete");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MovementSoundManager::shutdown() {
|
||||||
|
initialized_ = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MovementSoundManager::loadSound(const std::string& path, MovementSample& sample, pipeline::AssetManager* assets) {
|
||||||
|
sample.path = path;
|
||||||
|
sample.loaded = false;
|
||||||
|
|
||||||
|
try {
|
||||||
|
sample.data = assets->readFile(path);
|
||||||
|
if (!sample.data.empty()) {
|
||||||
|
sample.loaded = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} catch (const std::exception& e) {
|
||||||
|
// Silently fail - not all sounds may exist
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MovementSoundManager::playSound(const std::vector<MovementSample>& library, float volumeMultiplier) {
|
||||||
|
if (!initialized_ || library.empty() || !library[0].loaded) return;
|
||||||
|
|
||||||
|
float volume = 0.7f * volumeScale_ * volumeMultiplier;
|
||||||
|
AudioEngine::instance().playSound2D(library[0].data, volume, 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MovementSoundManager::playRandomSound(const std::vector<MovementSample>& library, float volumeMultiplier) {
|
||||||
|
if (!initialized_ || library.empty()) return;
|
||||||
|
|
||||||
|
// Count loaded sounds
|
||||||
|
std::vector<const MovementSample*> loadedSounds;
|
||||||
|
for (const auto& sample : library) {
|
||||||
|
if (sample.loaded) {
|
||||||
|
loadedSounds.push_back(&sample);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (loadedSounds.empty()) return;
|
||||||
|
|
||||||
|
// Pick random sound
|
||||||
|
std::uniform_int_distribution<size_t> dist(0, loadedSounds.size() - 1);
|
||||||
|
size_t index = dist(gen);
|
||||||
|
|
||||||
|
float volume = 0.7f * volumeScale_ * volumeMultiplier;
|
||||||
|
AudioEngine::instance().playSound2D(loadedSounds[index]->data, volume, 1.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MovementSoundManager::setVolumeScale(float scale) {
|
||||||
|
volumeScale_ = std::max(0.0f, std::min(1.0f, scale));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MovementSoundManager::playEnterWater(CharacterSize size) {
|
||||||
|
switch (size) {
|
||||||
|
case CharacterSize::SMALL:
|
||||||
|
playSound(enterWaterSmallSounds_, 0.8f);
|
||||||
|
break;
|
||||||
|
case CharacterSize::MEDIUM:
|
||||||
|
playSound(enterWaterMediumSounds_, 1.0f);
|
||||||
|
break;
|
||||||
|
case CharacterSize::LARGE:
|
||||||
|
case CharacterSize::GIANT:
|
||||||
|
playSound(enterWaterGiantSounds_, 1.2f);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MovementSoundManager::playWaterFootstep(CharacterSize size) {
|
||||||
|
switch (size) {
|
||||||
|
case CharacterSize::SMALL:
|
||||||
|
playRandomSound(waterFootstepSmallSounds_, 0.6f);
|
||||||
|
break;
|
||||||
|
case CharacterSize::MEDIUM:
|
||||||
|
playRandomSound(waterFootstepMediumSounds_, 0.8f);
|
||||||
|
break;
|
||||||
|
case CharacterSize::LARGE:
|
||||||
|
case CharacterSize::GIANT:
|
||||||
|
playRandomSound(waterFootstepHugeSounds_, 1.0f);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MovementSoundManager::playJump(PlayerRace race) {
|
||||||
|
switch (race) {
|
||||||
|
case PlayerRace::HUMAN_MALE:
|
||||||
|
playSound(jumpHumanMaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::HUMAN_FEMALE:
|
||||||
|
playSound(jumpHumanFemaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::DWARF_MALE:
|
||||||
|
playSound(jumpDwarfMaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::DWARF_FEMALE:
|
||||||
|
playSound(jumpDwarfFemaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::NIGHT_ELF_MALE:
|
||||||
|
playSound(jumpNightElfMaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::NIGHT_ELF_FEMALE:
|
||||||
|
playSound(jumpNightElfFemaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::ORC_MALE:
|
||||||
|
playSound(jumpOrcMaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::ORC_FEMALE:
|
||||||
|
playSound(jumpOrcFemaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::TAUREN_MALE:
|
||||||
|
playSound(jumpTaurenMaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::TAUREN_FEMALE:
|
||||||
|
playSound(jumpTaurenFemaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::TROLL_MALE:
|
||||||
|
playSound(jumpTrollMaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::TROLL_FEMALE:
|
||||||
|
playSound(jumpTrollFemaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::UNDEAD_MALE:
|
||||||
|
playSound(jumpUndeadMaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::UNDEAD_FEMALE:
|
||||||
|
playSound(jumpUndeadFemaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::GNOME_MALE:
|
||||||
|
playSound(jumpGnomeMaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::GNOME_FEMALE:
|
||||||
|
playSound(jumpGnomeFemaleSounds_);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MovementSoundManager::playLand(PlayerRace race) {
|
||||||
|
switch (race) {
|
||||||
|
case PlayerRace::HUMAN_MALE:
|
||||||
|
playSound(landHumanMaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::HUMAN_FEMALE:
|
||||||
|
playSound(landHumanFemaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::DWARF_MALE:
|
||||||
|
playSound(landDwarfMaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::DWARF_FEMALE:
|
||||||
|
playSound(landDwarfFemaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::NIGHT_ELF_MALE:
|
||||||
|
playSound(landNightElfMaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::NIGHT_ELF_FEMALE:
|
||||||
|
playSound(landNightElfFemaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::ORC_MALE:
|
||||||
|
playSound(landOrcMaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::ORC_FEMALE:
|
||||||
|
playSound(landOrcFemaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::TAUREN_MALE:
|
||||||
|
playSound(landTaurenMaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::TAUREN_FEMALE:
|
||||||
|
playSound(landTaurenFemaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::TROLL_MALE:
|
||||||
|
playSound(landTrollMaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::TROLL_FEMALE:
|
||||||
|
playSound(landTrollFemaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::UNDEAD_MALE:
|
||||||
|
playSound(landUndeadMaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::UNDEAD_FEMALE:
|
||||||
|
playSound(landUndeadFemaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::GNOME_MALE:
|
||||||
|
playSound(landGnomeMaleSounds_);
|
||||||
|
break;
|
||||||
|
case PlayerRace::GNOME_FEMALE:
|
||||||
|
playSound(landGnomeFemaleSounds_);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace audio
|
||||||
|
} // namespace wowee
|
||||||
Loading…
Add table
Add a link
Reference in a new issue