mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
Add dedicated snort and whinny idle sounds with longer intervals
Created specific idle sound pool using only horse snorts and whinnies. Re-enabled idle sounds with much longer interval (20-40 seconds). Changes: - Added horseIdleSounds_ pool: mHorseStand3A (snort) + mHorseAggroA (whinny) - Updated playIdleSound() to use dedicated pool instead of mixed breath sounds - Increased idle sound interval from 8-15s to 20-40s (less frequent) - Removed flying mount idle sounds (too aggressive) - Increased volume slightly (0.35x) for better audibility
This commit is contained in:
parent
8106347a82
commit
3c58492c8f
22 changed files with 36 additions and 25 deletions
|
|
@ -128,6 +128,19 @@ void MountSoundManager::loadMountSounds() {
|
|||
}
|
||||
}
|
||||
|
||||
// Ground mount idle ambient (snorts and whinnies only)
|
||||
std::vector<std::string> horseIdlePaths = {
|
||||
"Sound\\Creature\\Horse\\mHorseStand3A.wav", // Snort
|
||||
"Sound\\Creature\\Horse\\mHorseAggroA.wav", // Whinny
|
||||
};
|
||||
|
||||
for (const auto& path : horseIdlePaths) {
|
||||
MountSample sample;
|
||||
if (loadSound(path, sample)) {
|
||||
horseIdleSounds_.push_back(std::move(sample));
|
||||
}
|
||||
}
|
||||
|
||||
if (!wingFlapSounds_.empty()) {
|
||||
LOG_INFO("Loaded ", wingFlapSounds_.size(), " wing flap sounds");
|
||||
}
|
||||
|
|
@ -146,6 +159,9 @@ void MountSoundManager::loadMountSounds() {
|
|||
if (!horseLandSounds_.empty()) {
|
||||
LOG_INFO("Loaded ", horseLandSounds_.size(), " horse land sounds");
|
||||
}
|
||||
if (!horseIdleSounds_.empty()) {
|
||||
LOG_INFO("Loaded ", horseIdleSounds_.size(), " horse idle sounds (snorts/whinnies)");
|
||||
}
|
||||
}
|
||||
|
||||
bool MountSoundManager::loadSound(const std::string& path, MountSample& sample) {
|
||||
|
|
@ -305,22 +321,16 @@ void MountSoundManager::playLandSound() {
|
|||
void MountSoundManager::playIdleSound() {
|
||||
if (!mounted_ || moving_) return;
|
||||
|
||||
// Ambient idle sounds (snort, breath, soft neigh)
|
||||
if (currentMountType_ == MountType::GROUND && !horseBreathSounds_.empty()) {
|
||||
// Ambient idle sounds (snorts and whinnies only for ground mounts)
|
||||
if (currentMountType_ == MountType::GROUND && !horseIdleSounds_.empty()) {
|
||||
static std::mt19937 rng(std::random_device{}());
|
||||
std::uniform_int_distribution<size_t> dist(0, horseBreathSounds_.size() - 1);
|
||||
const auto& sample = horseBreathSounds_[dist(rng)];
|
||||
std::uniform_int_distribution<size_t> dist(0, horseIdleSounds_.size() - 1);
|
||||
const auto& sample = horseIdleSounds_[dist(rng)];
|
||||
if (!sample.data.empty()) {
|
||||
AudioEngine::instance().playSound2D(sample.data, 0.3f * volumeScale_, 0.95f);
|
||||
}
|
||||
} else if (currentMountType_ == MountType::FLYING && !wingIdleSounds_.empty()) {
|
||||
static std::mt19937 rng(std::random_device{}());
|
||||
std::uniform_int_distribution<size_t> dist(0, wingIdleSounds_.size() - 1);
|
||||
const auto& sample = wingIdleSounds_[dist(rng)];
|
||||
if (!sample.data.empty()) {
|
||||
AudioEngine::instance().playSound2D(sample.data, 0.25f * volumeScale_, 1.0f);
|
||||
AudioEngine::instance().playSound2D(sample.data, 0.35f * volumeScale_, 0.95f);
|
||||
}
|
||||
}
|
||||
// No idle sounds for flying mounts (wing sounds were too aggressive)
|
||||
}
|
||||
|
||||
MountType MountSoundManager::detectMountType(uint32_t creatureDisplayId) const {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue