From 8bfe048f0fc21134495fba1c4f1aed4147a39522 Mon Sep 17 00:00:00 2001 From: Deve Date: Wed, 21 Oct 2015 22:42:59 +0200 Subject: [PATCH] Remember race type in saved GP. Continue standard race as follow the leader and vice versa doesn't have a sense. --- src/config/saved_grand_prix.cpp | 4 ++++ src/config/saved_grand_prix.hpp | 10 ++++++++++ src/race/race_manager.cpp | 3 +++ src/states_screens/dialogs/gp_info_dialog.cpp | 1 + src/states_screens/gp_info_screen.cpp | 1 + 5 files changed, 19 insertions(+) diff --git a/src/config/saved_grand_prix.cpp b/src/config/saved_grand_prix.cpp index ffaf84dcc..5ee5b5371 100644 --- a/src/config/saved_grand_prix.cpp +++ b/src/config/saved_grand_prix.cpp @@ -65,6 +65,7 @@ SavedGrandPrix::SavedGPKart::SavedGPKart(GroupUserConfigParam * group, // ============================================================================ SavedGrandPrix::SavedGrandPrix(unsigned int player_id, const std::string &gp_id, + RaceManager::MinorRaceModeType race_type, RaceManager::Difficulty difficulty, int player_karts, int last_track, @@ -74,6 +75,7 @@ SavedGrandPrix::SavedGrandPrix(unsigned int player_id, "Represents the saved state of a GP"), m_player_id(player_id, "player_id", &m_savedgp_group), m_gp_id(gp_id.c_str(), "gp_id", &m_savedgp_group), + m_race_type((int)race_type,"race_type", &m_savedgp_group), m_difficulty((int)difficulty,"difficulty", &m_savedgp_group), m_player_karts(player_karts,"player_karts", &m_savedgp_group), m_next_track(last_track,"last_track", &m_savedgp_group), @@ -98,6 +100,7 @@ SavedGrandPrix::SavedGrandPrix(const XMLNode* node) "Represents the saved state of a GP"), m_player_id (0, "player_id", &m_savedgp_group), m_gp_id ("-", "gp_id", &m_savedgp_group), + m_race_type (0,"race_type", &m_savedgp_group), m_difficulty (0,"difficulty", &m_savedgp_group), m_player_karts(0,"player_karts", &m_savedgp_group), m_next_track (0,"last_track", &m_savedgp_group), @@ -106,6 +109,7 @@ SavedGrandPrix::SavedGrandPrix(const XMLNode* node) //m_player_group.findYourDataInAChildOf(node); m_player_id. findYourDataInAnAttributeOf(node); m_gp_id. findYourDataInAnAttributeOf(node); + m_race_type. findYourDataInAnAttributeOf(node); m_difficulty. findYourDataInAnAttributeOf(node); m_player_karts.findYourDataInAnAttributeOf(node); m_next_track. findYourDataInAnAttributeOf(node); diff --git a/src/config/saved_grand_prix.hpp b/src/config/saved_grand_prix.hpp index effb10190..12b0e3511 100644 --- a/src/config/saved_grand_prix.hpp +++ b/src/config/saved_grand_prix.hpp @@ -66,6 +66,9 @@ protected: /** Identifier of this GP. */ StringUserConfigParam m_gp_id; + + /** Race type at which this GP was run. */ + IntUserConfigParam m_race_type; /** Difficulty at which this GP was run. */ IntUserConfigParam m_difficulty; @@ -88,6 +91,7 @@ public: */ SavedGrandPrix(unsigned int player_id, const std::string &gp_id, + RaceManager::MinorRaceModeType race_type, RaceManager::Difficulty difficulty, int player_karts, int last_track, @@ -110,6 +114,10 @@ public: /** Returns the grand prix id. */ std::string getGPID() const { return m_gp_id; } + // ------------------------------------------------------------------------ + /** Returns the race type of this GP. */ + int getRaceType() const { return m_race_type; } + // ------------------------------------------------------------------------ /** Returns the difficulty of this GP. */ int getDifficulty() const { return m_difficulty; } @@ -148,12 +156,14 @@ public: * NULL if no matching GP was found. */ static SavedGrandPrix* getSavedGP(unsigned int player, const std::string &gpid, + RaceManager::MinorRaceModeType race_type, const unsigned int number_of_players) { for (unsigned int n=0; ngetGPID() == gpid && + gp->getRaceType() == race_type && gp->getPlayerID() == player && gp->getPlayerKarts() == (int)number_of_players) return gp; diff --git a/src/race/race_manager.cpp b/src/race/race_manager.cpp index 924a1c98d..e1588d7ec 100644 --- a/src/race/race_manager.cpp +++ b/src/race/race_manager.cpp @@ -305,6 +305,7 @@ void RaceManager::startNew(bool from_overworld) ->getActivePlayerProfile(0) ->getUniqueID(), m_grand_prix.getId(), + m_minor_mode, m_player_karts.size()); // Saved GP only in offline mode @@ -398,6 +399,7 @@ void RaceManager::startNew(bool from_overworld) ->getActivePlayerProfile(0) ->getUniqueID(), m_grand_prix.getId(), + m_minor_mode, m_player_karts.size()); } } @@ -551,6 +553,7 @@ void RaceManager::saveGP() m_saved_gp = new SavedGrandPrix( StateManager::get()->getActivePlayerProfile(0)->getUniqueID(), m_grand_prix.getId(), + m_minor_mode, m_difficulty, (int)m_player_karts.size(), m_track_number, diff --git a/src/states_screens/dialogs/gp_info_dialog.cpp b/src/states_screens/dialogs/gp_info_dialog.cpp index b70a775a0..53954ee41 100644 --- a/src/states_screens/dialogs/gp_info_dialog.cpp +++ b/src/states_screens/dialogs/gp_info_dialog.cpp @@ -205,6 +205,7 @@ void GPInfoDialog::addButtons() ->getActivePlayerProfile(0) ->getUniqueID(), m_gp.getId(), + race_manager->getMinorMode(), race_manager->getNumLocalPlayers()); okBtn->m_properties[PROP_ID] = "start"; diff --git a/src/states_screens/gp_info_screen.cpp b/src/states_screens/gp_info_screen.cpp index 48d9f9c34..6cdb91dbc 100644 --- a/src/states_screens/gp_info_screen.cpp +++ b/src/states_screens/gp_info_screen.cpp @@ -134,6 +134,7 @@ void GPInfoScreen::beforeAddingWidget() SavedGrandPrix* saved_gp = SavedGrandPrix::getSavedGP( StateManager::get()->getActivePlayerProfile(0)->getUniqueID(), m_gp.getId(), + race_manager->getMinorMode(), race_manager->getNumLocalPlayers()); int tracks = m_gp.getTrackNames().size();