Save minor mode in GP highscores (#4620)
This commit is contained in:
@@ -1274,7 +1274,8 @@ Highscores* World::getGPHighscores() const
|
||||
Highscores* highscores = highscore_manager->getGPHighscores(RaceManager::get()->getNumNonGhostKarts(),
|
||||
RaceManager::get()->getDifficulty(),
|
||||
RaceManager::get()->getGrandPrix().getId(),
|
||||
RaceManager::get()->getGrandPrix().getReverseType());
|
||||
RaceManager::get()->getGrandPrix().getReverseType(),
|
||||
RaceManager::get()->getMinorMode());
|
||||
return highscores;
|
||||
}
|
||||
|
||||
|
||||
@@ -205,14 +205,15 @@ Highscores* HighscoreManager::getHighscores(const Highscores::HighscoreType &hig
|
||||
Highscores* HighscoreManager::getGPHighscores(int num_karts,
|
||||
const RaceManager::Difficulty difficulty,
|
||||
const std::string &trackName,
|
||||
GrandPrixData::GPReverseType reverse_type)
|
||||
GrandPrixData::GPReverseType reverse_type,
|
||||
RaceManager::MinorRaceModeType minor_mode)
|
||||
{
|
||||
Highscores *highscores = 0;
|
||||
|
||||
// See if we already have a record for this type
|
||||
for (auto& hs : m_all_scores)
|
||||
{
|
||||
if (hs->matches(num_karts, difficulty, trackName, reverse_type))
|
||||
if (hs->matches(num_karts, difficulty, trackName, reverse_type, minor_mode))
|
||||
{
|
||||
// we found one entry for this kind of race, return it
|
||||
return hs.get();
|
||||
@@ -221,7 +222,7 @@ Highscores* HighscoreManager::getGPHighscores(int num_karts,
|
||||
|
||||
// we don't have an entry for such a race currently. Create one.
|
||||
highscores = new Highscores(num_karts, difficulty,
|
||||
trackName, reverse_type);
|
||||
trackName, reverse_type, minor_mode);
|
||||
m_all_scores.push_back(std::unique_ptr<Highscores>(highscores));
|
||||
return highscores;
|
||||
} // get
|
||||
|
||||
@@ -63,7 +63,8 @@ public:
|
||||
Highscores *getGPHighscores(int num_karts,
|
||||
const RaceManager::Difficulty difficulty,
|
||||
const std::string &trackName,
|
||||
GrandPrixData::GPReverseType reverse_type);
|
||||
GrandPrixData::GPReverseType reverse_type,
|
||||
RaceManager::MinorRaceModeType minor_mode);
|
||||
// ------------------------------------------------------------------------
|
||||
void deleteHighscores(int i) { m_all_scores.erase
|
||||
(m_all_scores.begin() + i); }
|
||||
|
||||
@@ -45,6 +45,7 @@ Highscores::Highscores(const HighscoreType &highscore_type,
|
||||
m_number_of_laps = number_of_laps;
|
||||
m_reverse = reverse;
|
||||
m_gp_reverse_type = (int)GrandPrixData::GP_DEFAULT_REVERSE;
|
||||
m_gp_minor_mode = (int)RaceManager::MINOR_MODE_NORMAL_RACE;
|
||||
|
||||
for(int i=0; i<HIGHSCORE_LEN; i++)
|
||||
{
|
||||
@@ -56,7 +57,7 @@ Highscores::Highscores(const HighscoreType &highscore_type,
|
||||
// ----------------------------------------------------------------------------
|
||||
Highscores::Highscores(int num_karts, const RaceManager::Difficulty &difficulty,
|
||||
const std::string &track_name,
|
||||
const GrandPrixData::GPReverseType reverse_type)
|
||||
const GrandPrixData::GPReverseType reverse_type, RaceManager::MinorRaceModeType minor_mode)
|
||||
{
|
||||
m_track = track_name;
|
||||
m_highscore_type = "HST_GRANDPRIX";
|
||||
@@ -65,6 +66,7 @@ Highscores::Highscores(int num_karts, const RaceManager::Difficulty &difficulty,
|
||||
m_number_of_laps = 0;
|
||||
m_reverse = false;
|
||||
m_gp_reverse_type = reverse_type;
|
||||
m_gp_minor_mode = minor_mode;
|
||||
|
||||
for(int i=0; i<HIGHSCORE_LEN; i++)
|
||||
{
|
||||
@@ -83,6 +85,7 @@ Highscores::Highscores(const XMLNode &node)
|
||||
m_number_of_laps = 0;
|
||||
m_reverse = false;
|
||||
m_gp_reverse_type = (int)GrandPrixData::GP_DEFAULT_REVERSE;
|
||||
m_gp_minor_mode = (int)RaceManager::MINOR_MODE_NORMAL_RACE;
|
||||
|
||||
for(int i=0; i<HIGHSCORE_LEN; i++)
|
||||
{
|
||||
@@ -107,6 +110,7 @@ void Highscores::readEntry(const XMLNode &node)
|
||||
{
|
||||
m_number_of_laps = 0;
|
||||
node.get("reverse-type", &m_gp_reverse_type);
|
||||
node.get("minor-mode", &m_gp_minor_mode);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -160,7 +164,10 @@ void Highscores::writeEntry(UTFWriter &writer)
|
||||
if (m_highscore_type != "HST_GRANDPRIX")
|
||||
writer << " number-of-laps=\"" << m_number_of_laps << "\"\n";
|
||||
if (m_highscore_type == "HST_GRANDPRIX")
|
||||
writer << " reverse-type=\"" << m_gp_reverse_type << "\">\n";
|
||||
{
|
||||
writer << " reverse-type=\"" << m_gp_reverse_type << "\"\n";
|
||||
writer << " minor-mode=\"" << m_gp_minor_mode << "\">\n";
|
||||
}
|
||||
else
|
||||
writer << " reverse =\"" << m_reverse << "\">\n";
|
||||
|
||||
@@ -195,13 +202,14 @@ int Highscores::matches(const HighscoreType &highscore_type,
|
||||
int Highscores::matches(int num_karts,
|
||||
const RaceManager::Difficulty &difficulty,
|
||||
const std::string &track,
|
||||
const GrandPrixData::GPReverseType reverse_type)
|
||||
const GrandPrixData::GPReverseType reverse_type, RaceManager::MinorRaceModeType minor_mode)
|
||||
{
|
||||
return (m_highscore_type == "HST_GRANDPRIX" &&
|
||||
m_track == track &&
|
||||
m_difficulty == difficulty &&
|
||||
m_number_of_karts == num_karts &&
|
||||
m_gp_reverse_type == reverse_type );
|
||||
m_gp_reverse_type == reverse_type &&
|
||||
m_gp_minor_mode == minor_mode );
|
||||
}
|
||||
|
||||
int Highscores::findHighscorePosition(const std::string& kart_name,
|
||||
@@ -269,6 +277,7 @@ int Highscores::addGPData(const std::string& kart_name,
|
||||
m_difficulty = RaceManager::get()->getDifficulty();
|
||||
m_number_of_laps = 0;
|
||||
m_gp_reverse_type = RaceManager::get()->getGrandPrix().getReverseType();
|
||||
m_gp_minor_mode = RaceManager::get()->getMinorMode();
|
||||
m_name[position] = name;
|
||||
m_time[position] = time;
|
||||
m_kart_name[position] = kart_name;
|
||||
|
||||
@@ -61,6 +61,7 @@ public:
|
||||
int m_number_of_laps;
|
||||
bool m_reverse;
|
||||
int m_gp_reverse_type;
|
||||
int m_gp_minor_mode;
|
||||
|
||||
private:
|
||||
std::array<std::string, HIGHSCORE_LEN> m_kart_name;
|
||||
@@ -85,7 +86,7 @@ public:
|
||||
/** Constructor for grandprix highscores */
|
||||
Highscores (int num_karts, const RaceManager::Difficulty &difficulty,
|
||||
const std::string &trackName,
|
||||
const GrandPrixData::GPReverseType reverse_type);
|
||||
const GrandPrixData::GPReverseType reverse_type, RaceManager::MinorRaceModeType minor_mode);
|
||||
/** Creates an entry from a file
|
||||
*/
|
||||
Highscores (const XMLNode &node);
|
||||
@@ -103,7 +104,7 @@ public:
|
||||
int matches(int num_karts,
|
||||
const RaceManager::Difficulty &difficulty,
|
||||
const std::string &track,
|
||||
const GrandPrixData::GPReverseType reverse_type);
|
||||
const GrandPrixData::GPReverseType reverse_type, RaceManager::MinorRaceModeType minor_mode);
|
||||
// ------------------------------------------------------------------------
|
||||
int addData (const std::string& kart_name,
|
||||
const irr::core::stringw& name, const float time);
|
||||
|
||||
@@ -472,7 +472,8 @@ void GPInfoScreen::updateHighscores()
|
||||
RaceManager::get()->getNumberOfKarts(),
|
||||
RaceManager::get()->getDifficulty(),
|
||||
m_gp.getId(),
|
||||
getReverse());
|
||||
getReverse(),
|
||||
RaceManager::get()->getMinorMode());
|
||||
m_highscore_list->clear();
|
||||
int count = highscores->getNumberEntries();
|
||||
std::string kart;
|
||||
|
||||
@@ -143,7 +143,11 @@ void HighScoreSelection::beforeAddingWidget()
|
||||
{
|
||||
m_high_scores_list_widget->addColumn(_C("column_name", "Number of karts"), 4);
|
||||
|
||||
if (m_major_mode != RaceManager::MAJOR_MODE_GRAND_PRIX)
|
||||
if (m_major_mode == RaceManager::MAJOR_MODE_GRAND_PRIX)
|
||||
{
|
||||
m_high_scores_list_widget->addColumn(_("Game mode"),3);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_high_scores_list_widget->addColumn(_C("column_name", "Laps"), 3);
|
||||
}
|
||||
@@ -244,6 +248,8 @@ void HighScoreSelection::loadList()
|
||||
}
|
||||
if (m_major_mode == RaceManager::MAJOR_MODE_GRAND_PRIX)
|
||||
{
|
||||
row.push_back(GUIEngine::ListWidget::ListCell(
|
||||
RaceManager::getNameOf((RaceManager::MinorRaceModeType)hs->m_gp_minor_mode), -1, 3, true));
|
||||
row.push_back(GUIEngine::ListWidget::ListCell(
|
||||
GrandPrixData::reverseTypeToString((GrandPrixData::GPReverseType)hs->m_gp_reverse_type), -1, 3, true));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user