From: <he...@us...> - 2012-06-21 09:06:07
|
Revision: 320 http://simspark.svn.sourceforge.net/simspark/?rev=320&view=rev Author: hedayat Date: 2012-06-21 09:05:56 +0000 (Thu, 21 Jun 2012) Log Message: ----------- Don't enforce single-kick-in-kickoff rule when there are 2 players or less in the game (e.g. Penalty shoots!) A small cleanup: use SoccerBase::GetGameControlServer() Modified Paths: -------------- trunk/rcssserver3d/ChangeLog trunk/rcssserver3d/plugin/soccer/soccerruleaspect/soccerruleaspect.cpp Modified: trunk/rcssserver3d/ChangeLog =================================================================== --- trunk/rcssserver3d/ChangeLog 2012-05-27 18:52:22 UTC (rev 319) +++ trunk/rcssserver3d/ChangeLog 2012-06-21 09:05:56 UTC (rev 320) @@ -1,3 +1,12 @@ +2012-06-21 Hedayat Vatankhah <hed...@gm...> + + * plugin/soccer/soccerruleaspect/soccerruleaspect.cpp: + - let a player kick the ball more than once in kickoff if there are not + more than 2 players inside the game. Should be removed when a proper + "Penalty mode" is added to the simulator + - small cleanup: call SoccerBase::GetGameControlServer() to access + game control server + 2012-05-23 Hedayat Vatankhah <hed...@gm...> * NEWS: Modified: trunk/rcssserver3d/plugin/soccer/soccerruleaspect/soccerruleaspect.cpp =================================================================== --- trunk/rcssserver3d/plugin/soccer/soccerruleaspect/soccerruleaspect.cpp 2012-05-27 18:52:22 UTC (rev 319) +++ trunk/rcssserver3d/plugin/soccer/soccerruleaspect/soccerruleaspect.cpp 2012-06-21 09:05:56 UTC (rev 320) @@ -713,18 +713,11 @@ SoccerRuleAspect::UpdateBeforeKickOff() { // get game control server to check agent count - static boost::shared_ptr<GameControlServer> game_control; + boost::shared_ptr<GameControlServer> game_control; - if (game_control.get() == 0) + if (!SoccerBase::GetGameControlServer(*this, game_control)) { - game_control = shared_dynamic_cast<GameControlServer> - (GetCore()->Get("/sys/server/gamecontrol")); - - if (game_control.get() == 0) - { - GetLog()->Error() << "(SoccerRuleAspect) Error: can't get GameControlServer.\n"; - return; - } + return; } // if no players are connected, just return @@ -786,8 +779,13 @@ } if (time > mGameState->GetLastModeChange()) { + boost::shared_ptr<GameControlServer> game_control; + if (SoccerBase::GetGameControlServer(*this, game_control) + && game_control->GetAgentCount() > 2) // todo: remove this when there is a "penalty" playmode + { + mCheckKickOffKickerFault = true; + } mLastKickOffKickTime = time; - mCheckKickOffKickerFault = true; mLastKickOffTaker = agent; mGameState->SetPlayMode(PM_PlayOn); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |