Save minor mode in GP highscores (#4620)

This commit is contained in:
Kuba
2021-09-21 04:06:09 +02:00
committed by GitHub
parent 61f513e200
commit 6ee1b398e9
7 changed files with 33 additions and 13 deletions

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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); }

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;

View File

@@ -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));
}