From bfc3182ed3a27afed506a885cdbcbfc524713f1e Mon Sep 17 00:00:00 2001 From: MihailRis Date: Sat, 9 Mar 2024 02:10:19 +0300 Subject: [PATCH] sounds variability + first step fix --- src/audio/audio.cpp | 6 ++++++ src/logic/LevelController.cpp | 4 ++++ src/logic/LevelController.h | 20 +++++++++++--------- src/logic/PlayerController.cpp | 2 ++ 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/audio/audio.cpp b/src/audio/audio.cpp index b5e61b15..9280d882 100644 --- a/src/audio/audio.cpp +++ b/src/audio/audio.cpp @@ -249,6 +249,12 @@ speakerid_t audio::play( int priority, int channel ) { + if (!sound->variants.empty()) { + size_t index = rand() % (sound->variants.size() + 1); + if (index < sound->variants.size()) { + sound = sound->variants.at(index).get(); + } + } Speaker* speaker = sound->newInstance(priority, channel); if (speaker == nullptr) { remove_lower_priority_speaker(priority); diff --git a/src/logic/LevelController.cpp b/src/logic/LevelController.cpp index 4e938dec..3839928d 100644 --- a/src/logic/LevelController.cpp +++ b/src/logic/LevelController.cpp @@ -57,3 +57,7 @@ Level* LevelController::getLevel() { Player* LevelController::getPlayer() { return player->getPlayer(); } + +PlayerController* LevelController::getPlayerController() { + return player.get(); +} diff --git a/src/logic/LevelController.h b/src/logic/LevelController.h index d70d49a0..e6fefd29 100644 --- a/src/logic/LevelController.h +++ b/src/logic/LevelController.h @@ -11,7 +11,7 @@ class Level; class Player; -/* LevelController manages other controllers */ +/// @brief LevelController manages other controllers class LevelController { EngineSettings& settings; std::unique_ptr level; @@ -22,20 +22,22 @@ class LevelController { public: LevelController(EngineSettings& settings, Level* level); - /* - @param delta time elapsed since the last update - @param input is user input allowed to be handled - @param pause is world and player simulation paused - */ - void update(float delta, - bool input, - bool pause); + /// @param delta time elapsed since the last update + /// @param input is user input allowed to be handled + /// @param pause is world and player simulation paused + void update( + float delta, + bool input, + bool pause + ); void onWorldSave(); void onWorldQuit(); Level* getLevel(); Player* getPlayer(); + + PlayerController* getPlayerController(); }; #endif // LOGIC_LEVEL_CONTROLLER_H_ diff --git a/src/logic/PlayerController.cpp b/src/logic/PlayerController.cpp index 8d5c3add..adce1ba4 100644 --- a/src/logic/PlayerController.cpp +++ b/src/logic/PlayerController.cpp @@ -226,6 +226,8 @@ void PlayerController::updateFootsteps(float delta) { stepsTimer = fmod(stepsTimer, M_PI); onFootstep(); } + } else { + stepsTimer = M_PI; } }