Add support for challenges in reverse mode

This commit is contained in:
Alayan 2018-09-19 18:13:42 +02:00
parent 63ba99457e
commit 6af8f70b48
3 changed files with 17 additions and 2 deletions

View File

@ -39,6 +39,7 @@ ChallengeData::ChallengeData(const std::string& filename)
m_mode = CM_SINGLE_RACE;
m_minor = RaceManager::MINOR_MODE_NORMAL_RACE;
m_num_laps = -1;
m_reverse = false;
m_track_id = "";
m_gp_id = "";
m_version = 0;
@ -182,6 +183,12 @@ ChallengeData::ChallengeData(const std::string& filename)
{
error("laps");
}
if (!track_node->get("reverse", &m_reverse))
{
Log::warn("Challenge Data",
"No reverse mode specified for challenge %s, defaulting to normal",
filename.c_str());
}
}
else if (gp_node != NULL)
{
@ -283,6 +290,10 @@ const irr::core::stringw ChallengeData::getChallengeDescription() const
// Follow the leader mode:
description = _("Follow the leader");
}
if (m_reverse == true)
{
description += _("Reverse");
}
}
return description;
} // getChallengeDescription
@ -397,6 +408,7 @@ void ChallengeData::setRace(RaceManager::Difficulty d) const
race_manager->setMinorMode(m_minor);
race_manager->setTrack(m_track_id);
race_manager->setNumLaps(m_num_laps);
race_manager->setReverseTrack(m_reverse);
race_manager->setNumKarts(m_default_num_karts[d]);
race_manager->setNumPlayers(1);
race_manager->setCoinTarget(m_energy[d]);
@ -460,7 +472,7 @@ bool ChallengeData::isChallengeFulfilled() const
if (kart->isEliminated() ) return false;
if (track_name != m_track_id ) return false;
if ((int)world->getNumKarts() < m_default_num_karts[d] ) return false;
if ((int)world->getNumKarts() < m_default_num_karts[d] ) return false;
if (m_energy[d] > 0 && kart->getEnergy() < m_energy[d] ) return false;
if (m_position[d] > 0 && kart->getPosition() > m_position[d]) return false;

View File

@ -94,6 +94,7 @@ private:
RaceManager::MinorRaceModeType m_minor;
int m_num_laps;
bool m_reverse;
int m_position[RaceManager::DIFFICULTY_COUNT];
int m_default_num_karts[RaceManager::DIFFICULTY_COUNT];
std::string m_ai_kart_ident[RaceManager::DIFFICULTY_COUNT];
@ -184,6 +185,9 @@ public:
return m_num_laps;
} // getNumLaps
// ------------------------------------------------------------------------
/** Return reverse mode. */
bool getReverse() const { return m_reverse; }
// ------------------------------------------------------------------------
/** Get number of required trophies to start this challenge */
int getNumTrophies() const { return m_num_trophies; }

View File

@ -211,7 +211,6 @@ GUIEngine::EventPropagation SelectChallengeDialog::processEvent(const std::strin
// Set up race manager appropriately
race_manager->setNumPlayers(1);
race_manager->setPlayerKart(0, UserConfigParams::m_default_kart);
race_manager->setReverseTrack(false);
//int id = StateManager::get()->createActivePlayer( unlock_manager->getCurrentPlayer(), device );
input_manager->getDeviceManager()->setSinglePlayer( StateManager::get()->getActivePlayer(0) );