Make SFX depends on race result too
Currently use gp_end for test
This commit is contained in:
parent
37da8423f8
commit
d4e312885a
@ -867,7 +867,7 @@ void Kart::finishedRace(float time)
|
|||||||
race_manager->getMinorMode() == RaceManager::MINOR_MODE_EASTER_EGG)
|
race_manager->getMinorMode() == RaceManager::MINOR_MODE_EASTER_EGG)
|
||||||
{
|
{
|
||||||
// Save for music handling in race result gui
|
// Save for music handling in race result gui
|
||||||
m_race_result = race_manager->getKartResult(this);
|
setRaceResult();
|
||||||
setController(new EndController(this, m_controller->getPlayer(),
|
setController(new EndController(this, m_controller->getPlayer(),
|
||||||
m_controller));
|
m_controller));
|
||||||
|
|
||||||
@ -879,6 +879,62 @@ void Kart::finishedRace(float time)
|
|||||||
}
|
}
|
||||||
} // finishedRace
|
} // finishedRace
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
void Kart::setRaceResult()
|
||||||
|
{
|
||||||
|
if (race_manager->getMinorMode() == RaceManager::MINOR_MODE_NORMAL_RACE ||
|
||||||
|
race_manager->getMinorMode() == RaceManager::MINOR_MODE_TIME_TRIAL)
|
||||||
|
{
|
||||||
|
// TODO NetworkController?
|
||||||
|
if (this->getController()->isPlayerController())
|
||||||
|
{
|
||||||
|
PlayerProfile *player = PlayerManager::getCurrentPlayer();
|
||||||
|
const ChallengeStatus *challenge = player->getCurrentChallengeStatus();
|
||||||
|
// In case of a GP challenge don't make the end animation depend
|
||||||
|
// on if the challenge is fulfilled
|
||||||
|
if (challenge && !challenge->getData()->isGrandPrix())
|
||||||
|
{
|
||||||
|
if (challenge->getData()->isChallengeFulfilled())
|
||||||
|
m_race_result = true;
|
||||||
|
else
|
||||||
|
m_race_result = false;
|
||||||
|
}
|
||||||
|
else if (this->getPosition() <= 0.5f*race_manager->getNumberOfKarts() ||
|
||||||
|
this->getPosition() == 1)
|
||||||
|
m_race_result = true;
|
||||||
|
else
|
||||||
|
m_race_result = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (this->getPosition() <= 0.5f*race_manager->getNumberOfKarts() ||
|
||||||
|
this->getPosition() == 1)
|
||||||
|
m_race_result = true;
|
||||||
|
else
|
||||||
|
m_race_result = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (race_manager->getMinorMode() == RaceManager::MINOR_MODE_FOLLOW_LEADER ||
|
||||||
|
race_manager->getMinorMode() == RaceManager::MINOR_MODE_3_STRIKES)
|
||||||
|
{
|
||||||
|
// the kart wins if it isn't eliminated
|
||||||
|
m_race_result = !this->isEliminated();
|
||||||
|
}
|
||||||
|
else if (race_manager->getMinorMode() == RaceManager::MINOR_MODE_SOCCER)
|
||||||
|
{
|
||||||
|
// TODO complete together with soccer ai!
|
||||||
|
m_race_result = true;
|
||||||
|
}
|
||||||
|
else if (race_manager->getMinorMode() == RaceManager::MINOR_MODE_EASTER_EGG)
|
||||||
|
{
|
||||||
|
// Easter egg mode only has one player, so always win
|
||||||
|
m_race_result = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
Log::warn("Kart", "Unknown game mode given.");
|
||||||
|
|
||||||
|
} // setKartResult
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
/** Called when an item is collected. It will either adjust the collected
|
/** Called when an item is collected. It will either adjust the collected
|
||||||
* energy, or update the attachment or powerup for this kart.
|
* energy, or update the attachment or powerup for this kart.
|
||||||
|
@ -444,6 +444,9 @@ public:
|
|||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
/** Returns whether this kart wins or loses. */
|
/** Returns whether this kart wins or loses. */
|
||||||
virtual bool getRaceResult() const { return m_race_result; }
|
virtual bool getRaceResult() const { return m_race_result; }
|
||||||
|
// ------------------------------------------------------------------------
|
||||||
|
/** Set this kart race result. */
|
||||||
|
void setRaceResult();
|
||||||
|
|
||||||
}; // Kart
|
}; // Kart
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
#include "challenges/challenge_status.hpp"
|
|
||||||
#include "challenges/unlock_manager.hpp"
|
#include "challenges/unlock_manager.hpp"
|
||||||
#include "config/player_manager.hpp"
|
#include "config/player_manager.hpp"
|
||||||
#include "config/saved_grand_prix.hpp"
|
#include "config/saved_grand_prix.hpp"
|
||||||
@ -890,59 +889,4 @@ void RaceManager::setupPlayerKartInfo()
|
|||||||
computeRandomKartList();
|
computeRandomKartList();
|
||||||
} // setupPlayerKartInfo
|
} // setupPlayerKartInfo
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
|
||||||
bool RaceManager::getKartResult(AbstractKart* kart) const
|
|
||||||
{
|
|
||||||
if (race_manager->getMinorMode() == RaceManager::MINOR_MODE_NORMAL_RACE ||
|
|
||||||
race_manager->getMinorMode() == RaceManager::MINOR_MODE_TIME_TRIAL)
|
|
||||||
{
|
|
||||||
// TODO NetworkController?
|
|
||||||
if (kart->getController()->isPlayerController())
|
|
||||||
{
|
|
||||||
PlayerProfile *player = PlayerManager::getCurrentPlayer();
|
|
||||||
const ChallengeStatus *challenge = player->getCurrentChallengeStatus();
|
|
||||||
// In case of a GP challenge don't make the end animation depend
|
|
||||||
// on if the challenge is fulfilled
|
|
||||||
if (challenge && !challenge->getData()->isGrandPrix())
|
|
||||||
{
|
|
||||||
if (challenge->getData()->isChallengeFulfilled())
|
|
||||||
return true;
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else if (kart->getPosition() <= 0.5f*race_manager->getNumberOfKarts() ||
|
|
||||||
kart->getPosition() == 1)
|
|
||||||
return true;
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (kart->getPosition() <= 0.5f*race_manager->getNumberOfKarts() ||
|
|
||||||
kart->getPosition() == 1)
|
|
||||||
return true;
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (race_manager->getMinorMode() == RaceManager::MINOR_MODE_FOLLOW_LEADER ||
|
|
||||||
race_manager->getMinorMode() == RaceManager::MINOR_MODE_3_STRIKES)
|
|
||||||
{
|
|
||||||
// the kart wins if it isn't eliminated
|
|
||||||
return !kart->isEliminated();
|
|
||||||
}
|
|
||||||
else if (race_manager->getMinorMode() == RaceManager::MINOR_MODE_SOCCER)
|
|
||||||
{
|
|
||||||
// TODO complete together with soccer ai!
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (race_manager->getMinorMode() == RaceManager::MINOR_MODE_EASTER_EGG)
|
|
||||||
{
|
|
||||||
// Easter egg mode only has one player, so always win
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true; // Fallback
|
|
||||||
} // getKartResult
|
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
@ -774,8 +774,6 @@ public:
|
|||||||
{
|
{
|
||||||
return m_kart_last_position_on_overworld;
|
return m_kart_last_position_on_overworld;
|
||||||
}
|
}
|
||||||
// ------------------------------------------------------------------------
|
|
||||||
bool getKartResult(AbstractKart* kart) const;
|
|
||||||
|
|
||||||
}; // RaceManager
|
}; // RaceManager
|
||||||
|
|
||||||
|
@ -83,7 +83,6 @@ void RaceResultGUI::init()
|
|||||||
getWidget("bottom")->setVisible(false);
|
getWidget("bottom")->setVisible(false);
|
||||||
|
|
||||||
music_manager->stopMusic();
|
music_manager->stopMusic();
|
||||||
m_finish_sound = SFXManager::get()->quickSound("race_finish");
|
|
||||||
|
|
||||||
bool human_win = true;
|
bool human_win = true;
|
||||||
unsigned int num_karts = race_manager->getNumberOfKarts();
|
unsigned int num_karts = race_manager->getNumberOfKarts();
|
||||||
@ -94,9 +93,13 @@ void RaceResultGUI::init()
|
|||||||
human_win = human_win && kart->getRaceResult();
|
human_win = human_win && kart->getRaceResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string path = (human_win ? //TODO proper win / lose music
|
m_finish_sound = SFXManager::get()->quickSound(
|
||||||
file_manager->getAsset(FileManager::MUSIC, "Boom_boom_boom.music") :
|
human_win ? "gp_end" : "race_finish");
|
||||||
file_manager->getAsset(FileManager::MUSIC, "race_summary.music"));
|
|
||||||
|
//std::string path = (human_win ? Different result music too later
|
||||||
|
// file_manager->getAsset(FileManager::MUSIC, "race_summary.music") :
|
||||||
|
// file_manager->getAsset(FileManager::MUSIC, "race_summary.music"));
|
||||||
|
std::string path = file_manager->getAsset(FileManager::MUSIC, "race_summary.music");
|
||||||
m_race_over_music = music_manager->getMusicInformation(path);
|
m_race_over_music = music_manager->getMusicInformation(path);
|
||||||
|
|
||||||
if (!m_finish_sound)
|
if (!m_finish_sound)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user