📄 sensehandler_8c-source.html
字号:
00143 <font class="keywordflow">if</font>( <a class="code" href="classSenseHandler.html#o5">iTriCounter</a> % 3 == 0 ) <font class="comment">// see will arrive</font>00144 {00145 <a class="code" href="classSenseHandler.html#o4">iTimeSignal</a> = (int)(<a class="code" href="classSenseHandler.html#o6">iSimStep</a> * <a class="code" href="classSenseHandler.html#o2">PS</a>-><a class="code" href="classPlayerSettings.html#a33">getFractionWaitSeeEnd</a>() );00146 <a class="code" href="classSenseHandler.html#o5">iTriCounter</a> = 0;00147 }00148 <font class="keywordflow">else</font> <font class="comment">// no see will arrive</font>00149 <a class="code" href="classSenseHandler.html#o4">iTimeSignal</a> = (int)(<a class="code" href="classSenseHandler.html#o6">iSimStep</a> * <a class="code" href="classSenseHandler.html#o2">PS</a>-><a class="code" href="classPlayerSettings.html#a29">getFractionWaitNoSee</a>() );00150 }00151 <font class="keywordflow">else</font> <font class="comment">// VA_NARROW AND VQ_HIGH</font>00152 <a class="code" href="classSenseHandler.html#o4">iTimeSignal</a> = (int)(<a class="code" href="classSenseHandler.html#o6">iSimStep</a> * <a class="code" href="classSenseHandler.html#o2">PS</a>-><a class="code" href="classPlayerSettings.html#a33">getFractionWaitSeeEnd</a>() );00153 00154 <a class="code" href="classSenseHandler.html#o5">iTriCounter</a>++;00155 <a class="code" href="classSenseHandler.html#o7">itv</a>.it_value.tv_usec = <a class="code" href="classSenseHandler.html#o4">iTimeSignal</a>;00156 setitimer( ITIMER_REAL, &<a class="code" href="classSenseHandler.html#o7">itv</a>, NULL );00157 }00158 <a name="l00163"></a><a class="code" href="classSenseHandler.html#a3">00163</a> <font class="keywordtype">bool</font> <a class="code" href="classSenseHandler.html#a3">SenseHandler::analyzeMessage</a>( <font class="keywordtype">char</font> *strMsg )00164 {00165 <font class="keywordflow">switch</font>( strMsg[1] )00166 {00167 <font class="keywordflow">case</font> <font class="charliteral">'c'</font>:00168 <font class="keywordflow">return</font> <a class="code" href="classSenseHandler.html#a10">analyzeChangePlayerTypeMessage</a>( strMsg ); <font class="comment">// ( c hange_</font>00169 <font class="keywordflow">case</font> <font class="charliteral">'o'</font>: <font class="comment">// ( o k</font>00170 <font class="keywordflow">if</font>( strlen(strMsg) > 14 && strMsg[4] == <font class="charliteral">'c'</font> && strMsg[10] == <font class="charliteral">'b'</font> )00171 <a class="code" href="classSenseHandler.html#a12">analyzeCheckBall</a>( strMsg ); <font class="comment">// (ok check_ball</font>00172 <font class="keywordflow">return</font> <font class="keyword">true</font>;00173 <font class="keywordflow">case</font> <font class="charliteral">'s'</font>:00174 {00175 <font class="keywordflow">switch</font>( strMsg[3] )00176 {00177 <font class="keywordflow">case</font> <font class="charliteral">'e'</font>:00178 <font class="keywordflow">if</font>( strMsg[5] == <font class="charliteral">'g'</font> )00179 <font class="keywordflow">return</font> <a class="code" href="classSenseHandler.html#a4">analyzeSeeGlobalMessage</a> ( strMsg ); <font class="comment">// (se e_g</font>00180 <font class="keywordflow">else</font>00181 <font class="keywordflow">return</font> <a class="code" href="classSenseHandler.html#a5">analyzeSeeMessage</a> ( strMsg ); <font class="comment">// (se e</font>00182 <font class="keywordflow">case</font> <font class="charliteral">'n'</font>: <font class="keywordflow">return</font> <a class="code" href="classSenseHandler.html#a6">analyzeSenseMessage</a> ( strMsg ); <font class="comment">// (se n se</font>00183 <font class="keywordflow">case</font> <font class="charliteral">'r'</font>: <font class="keywordflow">return</font> <a class="code" href="classSenseHandler.html#a11">analyzeServerParamMessage</a>( strMsg ); <font class="comment">// (se r ver_param</font>00184 <font class="keywordflow">default</font> : <font class="keywordflow">break</font>;00185 }00186 }00187 <font class="keywordflow">case</font> <font class="charliteral">'i'</font>: <font class="keywordflow">return</font> <a class="code" href="classSenseHandler.html#a7">analyzeInitMessage</a> ( strMsg ); <font class="comment">// ( i nit</font>00188 <font class="keywordflow">case</font> <font class="charliteral">'h'</font>: <font class="keywordflow">return</font> <a class="code" href="classSenseHandler.html#a8">analyzeHearMessage</a> ( strMsg ); <font class="comment">// ( h ear</font>00189 <font class="keywordflow">case</font> <font class="charliteral">'p'</font>: <font class="keywordflow">return</font> ( strMsg[8] == <font class="charliteral">'t'</font>)00190 ? <a class="code" href="classSenseHandler.html#a13">analyzePlayerTypeMessage</a> ( strMsg ) <font class="comment">// (player_ t ype</font>00191 : <a class="code" href="classSenseHandler.html#a14">analyzePlayerParamMessage</a>( strMsg ); <font class="comment">// (player_ p aram</font>00192 <font class="keywordflow">case</font> <font class="charliteral">'e'</font>: printf(<font class="stringliteral">"%s"</font>, strMsg); <font class="comment">// ( error</font>00193 <font class="keywordflow">default</font>: cerr << <font class="stringliteral">"(SenseHandler::analyzeMessage) "</font> <<00194 <font class="stringliteral">"ignored message: "</font> << strMsg << endl;00195 <font class="keywordflow">return</font> <font class="keyword">false</font>;00196 }00197 <font class="keywordflow">return</font> <font class="keyword">false</font>;00198 }00199 00200 <a name="l00206"></a><a class="code" href="classSenseHandler.html#a5">00206</a> <font class="keywordtype">bool</font> <a class="code" href="classSenseHandler.html#a5">SenseHandler::analyzeSeeMessage</a>( <font class="keywordtype">char</font> *strMsg )00207 {00208 strcpy( <a class="code" href="classSenseHandler.html#o0">WM</a>-><a class="code" href="classWorldModel.html#m3">strLastSeeMessage</a>, strMsg );00209 Log.logWithTime( 2, <font class="stringliteral">" incoming see message"</font> );00210 00211 <a class="code" href="SoccerTypes_8h.html#a240">ObjectT</a> o;00212 <font class="keywordtype">double</font> dDist, dDistChange, dDirChange, dTemp;00213 <font class="keywordtype">int</font> iDir, iBodyFacingDir, iHeadFacingDir, iTime = <a class="code" href="SoccerTypes_8h.html#a22">UnknownTime</a>;00214 <a class="code" href="classTime.html">Time</a> time = <a class="code" href="classSenseHandler.html#o0">WM</a>-><a class="code" href="classWorldModel.html#a12">getTimeLastSenseMessage</a>();00215 <font class="keywordtype">bool</font> isGoalie;00216 00217 iTime = <a class="code" href="classParse.html#d1">Parse::parseFirstInt</a>( &strMsg ); <font class="comment">// get the time</font>00218 <font class="keywordflow">if</font>( time.<a class="code" href="classTime.html#a3">getTime</a>() != iTime )00219 {00220 cerr << <font class="stringliteral">"(SenseHandler:analyzeSeeMessage) see with different time as sense:"</font>00221 << time.<a class="code" href="classTime.html#a3">getTime</a>() << <font class="stringliteral">" vs. "</font> << iTime << endl;00222 <font class="keywordflow">return</font> <font class="keyword">false</font>;00223 }00224 00225 <font class="comment">// reset the send pattern when previous cycle(s) no see arrived</font>00226 <font class="keywordflow">if</font>( <a class="code" href="classSenseHandler.html#o0">WM</a>-><a class="code" href="classWorldModel.html#a46">getAgentViewFrequency</a>() == 1.0 && <font class="comment">// VA_NORMAL; previous cycle no see</font>00227 time.<a class="code" href="classTime.html#a5">getTimeDifference</a>( <a class="code" href="classSenseHandler.html#o0">WM</a>-><a class="code" href="classWorldModel.html#a10">getTimeLastSeeMessage</a>() )== 2 )00228 <a class="code" href="classSenseHandler.html#o5">iTriCounter</a> = 1; <font class="comment">// see will arive in 2nd half in next cycle</font>00229 <font class="keywordflow">else</font> <font class="keywordflow">if</font>( <a class="code" href="classSenseHandler.html#o0">WM</a>-><a class="code" href="classWorldModel.html#a46">getAgentViewFrequency</a>() == 2.0 && <font class="comment">// VA_WIDE; two cycles no see</font>00230 time.<a class="code" href="classTime.html#a5">getTimeDifference</a>( <a class="code" href="classSenseHandler.html#o0">WM</a>-><a class="code" href="classWorldModel.html#a10">getTimeLastSeeMessage</a>() ) == 3 )00231 <a class="code" href="classSenseHandler.html#o5">iTriCounter</a> = 1; <font class="comment">// no see will arrive next two cycles</font>00232 00233 <font class="keywordflow">while</font>( *strMsg != <font class="charliteral">')'</font> ) <font class="comment">// " ((objname.." or ")"</font>00234 {00235 dDist = dDistChange = dDirChange = dTemp = <a class="code" href="SoccerTypes_8h.html#a19">UnknownDoubleValue</a>;00236 iDir = iBodyFacingDir = iHeadFacingDir = <a class="code" href="SoccerTypes_8h.html#a21">UnknownIntValue</a>;00237 strMsg += 2; <font class="comment">// get the object name</font>00238 00239 <font class="comment">// get the object name from the first part of the string</font>00240 o = <a class="code" href="classSoccerTypes.html#d1">SoccerTypes::getObjectFromStr</a>( &strMsg, &isGoalie, <a class="code" href="classSenseHandler.html#o0">WM</a>-><a class="code" href="classWorldModel.html#a18">getTeamName</a>() );00241 <font class="keywordflow">if</font>( o == <a class="code" href="SoccerTypes_8h.html#a240a113">OBJECT_ILLEGAL</a> )00242 {00243 Log.log( 4, <font class="stringliteral">"Illegal object in: "</font>, <a class="code" href="classSenseHandler.html#o0">WM</a>-><a class="code" href="classWorldModel.html#m3">strLastSeeMessage</a> );00244 Log.log( 4, <font class="stringliteral">"rest of message: "</font>, strMsg );00245 }00246 00247 dTemp = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &strMsg ); <font class="comment">// parse first value</font>00248 <font class="keywordflow">if</font> ( *strMsg == <font class="charliteral">')'</font> ) <font class="comment">// if it was the only value</font>00249 iDir = (int)dTemp; <font class="comment">// it was the direction</font>00250 <font class="keywordflow">else</font>00251 {00252 dDist = dTemp; <font class="comment">// else it was distance</font>00253 iDir = <a class="code" href="classParse.html#d1">Parse::parseFirstInt</a>( &strMsg ); <font class="comment">// and have to get direction</font>00254 <font class="keywordflow">if</font>( *strMsg != <font class="charliteral">')'</font> ) <font class="comment">// stil not finished</font>00255 { <font class="comment">// get dist and dir change</font>00256 dDistChange = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &strMsg );00257 dDirChange = <a class="code" href="classParse.html#d0">Parse::parseFirstDouble</a>( &strMsg );00258 }00259 <font class="keywordflow">if</font>( *strMsg != <font class="charliteral">')'</font> ) <font class="comment">// and stil not finished</font>00260 { <font class="comment">// get also facing dir.</font>00261 iBodyFacingDir = <a class="code" href="classParse.html#d1">Parse::parseFirstInt</a>( &strMsg );00262 iHeadFacingDir = <a class="code" href="classParse.html#d1">Parse::parseFirstInt</a>( &strMsg );00263 }00264 }00265 <font class="comment">// skip ending bracket of object information.</font>00266 strMsg++;00267 00268 <font class="comment">// process the parsed information (unread values are Unknown...)</font>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -