From 6e83c825ca6df896f474122a52d29416b46a1845 Mon Sep 17 00:00:00 2001 From: Kuba Date: Fri, 30 Apr 2021 19:27:18 +0200 Subject: [PATCH] Added sound when time is less than 5 s in time based challenges (#4523) --- src/modes/world.cpp | 29 +++++++++++++++++++++++++++++ src/modes/world.hpp | 1 + src/states_screens/race_gui.cpp | 12 ++++++++++-- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/modes/world.cpp b/src/modes/world.cpp index 734591b34..150e0de81 100644 --- a/src/modes/world.cpp +++ b/src/modes/world.cpp @@ -942,6 +942,34 @@ void World::moveKartTo(AbstractKart* kart, const btTransform &transform) } // moveKartTo +// ---------------------------------------------------------------------------- +void World::updateTimeTargetSound() +{ + if (RaceManager::get()->hasTimeTarget() && !RewindManager::get()->isRewinding()) + { + float time_elapsed = getTime(); + float time_target = RaceManager::get()->getTimeTarget(); + if (RaceManager::get()->getMinorMode() == RaceManager::MINOR_MODE_SOCCER || + RaceManager::get()->getMinorMode() == RaceManager::MINOR_MODE_FREE_FOR_ALL || + RaceManager::get()->getMinorMode() == RaceManager::MINOR_MODE_CAPTURE_THE_FLAG) + { + if (time_elapsed <= 5 && getTimeTicks() % stk_config->time2Ticks(1.0f) == 0 && + !World::getWorld()->isRaceOver()) + { + SFXManager::get()->quickSound("pre_start_race"); + } + } + else + { + if (time_target - time_elapsed <= 5 && stk_config->time2Ticks(1.0f) == 0 && + time_target - time_elapsed > 0) + { + SFXManager::get()->quickSound("pre_start_race"); + } + } + } +} // updateTimeTargetSound + // ---------------------------------------------------------------------------- void World::schedulePause(Phase phase) { @@ -1202,6 +1230,7 @@ void World::update(int ticks) PROFILER_POP_CPU_MARKER(); PROFILER_POP_CPU_MARKER(); + updateTimeTargetSound(); #ifdef DEBUG assert(m_magic_number == 0xB01D6543); diff --git a/src/modes/world.hpp b/src/modes/world.hpp index c481c9d76..2dbbcccae 100644 --- a/src/modes/world.hpp +++ b/src/modes/world.hpp @@ -326,6 +326,7 @@ public: AbstractKart* getLocalPlayerKart(unsigned int n) const; virtual const btTransform &getStartTransform(int index); void moveKartTo(AbstractKart* kart, const btTransform &t); + void updateTimeTargetSound(); // ------------------------------------------------------------------------ /** Returns a pointer to the race gui. */ RaceGUIBase *getRaceGUI() const { return m_race_gui;} diff --git a/src/states_screens/race_gui.cpp b/src/states_screens/race_gui.cpp index 4136932ad..36ab2768b 100644 --- a/src/states_screens/race_gui.cpp +++ b/src/states_screens/race_gui.cpp @@ -428,7 +428,7 @@ void RaceGUI::drawGlobalTimer() float elapsed_time = World::getWorld()->getTime(); if (!RaceManager::get()->hasTimeTarget() || - RaceManager::get()->getMinorMode() ==RaceManager::MINOR_MODE_SOCCER || + RaceManager::get()->getMinorMode() == RaceManager::MINOR_MODE_SOCCER || RaceManager::get()->getMinorMode() == RaceManager::MINOR_MODE_FREE_FOR_ALL || RaceManager::get()->getMinorMode() == RaceManager::MINOR_MODE_CAPTURE_THE_FLAG) { @@ -440,6 +440,8 @@ void RaceGUI::drawGlobalTimer() float time_target = RaceManager::get()->getTimeTarget(); if (elapsed_time < time_target) { + if(time_target-elapsed_time <= 5) + time_color = video::SColor(255,255,255,0); sw = core::stringw ( StringUtils::timeToString(time_target - elapsed_time).c_str()); } @@ -452,8 +454,14 @@ void RaceGUI::drawGlobalTimer() time_color = video::SColor(255,255,0,0); use_digit_font = false; } + + } + if(elapsed_time <= 5 && RaceManager::get()->hasTimeTarget() && (RaceManager::get()->getMinorMode() == RaceManager::MINOR_MODE_SOCCER || + RaceManager::get()->getMinorMode() == RaceManager::MINOR_MODE_FREE_FOR_ALL || + RaceManager::get()->getMinorMode() == RaceManager::MINOR_MODE_CAPTURE_THE_FLAG)) + { + time_color = video::SColor(255,255,255,0); } - core::rect pos(irr_driver->getActualScreenSize().Width - dist_from_right, irr_driver->getActualScreenSize().Height*2/100, irr_driver->getActualScreenSize().Width,