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_COACH_AUDIO_SENSOR_H
00033 #define RCSC_COACH_COACH_AUDIO_SENSOR_H
00034
00035 #include <rcsc/common/audio_message.h>
00036
00037 #include <rcsc/game_time.h>
00038 #include <rcsc/types.h>
00039 #include <rcsc/geom/vector_2d.h>
00040
00041 #include <boost/shared_ptr.hpp>
00042
00043 #include <string>
00044 #include <map>
00045 #include <list>
00046
00047 namespace rcsc {
00048
00049 class SayMessageParser;
00050
00051
00056 class CoachAudioSensor {
00057 private:
00058
00060 typedef std::map< char, boost::shared_ptr< SayMessageParser > > ParserMap;
00061
00063 std::string M_team_name;
00064
00066 ParserMap M_say_message_parsers;
00067
00069 GameTime M_teammate_message_time;
00070
00072 std::list< HearMessage > M_teammate_messages;
00073
00075 GameTime M_opponent_message_time;
00076
00078 std::list< HearMessage > M_opponent_messages;
00079
00081 GameTime M_trainer_message_time;
00082
00084 std::string M_trainer_message;
00085
00086 public:
00090 CoachAudioSensor();
00091
00096 void setTeamName( const std::string & team_name );
00097
00102 void addParser( boost::shared_ptr< SayMessageParser > parser );
00103
00108 void removeParser( const char header );
00109
00115 void parsePlayerMessage( const char * msg,
00116 const GameTime & current );
00117
00123 void parseTrainerMessage( const char * msg,
00124 const GameTime & current );
00125
00130 const
00131 GameTime & teammateMessageTime() const
00132 {
00133 return M_teammate_message_time;
00134 }
00135
00140 const
00141 std::list< HearMessage > & teammateMessages() const
00142 {
00143 return M_teammate_messages;
00144 }
00145
00150 const
00151 GameTime & trainerMessageTime() const
00152 {
00153 return M_trainer_message_time;
00154 }
00155
00160 const
00161 std::string & trainerMessage() const
00162 {
00163 return M_trainer_message;
00164 }
00165
00166 private:
00167
00168
00169
00170
00171 void parseTeammateMessage( const HearMessage & message );
00172
00173 };
00174
00175 }
00176
00177 #endif