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)
|
||||
{
|
||||
// Save for music handling in race result gui
|
||||
m_race_result = race_manager->getKartResult(this);
|
||||
setRaceResult();
|
||||
setController(new EndController(this, m_controller->getPlayer(),
|
||||
m_controller));
|
||||
|
||||
@ -879,6 +879,62 @@ void Kart::finishedRace(float time)
|
||||
}
|
||||
} // 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
|
||||
* energy, or update the attachment or powerup for this kart.
|
||||
|
@ -444,6 +444,9 @@ public:
|
||||
// ------------------------------------------------------------------------
|
||||
/** Returns whether this kart wins or loses. */
|
||||
virtual bool getRaceResult() const { return m_race_result; }
|
||||
// ------------------------------------------------------------------------
|
||||
/** Set this kart race result. */
|
||||
void setRaceResult();
|
||||
|
||||
}; // Kart
|
||||
|
||||
|
@ -21,7 +21,6 @@
|
||||
#include <iostream>
|
||||
#include <algorithm>
|
||||
|
||||
#include "challenges/challenge_status.hpp"
|
||||
#include "challenges/unlock_manager.hpp"
|
||||
#include "config/player_manager.hpp"
|
||||
#include "config/saved_grand_prix.hpp"
|
||||
@ -890,59 +889,4 @@ void RaceManager::setupPlayerKartInfo()
|
||||
computeRandomKartList();
|
||||
} // 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 */
|
||||
|
@ -774,8 +774,6 @@ public:
|
||||
{
|
||||
return m_kart_last_position_on_overworld;
|
||||
}
|
||||
// ------------------------------------------------------------------------
|
||||
bool getKartResult(AbstractKart* kart) const;
|
||||
|
||||
}; // RaceManager
|
||||
|
||||
|
@ -83,7 +83,6 @@ void RaceResultGUI::init()
|
||||
getWidget("bottom")->setVisible(false);
|
||||
|
||||
music_manager->stopMusic();
|
||||
m_finish_sound = SFXManager::get()->quickSound("race_finish");
|
||||
|
||||
bool human_win = true;
|
||||
unsigned int num_karts = race_manager->getNumberOfKarts();
|
||||
@ -94,9 +93,13 @@ void RaceResultGUI::init()
|
||||
human_win = human_win && kart->getRaceResult();
|
||||
}
|
||||
|
||||
std::string path = (human_win ? //TODO proper win / lose music
|
||||
file_manager->getAsset(FileManager::MUSIC, "Boom_boom_boom.music") :
|
||||
file_manager->getAsset(FileManager::MUSIC, "race_summary.music"));
|
||||
m_finish_sound = SFXManager::get()->quickSound(
|
||||
human_win ? "gp_end" : "race_finish");
|
||||
|
||||
//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);
|
||||
|
||||
if (!m_finish_sound)
|
||||
|
Loading…
x
Reference in New Issue
Block a user