Fix #531 (random race in 3 strikes battle).

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@11010 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
wardje
2012-03-22 16:49:49 +00:00
parent c078df7e18
commit d77fc80e09

View File

@@ -40,19 +40,19 @@ DEFINE_SCREEN_SINGLETON( ArenasScreen );
const char* ALL_ARENA_GROUPS_ID = "all";
// ------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------
ArenasScreen::ArenasScreen() : Screen("arenas.stkgui")
{
}
// ------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void ArenasScreen::loadedFromFile()
{
}
// ------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void ArenasScreen::beforeAddingWidget()
{
@@ -100,7 +100,7 @@ void ArenasScreen::beforeAddingWidget()
tracks_widget->setItemCountHint(num_of_arenas); //set the item hint to that number to prevent weird formatting
}
// ------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void ArenasScreen::init()
{
@@ -112,7 +112,7 @@ void ArenasScreen::init()
w->setSelection(w->getItems()[0].m_code_name, PLAYER_ID_GAME_MASTER, true);
} // init
// ------------------------------------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void ArenasScreen::eventCallback(Widget* widget, const std::string& name, const int playerID)
{
@@ -130,9 +130,23 @@ void ArenasScreen::eventCallback(Widget* widget, const std::string& name, const
{
RibbonWidget* tabs = this->getWidget<RibbonWidget>("trackgroups");
assert( tabs != NULL );
const std::vector<int>& curr_group = track_manager->getArenasInGroup(
tabs->getSelectionIDString(PLAYER_ID_GAME_MASTER) );
std::vector<int> curr_group;
if (tabs->getSelectionIDString(PLAYER_ID_GAME_MASTER) == ALL_ARENA_GROUPS_ID)
{
const std::vector<std::string>& groups = track_manager->getAllArenaGroups();
for (unsigned int i = 0; i < groups.size(); i++)
{
const std::vector<int>& tmp_group = track_manager->getArenasInGroup(groups[i]);
// Append to our main vector
curr_group.insert(curr_group.end(), tmp_group.begin(), tmp_group.end());
}
} // if on tab "all"
else
{
curr_group = track_manager->getArenasInGroup(
tabs->getSelectionIDString(PLAYER_ID_GAME_MASTER) );
}
RandomGenerator random;
const int randomID = random.get(curr_group.size());