From: <de...@us...> - 2013-12-18 12:16:00
|
Revision: 14734 http://sourceforge.net/p/supertuxkart/code/14734 Author: deveee Date: 2013-12-18 12:15:53 +0000 (Wed, 18 Dec 2013) Log Message: ----------- Wait for animation before continue using mouse - soccer setup screen Modified Paths: -------------- main/trunk/src/guiengine/widgets/model_view_widget.cpp main/trunk/src/guiengine/widgets/model_view_widget.hpp main/trunk/src/states_screens/soccer_setup_screen.cpp main/trunk/src/states_screens/soccer_setup_screen.hpp Modified: main/trunk/src/guiengine/widgets/model_view_widget.cpp =================================================================== --- main/trunk/src/guiengine/widgets/model_view_widget.cpp 2013-12-18 10:09:03 UTC (rev 14733) +++ main/trunk/src/guiengine/widgets/model_view_widget.cpp 2013-12-18 12:15:53 UTC (rev 14734) @@ -184,6 +184,11 @@ m_rotation_target = targetAngle; } +bool ModelViewWidget::isRotating() +{ + return m_rotation_mode != ROTATE_OFF ? true : false; +} + void ModelViewWidget::elementRemoved() { delete m_rtt_provider; Modified: main/trunk/src/guiengine/widgets/model_view_widget.hpp =================================================================== --- main/trunk/src/guiengine/widgets/model_view_widget.hpp 2013-12-18 10:09:03 UTC (rev 14733) +++ main/trunk/src/guiengine/widgets/model_view_widget.hpp 2013-12-18 12:15:53 UTC (rev 14734) @@ -85,6 +85,9 @@ /** Rotate to 'targetAngle' in degrees at given speed (in degrees per second) */ void setRotateTo(float targetAngle, float speed); + /** Returns information if currently kart is rotating */ + bool isRotating(); + void clearRttProvider(); }; Modified: main/trunk/src/states_screens/soccer_setup_screen.cpp =================================================================== --- main/trunk/src/states_screens/soccer_setup_screen.cpp 2013-12-18 10:09:03 UTC (rev 14733) +++ main/trunk/src/states_screens/soccer_setup_screen.cpp 2013-12-18 12:15:53 UTC (rev 14734) @@ -54,6 +54,9 @@ // ----------------------------------------------------------------------------- void SoccerSetupScreen::eventCallback(Widget* widget, const std::string& name, const int playerID) { + if(m_schedule_continue) + return; + if(name == "continue") { int nb_players = m_kart_view_info.size(); @@ -71,6 +74,24 @@ sfx_manager->quickSound( "anvil" ); return; } + else if(!areAllKartsConfirmed()) + { + for(int i=0 ; i < nb_players ; i++) + { + if (!m_kart_view_info[i].confirmed) + { + m_kart_view_info[i].confirmed = true; + m_kart_view_info[i].view->setRotateTo( KART_CONFIRMATION_TARGET_ANGLE, KART_CONFIRMATION_ROTATION_SPEED ); + m_kart_view_info[i].view->setBadge(OK_BADGE); + } + } + sfx_manager->quickSound( "wee" ); + m_schedule_continue = true; + } + else + { + m_schedule_continue = true; + } for(int i=0 ; i < nb_players ; i++) { @@ -78,8 +99,6 @@ m_kart_view_info[i].team); } - StateManager::get()->pushScreen( ArenasScreen::getInstance() ); - if(getWidget<SpinnerWidget>("goalamount")->isActivated()) race_manager->setMaxGoal(getWidget<SpinnerWidget>("goalamount")->getValue()); else @@ -178,6 +197,8 @@ // ----------------------------------------------------------------------------- void SoccerSetupScreen::init() { + m_schedule_continue = false; + Screen::init(); if (UserConfigParams::m_num_goals <= 0) @@ -235,6 +256,9 @@ Input::InputType type, int playerId) { + if(m_schedule_continue) + return EVENT_BLOCK; + ButtonWidget* bt_continue = getWidget<ButtonWidget>("continue"); GUIEngine::EventPropagation result = EVENT_LET; SoccerTeam team_switch = SOCCER_TEAM_NONE; @@ -354,6 +378,24 @@ return result; } + +// ----------------------------------------------------------------------------- +void SoccerSetupScreen::onUpdate(float delta, irr::video::IVideoDriver* driver) +{ + int nb_players = m_kart_view_info.size(); + + if(m_schedule_continue) + { + for(int i=0 ; i < nb_players ; i++) + { + if (m_kart_view_info[i].view->isRotating() == true) + return; + } + m_schedule_continue = false; + StateManager::get()->pushScreen( ArenasScreen::getInstance() ); + } +} + bool SoccerSetupScreen::areAllKartsConfirmed() const { bool all_confirmed = true; Modified: main/trunk/src/states_screens/soccer_setup_screen.hpp =================================================================== --- main/trunk/src/states_screens/soccer_setup_screen.hpp 2013-12-18 10:09:03 UTC (rev 14733) +++ main/trunk/src/states_screens/soccer_setup_screen.hpp 2013-12-18 12:15:53 UTC (rev 14734) @@ -44,6 +44,8 @@ }; AlignedArray<KartViewInfo> m_kart_view_info; + + bool m_schedule_continue; public: @@ -63,6 +65,8 @@ /** \brief implement callback from parent class GUIEngine::Screen */ virtual void tearDown() OVERRIDE; + virtual void onUpdate(float delta, irr::video::IVideoDriver* driver) OVERRIDE; + /** \brief implement callback from parent class GUIEngine::Screen */ virtual GUIEngine::EventPropagation filterActions( PlayerAction action, int deviceID, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |