Both teams should have at least one kart.

Still to do: user should be informed that he can't choose this team.
Not tested in more than 2 karts.

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@14146 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
deveee 2013-09-24 11:57:50 +00:00
parent 0db9da03e5
commit 4edd9176dd
2 changed files with 32 additions and 1 deletions

View File

@ -56,7 +56,7 @@ void SoccerSetupScreen::eventCallback(Widget* widget, const std::string& name, c
if(name == "continue")
{
StateManager::get()->pushScreen( ArenasScreen::getInstance() );
race_manager->setMaxGoal(getWidget<SpinnerWidget>("goalamount")->getValue());
race_manager->setMaxGoal(getWidget<SpinnerWidget>("goalamount")->getValue());
input_manager->setMasterPlayerOnly(true);
}
else if (name == "back")
@ -216,6 +216,11 @@ GUIEngine::EventPropagation SoccerSetupScreen::filterActions( PlayerAction acti
if (!bt_continue->isFocusedForPlayer(PLAYER_ID_GAME_MASTER) || areAllKartsConfirmed())
return result;
if(getNumConfirmedKarts() > nb_players-2 &&
(getNumKartsInTeam(SOCCER_TEAM_RED) == 0 ||
getNumKartsInTeam(SOCCER_TEAM_BLUE) == 0))
return EVENT_BLOCK;
// Confirm team selection
for(int i=0 ; i < nb_players ; i++)
{
@ -301,6 +306,30 @@ bool SoccerSetupScreen::areAllKartsConfirmed() const
return all_confirmed;
}
int SoccerSetupScreen::getNumKartsInTeam(int team)
{
int karts_in_team = 0;
int nb_players = m_kart_view_info.size();
for(int i=0 ; i < nb_players ; i++)
{
if(m_kart_view_info[i].team == team)
karts_in_team++;
}
return karts_in_team;
}
int SoccerSetupScreen::getNumConfirmedKarts()
{
int confirmed_karts = 0;
int nb_players = m_kart_view_info.size();
for(int i=0 ; i < nb_players ; i++)
{
if(m_kart_view_info[i].confirmed == true)
confirmed_karts++;
}
return confirmed_karts;
}
void SoccerSetupScreen::updateKartViewsLayout()
{
Widget* central_div = getWidget<Widget>("central_div");

View File

@ -72,6 +72,8 @@ public:
private:
bool areAllKartsConfirmed() const;
int SoccerSetupScreen::getNumKartsInTeam(int team);
int SoccerSetupScreen::getNumConfirmedKarts();
void updateKartViewsLayout();
};