Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

Representations/RoboCup/GameControlData.cpp

Go to the documentation of this file.
00001 /**
00002 * @file GameControlData.cpp
00003 *
00004 * Implementation of class GameControlData.
00005 *
00006 * @author Martin Loetzsch
00007 */
00008 
00009 #include "GameControlData.h"
00010 #include "Platform/SystemCall.h"
00011 #include "Tools/Debugging/Debugging.h"
00012 
00013 GlobalGameControlData::GlobalGameControlData()
00014 : kickoff(kickoffRedTeam), state(initial), redScore(0), blueScore(0)
00015 {
00016   for (int i=0; i<4; i++)
00017   {
00018     penaltiesBlueTeam[i] = notPenalized;
00019     penaltiesRedTeam[i] = notPenalized;
00020   }
00021 }
00022 
00023 In& operator>>(In& stream,GlobalGameControlData& globalGameControlData)
00024 {
00025   stream.read(&globalGameControlData, sizeof(GlobalGameControlData));
00026   return stream;
00027 }
00028 
00029 Out& operator<<(Out& stream, const GlobalGameControlData& globalGameControlData)
00030 {
00031   stream.write(&globalGameControlData, sizeof(GlobalGameControlData));
00032   return stream;
00033 }
00034 
00035 GameControlData::GameControlData()
00036 : timeStamp(0)
00037 {
00038   data.kickoff = ROBOCUP_KICKOFF_OPPONENT;
00039   data.opponentScore = 0;
00040   data.ownScore = 0;
00041   data.state = ROBOCUP_STATE_INITIAL;
00042   data.penalty = PENALTY_NONE;
00043   if (getPlayer().getTeamColor() == Player::red)
00044   {
00045     data.teamColor = ROBOCUP_TEAMCOLOR_RED;
00046   }
00047   else
00048   {
00049     data.teamColor = ROBOCUP_TEAMCOLOR_BLUE;
00050   }
00051 }
00052 
00053 void GameControlData::translateFromGlobalGameControlData(const GlobalGameControlData& globalGameControlData, 
00054                                                          Player& player)
00055 {
00056   data.state = globalGameControlData.state;
00057   
00058   if (player.getTeamColor() == Player::red)
00059   {
00060     data.teamColor = ROBOCUP_TEAMCOLOR_RED;
00061     if (globalGameControlData.penaltiesRedTeam[player.getPlayerNumber()] 
00062       != GlobalGameControlData::notPenalized)
00063     {
00064       data.state = ROBOCUP_STATE_PENALIZED;
00065     }
00066   }
00067   else if (player.getTeamColor() == Player::blue)
00068   {
00069     data.teamColor = ROBOCUP_TEAMCOLOR_BLUE;
00070     if (globalGameControlData.penaltiesBlueTeam[player.getPlayerNumber()] 
00071       != GlobalGameControlData::notPenalized)
00072     {
00073       data.state = ROBOCUP_STATE_PENALIZED;
00074     }
00075   }
00076 
00077   data.ownScore = (player.getTeamColor() == Player::red ?
00078     globalGameControlData.redScore : globalGameControlData.blueScore);
00079   
00080   data.opponentScore = (player.getTeamColor() == Player::blue ?
00081     globalGameControlData.redScore : globalGameControlData.blueScore);
00082   
00083   if (player.getTeamColor() == Player::red)
00084   {
00085     if (globalGameControlData.kickoff == GlobalGameControlData::kickoffRedTeam)
00086       data.kickoff = ROBOCUP_KICKOFF_OWN;
00087     else
00088       data.kickoff = ROBOCUP_KICKOFF_OPPONENT;
00089   }
00090   else
00091   {
00092     if (globalGameControlData.kickoff == GlobalGameControlData::kickoffBlueTeam)
00093       data.kickoff = ROBOCUP_KICKOFF_OWN;
00094     else
00095       data.kickoff = ROBOCUP_KICKOFF_OPPONENT;
00096   }
00097   timeStamp = SystemCall::getCurrentSystemTime();
00098 }
00099 
00100 bool GameControlData::operator == (const GameControlData& other)
00101 {
00102   if (data.state != other.data.state) return false;
00103   if (data.kickoff != other.data.kickoff) return false;
00104   if (data.ownScore != other.data.ownScore) return false;
00105   if (data.opponentScore != other.data.opponentScore) return false;
00106   if (data.penalty != other.data.penalty) return false;
00107   if (data.teamColor != other.data.teamColor) return false;
00108   return true;
00109 }
00110 
00111 In& operator>>(In& stream,GameControlData& gameControlData)
00112 {
00113   gameControlData.timeStamp = SystemCall::getCurrentSystemTime();
00114   stream.read(&gameControlData.data,sizeof(RoboCupGameControlData));
00115   return stream;
00116 }
00117 
00118 Out& operator<<(Out& stream, const GameControlData& gameControlData)
00119 {
00120   stream.write(&gameControlData.data,sizeof(RoboCupGameControlData));
00121   return stream;
00122 }
00123 
00124 
00125 /*
00126 * Change log :
00127 * 
00128 * $Log: GameControlData.cpp,v $
00129 * Revision 1.1.1.1  2004/05/22 17:26:03  cvsadm
00130 * created new repository GT2004_WM
00131 *
00132 * Revision 1.3  2004/03/15 12:50:31  tim
00133 * Adaptions to new GameController
00134 *
00135 * Revision 1.2  2003/12/06 17:45:33  loetzsch
00136 * replaced Player::playerRole (goalie, defender, striker1, striker2)
00137 * by Player::playerNumber (one, two, three, four)
00138 *
00139 * Revision 1.1  2003/10/07 10:09:36  cvsadm
00140 * Created GT2004 (M.J.)
00141 *
00142 * Revision 1.1.1.1  2003/07/02 09:40:23  cvsadm
00143 * created new repository for the competitions in Padova from the 
00144 * tamara CVS (Tuesday 2:00 pm)
00145 *
00146 * removed unused solutions
00147 *
00148 * Revision 1.3  2003/03/06 11:40:46  dueffert
00149 * re-order warning removed
00150 *
00151 * Revision 1.2  2003/03/05 11:10:05  loetzsch
00152 * added class GlobalGameControlData
00153 *
00154 * Revision 1.1  2002/09/10 15:26:40  cvsadm
00155 * Created new project GT2003 (M.L.)
00156 * - Cleaned up the /Src/DataTypes directory
00157 * - Removed Challenge Code
00158 * - Removed processing of incoming audio data
00159 * - Renamed AcousticMessage to SoundRequest
00160 *
00161 * Revision 1.2  2002/06/04 00:11:19  loetzsch
00162 * added == and != operator
00163 *
00164 * Revision 1.1.1.1  2002/05/10 12:40:13  cvsadm
00165 * Moved GT2002 Project from ute to tamara.
00166 *
00167 * Revision 1.1  2002/05/05 18:52:01  loetzsch
00168 * added
00169 * - GameControlData,
00170 * - Receivers for GameControlData
00171 * - access by behavior to GameControlData
00172 *
00173 */

Generated on Thu Sep 23 19:57:36 2004 for GT2004 by doxygen 1.3.6