void LocalTeamsSelectionBox::SetNbTeams(uint nb_teams) { // we hide the useless teams selector for (uint i=nb_teams; i<teams_selections.size(); i++) { teams_selections[i]->ClearTeam(); } for (uint i=0; i<nb_teams;i++) { if (!teams_selections.at(i)->GetTeam()) { // we should find an available team teams_selections.at(i)->SetTeam(*(GetTeamsList().FindByIndex(i))); NextTeam(i); } } if (list_box) list_box->SetNbTeams(nb_teams); }
Widget* LocalTeamsSelectionBox::ClickUp(const Point2i &mousePosition, uint button) { if (!Contains(mousePosition)) return NULL; if (local_teams_nb->ClickUp(mousePosition, button)) { SetNbTeams(local_teams_nb->GetValue()); } else { Widget *w = (list_box) ? list_box->ClickUp(mousePosition, button) : WidgetList::ClickUp(mousePosition, button); for (uint i=0; i<teams_selections.size() ; i++) { if (teams_selections[i]->Contains(mousePosition)) { Widget * at = teams_selections[i]; Rectanglei r(at->GetPosition(), Point2i(38, 38)); // Validate where the click really landed if (r.Contains(mousePosition)) { if (button == Mouse::BUTTON_LEFT() || button == SDL_BUTTON_WHEELDOWN) { NextTeam(i); } else if (button == Mouse::BUTTON_RIGHT() || button == SDL_BUTTON_WHEELUP) { PrevTeam(i); } return at; } else { Rectanglei r2(at->GetPositionX(), at->GetPositionY() + 39, 38, 30); if (r2.Contains(mousePosition)) { teams_selections[i]->SwitchPlayerType(); return at; } } return w; } } return w; } return NULL; }
//--------------------------------------------------------------------------------------- void QuizCounters::OnNewQuestion() { NextTeam(); }