00001
00002
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00031
00032 #ifndef RCSC_COACH_PLAYER_CHANGE_STATE_H
00033 #define RCSC_COACH_PLAYER_CHANGE_STATE_H
00034
00035 #include <map>
00036
00037 namespace rcsc {
00038
00039 class GameTime;
00040 class GameMode;
00041
00046 class PlayerChangeState {
00047 private:
00048 int M_change_count;
00049
00050
00051
00052 std::map< int, int > M_teammate_type_count;
00053
00054 int M_teammate_types[11];
00055 bool M_opponent_changed[11];
00056
00057
00058
00059 PlayerChangeState( const PlayerChangeState & );
00060 PlayerChangeState & operator=( const PlayerChangeState & );
00061 public:
00062 PlayerChangeState();
00063
00064
00065
00066
00067 void parse( const char * msg,
00068 const GameMode & game_mode,
00069 const GameTime & current );
00070 private:
00071 void change(const int unum, const int type);
00072
00073 public:
00074
00075
00076 bool canChange( const int unum,
00077 const int type,
00078 const GameMode & game_mode,
00079 const GameTime & current ) const;
00080
00081 int getTeammateType( const int unum ) const;
00082 bool isOpponentChanged( const int unum ) const;
00083
00084
00085 };
00086
00087 }
00088
00089 #endif