Move changing a team to separate function to avoid code duplication

This commit is contained in:
deve 2017-01-26 09:21:35 +01:00
parent 49a77a8f48
commit 85f153f0d5
2 changed files with 52 additions and 53 deletions

View File

@ -271,6 +271,37 @@ void SoccerSetupScreen::tearDown()
Screen::tearDown(); Screen::tearDown();
} // tearDown } // tearDown
void SoccerSetupScreen::changeTeam(int player_id, SoccerTeam team)
{
if (team == SOCCER_TEAM_NONE)
return;
if (team == m_kart_view_info[player_id].team)
return;
// Change the kart color
if (m_kart_view_info[player_id].support_colorization)
{
KartRenderType krt = team == SOCCER_TEAM_RED ? KRT_RED : KRT_BLUE;
m_kart_view_info[player_id].view->getModelViewRenderInfo()
->setKartModelRenderInfo(krt);
}
for (unsigned int i = 0; i < m_kart_view_info.size(); i++)
{
m_kart_view_info[i].view->unsetBadge(BAD_BADGE);
}
if (m_kart_view_info.size() == 1)
{
UserConfigParams::m_soccer_default_team = (int)team;
}
race_manager->setKartSoccerTeam(player_id, team);
m_kart_view_info[player_id].team = team;
updateKartViewsLayout();
}
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
GUIEngine::EventPropagation SoccerSetupScreen::filterActions(PlayerAction action, GUIEngine::EventPropagation SoccerSetupScreen::filterActions(PlayerAction action,
int deviceID, int deviceID,
@ -283,30 +314,16 @@ GUIEngine::EventPropagation SoccerSetupScreen::filterActions(PlayerAction action
ButtonWidget* bt_continue = getWidget<ButtonWidget>("continue"); ButtonWidget* bt_continue = getWidget<ButtonWidget>("continue");
BubbleWidget* bubble = getWidget<BubbleWidget>("lblLeftRight"); BubbleWidget* bubble = getWidget<BubbleWidget>("lblLeftRight");
GUIEngine::EventPropagation result = EVENT_LET;
SoccerTeam team_switch = SOCCER_TEAM_NONE;
int nb_players = (int)m_kart_view_info.size();
switch(action) switch (action)
{ {
case PA_MENU_LEFT: case PA_MENU_LEFT:
if ((bt_continue->isFocusedForPlayer(PLAYER_ID_GAME_MASTER) || if ((bt_continue->isFocusedForPlayer(PLAYER_ID_GAME_MASTER) ||
bubble->isFocusedForPlayer(PLAYER_ID_GAME_MASTER)) && bubble->isFocusedForPlayer(PLAYER_ID_GAME_MASTER)) &&
m_kart_view_info[playerId].confirmed == false) m_kart_view_info[playerId].confirmed == false)
{ {
team_switch = SOCCER_TEAM_RED; changeTeam(playerId, SOCCER_TEAM_RED);
return EVENT_BLOCK;
// Change the kart color
if (m_kart_view_info[playerId].support_colorization)
{
m_kart_view_info[playerId].view->getModelViewRenderInfo()
->setKartModelRenderInfo(KRT_RED);
}
for(int i=0 ; i < nb_players ; i++)
{
m_kart_view_info[i].view->unsetBadge(BAD_BADGE);
}
} }
break; break;
case PA_MENU_RIGHT: case PA_MENU_RIGHT:
@ -314,19 +331,8 @@ GUIEngine::EventPropagation SoccerSetupScreen::filterActions(PlayerAction action
bubble->isFocusedForPlayer(PLAYER_ID_GAME_MASTER)) && bubble->isFocusedForPlayer(PLAYER_ID_GAME_MASTER)) &&
m_kart_view_info[playerId].confirmed == false) m_kart_view_info[playerId].confirmed == false)
{ {
team_switch = SOCCER_TEAM_BLUE; changeTeam(playerId, SOCCER_TEAM_BLUE);
return EVENT_BLOCK;
// Change the kart color
if (m_kart_view_info[playerId].support_colorization)
{
m_kart_view_info[playerId].view->getModelViewRenderInfo()
->setKartModelRenderInfo(KRT_BLUE);
}
for(int i=0 ; i < nb_players ; i++)
{
m_kart_view_info[i].view->unsetBadge(BAD_BADGE);
}
} }
break; break;
case PA_MENU_UP: case PA_MENU_UP:
@ -342,21 +348,21 @@ GUIEngine::EventPropagation SoccerSetupScreen::filterActions(PlayerAction action
if (!bt_continue->isFocusedForPlayer(PLAYER_ID_GAME_MASTER) || if (!bt_continue->isFocusedForPlayer(PLAYER_ID_GAME_MASTER) ||
areAllKartsConfirmed()) areAllKartsConfirmed())
{ {
return result; return EVENT_LET;
} }
if (bt_continue->isFocusedForPlayer(PLAYER_ID_GAME_MASTER) && if (!m_kart_view_info[playerId].confirmed)
m_kart_view_info[playerId].confirmed)
{ {
return EVENT_BLOCK; // Confirm team selection
m_kart_view_info[playerId].confirmed = true;
m_kart_view_info[playerId].view->setRotateTo(
KART_CONFIRMATION_TARGET_ANGLE,
KART_CONFIRMATION_ROTATION_SPEED);
m_kart_view_info[playerId].view->setBadge(OK_BADGE);
m_kart_view_info[playerId].view->unsetBadge(BAD_BADGE);
SFXManager::get()->quickSound( "wee" );
} }
// Confirm team selection
m_kart_view_info[playerId].confirmed = true;
m_kart_view_info[playerId].view->setRotateTo( KART_CONFIRMATION_TARGET_ANGLE, KART_CONFIRMATION_ROTATION_SPEED );
m_kart_view_info[playerId].view->setBadge(OK_BADGE);
m_kart_view_info[playerId].view->unsetBadge(BAD_BADGE);
SFXManager::get()->quickSound( "wee" );
return EVENT_BLOCK; return EVENT_BLOCK;
} }
case PA_MENU_CANCEL: case PA_MENU_CANCEL:
@ -364,15 +370,16 @@ GUIEngine::EventPropagation SoccerSetupScreen::filterActions(PlayerAction action
if (!bt_continue->isFocusedForPlayer(PLAYER_ID_GAME_MASTER) && if (!bt_continue->isFocusedForPlayer(PLAYER_ID_GAME_MASTER) &&
playerId == PLAYER_ID_GAME_MASTER) playerId == PLAYER_ID_GAME_MASTER)
{ {
return result; return EVENT_LET;
} }
// Un-confirm team selection // Un-confirm team selection
m_kart_view_info[playerId].confirmed = false; m_kart_view_info[playerId].confirmed = false;
m_kart_view_info[playerId].view->setRotateContinuously( KART_CONTINUOUS_ROTATION_SPEED ); m_kart_view_info[playerId].view->setRotateContinuously(
KART_CONTINUOUS_ROTATION_SPEED);
m_kart_view_info[playerId].view->unsetBadge(OK_BADGE); m_kart_view_info[playerId].view->unsetBadge(OK_BADGE);
for(int i=0 ; i < nb_players ; i++) for (unsigned int i = 0 ; i < m_kart_view_info.size() ; i++)
{ {
m_kart_view_info[i].view->unsetBadge(BAD_BADGE); m_kart_view_info[i].view->unsetBadge(BAD_BADGE);
} }
@ -383,16 +390,7 @@ GUIEngine::EventPropagation SoccerSetupScreen::filterActions(PlayerAction action
break; break;
} }
if(team_switch != SOCCER_TEAM_NONE) // A player wants to change his team? return EVENT_LET;
{
if (nb_players == 1)
UserConfigParams::m_soccer_default_team = (int)team_switch;
race_manager->setKartSoccerTeam(playerId, team_switch);
m_kart_view_info[playerId].team = team_switch;
updateKartViewsLayout();
}
return result;
} // filterActions } // filterActions
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------

View File

@ -82,6 +82,7 @@ private:
bool areAllKartsConfirmed() const; bool areAllKartsConfirmed() const;
int getNumConfirmedKarts(); int getNumConfirmedKarts();
void updateKartViewsLayout(); void updateKartViewsLayout();
void changeTeam(int player_id, SoccerTeam team);
}; };
#endif // HEADER_SOCCER_SETUP_SCREEN_HPP #endif // HEADER_SOCCER_SETUP_SCREEN_HPP