Fix tracks not showing in grandprix info (#4561)
Tell user grandprix is not available if it includes locked tracks in singleplayer
This commit is contained in:
parent
6673e3cc48
commit
2264ca6faa
@ -515,6 +515,12 @@ irr::core::stringw GrandPrixData::getTrackName(const unsigned int track) const
|
||||
assert(t != NULL);
|
||||
return t->getName();
|
||||
} // getTrackName
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
bool GrandPrixData::containsUnavailableTracks() const
|
||||
{
|
||||
return getNumberOfTracks() < getNumberOfTracks(true);
|
||||
} // containsUnavailableTracks
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
const std::string& GrandPrixData::getTrackId(const unsigned int track) const
|
||||
|
@ -136,6 +136,7 @@ public:
|
||||
bool isEditable() const;
|
||||
const std::string& getTrackId(const unsigned int track) const;
|
||||
irr::core::stringw getTrackName(const unsigned int track) const;
|
||||
bool containsUnavailableTracks() const;
|
||||
unsigned int getLaps(const unsigned int track) const;
|
||||
bool getReverse(const unsigned int track) const;
|
||||
void moveUp(const unsigned int track);
|
||||
|
@ -135,7 +135,7 @@ void GPInfoScreen::beforeAddingWidget()
|
||||
RaceManager::get()->getMinorMode(),
|
||||
RaceManager::get()->getNumLocalPlayers());
|
||||
|
||||
int tracks = (int)m_gp.getTrackNames().size();
|
||||
int tracks = (int)m_gp.getTrackNames(true).size();
|
||||
bool continue_visible = saved_gp && saved_gp->getNextTrack() > 0 &&
|
||||
saved_gp->getNextTrack() < tracks;
|
||||
|
||||
@ -263,7 +263,7 @@ void GPInfoScreen::init()
|
||||
*/
|
||||
void GPInfoScreen::addTracks()
|
||||
{
|
||||
const std::vector<std::string> tracks = m_gp.getTrackNames();
|
||||
const std::vector<std::string> tracks = m_gp.getTrackNames(true);
|
||||
|
||||
ListWidget *list = getWidget<ListWidget>("tracks");
|
||||
list->clear();
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include "states_screens/state_manager.hpp"
|
||||
#include "states_screens/track_info_screen.hpp"
|
||||
#include "states_screens/gp_info_screen.hpp"
|
||||
#include "states_screens/dialogs/message_dialog.hpp"
|
||||
#include "tracks/track.hpp"
|
||||
#include "tracks/track_manager.hpp"
|
||||
#include "utils/string_utils.hpp"
|
||||
@ -102,9 +103,17 @@ void TracksAndGPScreen::eventCallback(Widget* widget, const std::string& name,
|
||||
}
|
||||
else
|
||||
{
|
||||
GPInfoScreen *gpis = GPInfoScreen::getInstance();
|
||||
gpis->setGP(selection);
|
||||
gpis->push();
|
||||
const GrandPrixData* gp_data=grand_prix_manager->getGrandPrix(selection);
|
||||
if(gp_data->containsUnavailableTracks() && RaceManager::get()->getNumLocalPlayers()==1)
|
||||
{
|
||||
new MessageDialog(_("You cannot play this grandprix because it contains tracks that aren't unlocked!"));
|
||||
}
|
||||
else
|
||||
{
|
||||
GPInfoScreen *gpis = GPInfoScreen::getInstance();
|
||||
gpis->setGP(selection);
|
||||
gpis->push();
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (name == "rand-gp")
|
||||
|
Loading…
x
Reference in New Issue
Block a user