Fix issues with the new "reverse grand prix" feature and user defined GPs
This commit is contained in:
parent
12977c3764
commit
bbbe0ddf8d
@ -158,14 +158,20 @@ void GrandPrixData::changeReverse(const GrandPrixData::GPReverseType use_reverse
|
|||||||
for (unsigned int i = 0; i < m_tracks.size(); i++)
|
for (unsigned int i = 0; i < m_tracks.size(); i++)
|
||||||
{
|
{
|
||||||
if (use_reverse == GP_NO_REVERSE)
|
if (use_reverse == GP_NO_REVERSE)
|
||||||
|
{
|
||||||
m_reversed[i] = false;
|
m_reversed[i] = false;
|
||||||
|
}
|
||||||
|
else if (use_reverse == GP_ALL_REVERSE) // all reversed
|
||||||
|
{
|
||||||
|
m_reversed[i] = track_manager->getTrack(m_tracks[i])->reverseAvailable();
|
||||||
|
}
|
||||||
else if (use_reverse == GP_RANDOM_REVERSE)
|
else if (use_reverse == GP_RANDOM_REVERSE)
|
||||||
|
{
|
||||||
if (track_manager->getTrack(m_tracks[i])->reverseAvailable())
|
if (track_manager->getTrack(m_tracks[i])->reverseAvailable())
|
||||||
m_reversed[i] = (rand() % 2 != 0);
|
m_reversed[i] = (rand() % 2 != 0);
|
||||||
else
|
else
|
||||||
m_reversed[i] = false;
|
m_reversed[i] = false;
|
||||||
else // all reversed
|
}
|
||||||
m_reversed[i] = track_manager->getTrack(m_tracks[i])->reverseAvailable();
|
|
||||||
} // for i < m_tracks.size()
|
} // for i < m_tracks.size()
|
||||||
} // changeReverse
|
} // changeReverse
|
||||||
|
|
||||||
|
@ -90,7 +90,8 @@ public:
|
|||||||
{
|
{
|
||||||
GP_NO_REVERSE = 0,
|
GP_NO_REVERSE = 0,
|
||||||
GP_ALL_REVERSE = 1,
|
GP_ALL_REVERSE = 1,
|
||||||
GP_RANDOM_REVERSE = 2
|
GP_RANDOM_REVERSE = 2,
|
||||||
|
GP_DEFAULT_REVERSE = 3
|
||||||
}; // GPReverseType
|
}; // GPReverseType
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -71,8 +71,9 @@ void GPInfoScreen::loadedFromFile()
|
|||||||
// (since the groups can change if addons are added/deleted).
|
// (since the groups can change if addons are added/deleted).
|
||||||
m_group_spinner = getWidget<SpinnerWidget>("group-spinner");
|
m_group_spinner = getWidget<SpinnerWidget>("group-spinner");
|
||||||
m_reverse_spinner = getWidget<SpinnerWidget>("reverse-spinner");
|
m_reverse_spinner = getWidget<SpinnerWidget>("reverse-spinner");
|
||||||
m_reverse_spinner->addLabel(_("No"));
|
m_reverse_spinner->addLabel(_("Default"));
|
||||||
m_reverse_spinner->addLabel(_("Yes"));
|
m_reverse_spinner->addLabel(_("None"));
|
||||||
|
m_reverse_spinner->addLabel(_("All"));
|
||||||
m_reverse_spinner->addLabel(_("Random"));
|
m_reverse_spinner->addLabel(_("Random"));
|
||||||
m_reverse_spinner->setValue(0);
|
m_reverse_spinner->setValue(0);
|
||||||
|
|
||||||
@ -108,13 +109,14 @@ GrandPrixData::GPReverseType GPInfoScreen::getReverse() const
|
|||||||
{
|
{
|
||||||
switch (m_reverse_spinner->getValue())
|
switch (m_reverse_spinner->getValue())
|
||||||
{
|
{
|
||||||
case 0: return GrandPrixData::GP_NO_REVERSE; break;
|
case 0: return GrandPrixData::GP_DEFAULT_REVERSE; break;
|
||||||
case 1: return GrandPrixData::GP_ALL_REVERSE; break;
|
case 1: return GrandPrixData::GP_NO_REVERSE; break;
|
||||||
case 2: return GrandPrixData::GP_RANDOM_REVERSE; break;
|
case 2: return GrandPrixData::GP_ALL_REVERSE; break;
|
||||||
default: assert(false);
|
case 3: return GrandPrixData::GP_RANDOM_REVERSE; break;
|
||||||
|
default: assert(false);
|
||||||
} // switch
|
} // switch
|
||||||
// Avoid compiler warning
|
// Avoid compiler warning
|
||||||
return GrandPrixData::GP_NO_REVERSE;
|
return GrandPrixData::GP_DEFAULT_REVERSE;
|
||||||
} // getReverse
|
} // getReverse
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
void GPInfoScreen::beforeAddingWidget()
|
void GPInfoScreen::beforeAddingWidget()
|
||||||
@ -296,6 +298,7 @@ void GPInfoScreen::eventCallback(Widget *, const std::string &name,
|
|||||||
// Normal GP: start/continue a saved GP
|
// Normal GP: start/continue a saved GP
|
||||||
int n = getWidget<SpinnerWidget>("ai-spinner")->getValue();
|
int n = getWidget<SpinnerWidget>("ai-spinner")->getValue();
|
||||||
|
|
||||||
|
m_gp.changeReverse(getReverse());
|
||||||
race_manager->setNumKarts(race_manager->getNumLocalPlayers() + n);
|
race_manager->setNumKarts(race_manager->getNumLocalPlayers() + n);
|
||||||
race_manager->startGP(m_gp, false, (name == "continue"));
|
race_manager->startGP(m_gp, false, (name == "continue"));
|
||||||
}
|
}
|
||||||
@ -326,10 +329,6 @@ void GPInfoScreen::eventCallback(Widget *, const std::string &name,
|
|||||||
m_gp.changeTrackNumber(m_num_tracks_spinner->getValue(), m_group_name);
|
m_gp.changeTrackNumber(m_num_tracks_spinner->getValue(), m_group_name);
|
||||||
addTracks();
|
addTracks();
|
||||||
}
|
}
|
||||||
else if (name=="reverse-spinner")
|
|
||||||
{
|
|
||||||
m_gp.changeReverse(getReverse());
|
|
||||||
}
|
|
||||||
else if(name=="back")
|
else if(name=="back")
|
||||||
{
|
{
|
||||||
StateManager::get()->escapePressed();
|
StateManager::get()->escapePressed();
|
||||||
|
Loading…
Reference in New Issue
Block a user