diff --git a/src/challenges/challenge_data.cpp b/src/challenges/challenge_data.cpp index c22a7cfc9..a65131611 100644 --- a/src/challenges/challenge_data.cpp +++ b/src/challenges/challenge_data.cpp @@ -458,7 +458,7 @@ bool ChallengeData::isGPFulfilled() const // is no world objects to query at this stage. if (race_manager->getMajorMode() != RaceManager::MAJOR_MODE_GRAND_PRIX || race_manager->getMinorMode() != m_minor || - race_manager->getGrandPrix()->getId() != m_gp_id || + race_manager->getGrandPrix().getId() != m_gp_id || race_manager->getNumberOfKarts() < (unsigned int)m_num_karts[d] || race_manager->getNumPlayers() > 1) return false; diff --git a/src/main.cpp b/src/main.cpp index bee8daf4d..8bc70861a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -847,7 +847,7 @@ int handleCmdLine() if(CommandLine::has("--gp", &s)) { race_manager->setMajorMode(RaceManager::MAJOR_MODE_GRAND_PRIX); - GrandPrixData *gp = grand_prix_manager->getGrandPrix(s); + const GrandPrixData *gp = grand_prix_manager->getGrandPrix(s); if (!gp) { diff --git a/src/race/race_manager.cpp b/src/race/race_manager.cpp index 01430c2eb..2626530b4 100644 --- a/src/race/race_manager.cpp +++ b/src/race/race_manager.cpp @@ -75,7 +75,6 @@ RaceManager::RaceManager() setTrack("jungle"); m_default_ai_list.clear(); setNumLocalPlayers(0); - m_grand_prix = new GrandPrixData(); } // RaceManager //----------------------------------------------------------------------------- @@ -284,9 +283,9 @@ void RaceManager::startNew(bool from_overworld) if(m_major_mode==MAJOR_MODE_GRAND_PRIX) { // GP: get tracks, laps and reverse info from grand prix - m_tracks = m_grand_prix->getTrackNames(); - m_num_laps = m_grand_prix->getLaps(); - m_reverse_track = m_grand_prix->getReverse(); + m_tracks = m_grand_prix.getTrackNames(); + m_num_laps = m_grand_prix.getLaps(); + m_reverse_track = m_grand_prix.getReverse(); } //assert(m_player_karts.size() > 0); @@ -349,7 +348,7 @@ void RaceManager::startNew(bool from_overworld) SavedGrandPrix* gp = SavedGrandPrix::getSavedGP( StateManager::get() ->getActivePlayerProfile(0) ->getUniqueID(), - m_grand_prix->getId(), + m_grand_prix.getId(), m_difficulty, m_num_karts, m_player_karts.size()); @@ -500,7 +499,7 @@ void RaceManager::next() SavedGrandPrix::getSavedGP(StateManager::get() ->getActivePlayerProfile(0) ->getUniqueID(), - m_grand_prix->getId(), + m_grand_prix.getId(), m_difficulty, m_num_karts, m_player_karts.size()); @@ -517,7 +516,7 @@ void RaceManager::next() new SavedGrandPrix( StateManager::get()->getActivePlayerProfile(0) ->getUniqueID(), - m_grand_prix->getId(), + m_grand_prix.getId(), m_difficulty, m_player_karts.size(), m_track_number, @@ -636,7 +635,7 @@ void RaceManager::exitRace(bool delete_world) SavedGrandPrix::getSavedGP(StateManager::get() ->getActivePlayerProfile(0) ->getUniqueID(), - m_grand_prix->getId(), + m_grand_prix.getId(), m_difficulty, m_num_karts, m_player_karts.size()); @@ -768,7 +767,7 @@ void RaceManager::rerunRace() //----------------------------------------------------------------------------- -void RaceManager::startGP(GrandPrixData* gp, bool from_overworld, +void RaceManager::startGP(const GrandPrixData* gp, bool from_overworld, bool continue_saved_gp) { assert(gp != NULL); diff --git a/src/race/race_manager.hpp b/src/race/race_manager.hpp index c457514ca..379fd3ed0 100644 --- a/src/race/race_manager.hpp +++ b/src/race/race_manager.hpp @@ -324,7 +324,7 @@ private: * same list of AIs is used for all tracks of a GP. */ std::vector m_ai_kart_list; int m_track_number; - GrandPrixData* m_grand_prix; + GrandPrixData m_grand_prix; int m_num_karts; unsigned int m_num_finished_karts; unsigned int m_num_finished_players; @@ -410,9 +410,9 @@ public: void setDifficulty(Difficulty diff); // ------------------------------------------------------------------------ - void setGrandPrix(GrandPrixData* gp) + void setGrandPrix(const GrandPrixData *gp) { - m_grand_prix = gp; + m_grand_prix = *gp; m_coin_target = 0; } // ------------------------------------------------------------------------ @@ -525,7 +525,7 @@ public: // ------------------------------------------------------------------------ const std::string& getTrackName() const { return m_tracks[m_track_number];} // ------------------------------------------------------------------------ - GrandPrixData* getGrandPrix() const { return m_grand_prix; } + const GrandPrixData& getGrandPrix() const { return m_grand_prix; } // ------------------------------------------------------------------------ unsigned int getFinishedKarts() const { return m_num_finished_karts; } // ------------------------------------------------------------------------ @@ -682,7 +682,7 @@ public: * \brief Higher-level method to start a GP without having to care about * the exact startup sequence */ - void startGP(GrandPrixData* gp, bool from_overworld, + void startGP(const GrandPrixData* gp, bool from_overworld, bool continue_saved_gp); /** diff --git a/src/states_screens/race_result_gui.cpp b/src/states_screens/race_result_gui.cpp index b8a6e88da..9b5803421 100644 --- a/src/states_screens/race_result_gui.cpp +++ b/src/states_screens/race_result_gui.cpp @@ -92,7 +92,7 @@ void RaceResultGUI::init() // Calculate screenshot scrolling parameters const std::vector tracks = - race_manager->getGrandPrix()->getTrackNames(); + race_manager->getGrandPrix().getTrackNames(); int n_tracks = tracks.size(); int currentTrack = race_manager->getTrackNumber(); m_start_track = currentTrack; @@ -208,7 +208,7 @@ void RaceResultGUI::enableAllButtons() void RaceResultGUI::eventCallback(GUIEngine::Widget* widget, const std::string& name, const int playerID) { - int n_tracks = race_manager->getGrandPrix()->getNumberOfTracks(); + int n_tracks = race_manager->getGrandPrix().getNumberOfTracks(); if (name == "up_button" && n_tracks > m_max_tracks && m_start_track > 0) { m_start_track--; @@ -1121,7 +1121,7 @@ void RaceResultGUI::enableGPProgress() status_label->m_h = font_height; status_label->add(); status_label->setText(_("Track %i/%i", currentTrack + 1, - race_manager->getGrandPrix()->getNumberOfTracks()), true); + race_manager->getGrandPrix().getNumberOfTracks()), true); addGPProgressWidget(status_label); y = (status_label->m_y + status_label->m_h + 5); @@ -1316,7 +1316,7 @@ void RaceResultGUI::displayHighScores() void RaceResultGUI::displayScreenShots() { const std::vector tracks = - race_manager->getGrandPrix()->getTrackNames(); + race_manager->getGrandPrix().getTrackNames(); int currentTrack = race_manager->getTrackNumber(); int n_sshot = 1;