From 1ce296aa7f0e73e5b72d29ba1141602fbbc728f7 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 24 Oct 2020 18:54:46 +0200 Subject: [PATCH] Use fallback values for region sounds and fix probability --- apps/openmw/mwsound/regionsoundselector.cpp | 16 ++++++++++++---- apps/openmw/mwsound/regionsoundselector.hpp | 4 ++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/apps/openmw/mwsound/regionsoundselector.cpp b/apps/openmw/mwsound/regionsoundselector.cpp index ac5f66721d..55afd6ab65 100644 --- a/apps/openmw/mwsound/regionsoundselector.cpp +++ b/apps/openmw/mwsound/regionsoundselector.cpp @@ -1,5 +1,6 @@ #include "regionsoundselector.hpp" +#include #include #include @@ -18,6 +19,12 @@ namespace MWSound } } + RegionSoundSelector::RegionSoundSelector() + { + mMinTimeBetweenSounds = Fallback::Map::getFloat("Weather_Minimum_Time_Between_Environmental_Sounds"); + mMaxTimeBetweenSounds = Fallback::Map::getFloat("Weather_Maximum_Time_Between_Environmental_Sounds"); + } + boost::optional RegionSoundSelector::getNextRandom(float duration, const std::string& regionName, const MWBase::World& world) { @@ -27,9 +34,7 @@ namespace MWSound return {}; const float a = Misc::Rng::rollClosedProbability(); - // NOTE: We should use the "Minimum Time Between Environmental Sounds" and - // "Maximum Time Between Environmental Sounds" fallback settings here. - mTimeToNextEnvSound = 5.0f * a + 15.0f * (1.0f - a); + mTimeToNextEnvSound = mMinTimeBetweenSounds + (mMaxTimeBetweenSounds - mMinTimeBetweenSounds) * a; mTimePassed = 0; if (mLastRegionName != regionName) @@ -50,7 +55,7 @@ namespace MWSound return {}; } - const int r = Misc::Rng::rollDice(mSumChance); + const int r = Misc::Rng::rollDice(std::max(mSumChance, 100)); int pos = 0; const auto isSelected = [&] (const ESM::Region::SoundRef& sound) @@ -66,6 +71,9 @@ namespace MWSound if (it == region->mSoundList.end()) return {}; + // TODO + // mTimeToNextEnvSound += soundDuration + return it->mSound; } } diff --git a/apps/openmw/mwsound/regionsoundselector.hpp b/apps/openmw/mwsound/regionsoundselector.hpp index 00a2d5ca85..13510a0f67 100644 --- a/apps/openmw/mwsound/regionsoundselector.hpp +++ b/apps/openmw/mwsound/regionsoundselector.hpp @@ -18,11 +18,15 @@ namespace MWSound boost::optional getNextRandom(float duration, const std::string& regionName, const MWBase::World& world); + RegionSoundSelector(); + private: float mTimeToNextEnvSound = 0.0f; int mSumChance = 0; std::string mLastRegionName; float mTimePassed = 0.0; + float mMinTimeBetweenSounds; + float mMaxTimeBetweenSounds; }; }