📄 parse.c
字号:
else /* know direction*/ Mem->SeeBall(dist, ang, distChng, dirChng, time); } else if ( object=='B' ){ /* It's the ball */ /* out of view */ if ( view_qual == LOW_QUALITY ) /* low quality */ Mem->SeeBall(ang, time); else /* high quality */ Mem->SeeBall(dist, ang, time); }/* player */ else if ( object=='p' ){ /* It's another player */ if ( !player_side ){ /* Too far for team or num */ if ( view_qual == LOW_QUALITY ) /* low quality */ Mem->SeePlayer(ang, time); else if ( dirChng == NODIR ) /* high quality */ Mem->SeePlayer(dist, ang, time); else /* know direction*/ ;//my_error("Shouldn't know dirChng when the player's far"); } else{ if ( !player_number ){ /* Too far for number */ if ( view_qual == LOW_QUALITY ) /* low quality */ Mem->SeePlayer(player_side, ang, time); else if ( dirChng == NODIR ) /* high quality */ Mem->SeePlayer(player_side, dist, ang, time); else /* know direction*/ ;//my_error("Shouldn't know dirChng when the team member's far"); } else{ /* Know side AND number */ if ( view_qual == LOW_QUALITY ) /* low quality */ Mem->SeePlayer(player_side, player_number, ang, time); else if ( dirChng == NODIR ){ /* high quality */ my_error("Should know dirChng when know number"); Mem->SeePlayer(player_side, player_number, dist, ang, time); } else /* know direction*/ Mem->SeePlayer(player_side, player_number, dist, ang, distChng, dirChng, time); } } } else if ( object == 'P' ){ /* It's another player */ if ( view_qual == LOW_QUALITY ) /* low quality */ Mem->SeePlayer(ang, time); else if ( dirChng == NODIR ) /* high quality */ Mem->SeePlayer(dist, ang, time); /*my_error("Should know dirChng when a player's within 3");*/ else /* know direction*/ /* Mem->SeePlayer(dist, ang, distChng, dirChng, time);*/ my_error("Shouldn't know dirChng when out of view"); } } return closestMarker;}/*********************************************************************************/int ParseSound(int time, char *msg){ /** printf("sndr: %s msg: %s\n",sndr,msg); **/ msg++; /* " " */ if ( *msg=='r' ){ /* referee (or coach) */ msg+=8; /* "referee " */ if ( isupper(*msg) ){ /* coach messages are capitalized */ HearCoach(msg,time); return COACH; } else{ ParseRefereeMessage(msg,time); return REFEREE; } } else if ( *msg != 's' ){ /* not "self": it's not your own message */ int num,form,formtime,pos,key; char team[50]; float x,y; float ang = get_float(msg); while ( *(msg++) != ' ' ); /* advance past ang and space */ char side; if ( !strncmp(msg,Mem->MyTeamName,Mem->MyTeamNameLen) ) side = Mem->MySide; else side = Mem->TheirSide; if ( side == Mem->MySide ){ while ( isalnum(*msg++) ); /* advance past team name and space */ sscanf(msg,"%d %d %d %d %d %f %f %[^)]",&num,&key,&form,&formtime,&pos,&x,&y,msg); /* Call the communications.c HearPlayer which calls Mem->HearPlayer */ HearTeammate(num, key, ang, form, formtime, pos, x, y, msg, time); return TEAMMATE; } else { HearOpponent(ang, msg, time, TRUE); /* It's the opponent--don't know number */ return OPPONENT; } } return SELF;}/*********************************************************************************/void ParseRefereeMessage(char *msg, int time){ switch( msg[0] ){ case 'p': Mem->PlayMode = PLAY_ON; break; /* play_on */ case 'k': Mem->SetPlay = FALSE; Mem->SetMyselfInactive(); if ( msg[5] == 'i' ){ /* kick_in */ if ( msg[8] == Mem->MySide ) Mem->PlayMode = MY_KICK_IN; else if ( msg[8] == Mem->TheirSide ) Mem->PlayMode = THEIR_KICK_IN; else my_error("kick_in_?"); if ( Mem->QActionTaken ) Mem->CloseRewards(); } else if ( msg[5] == 'o' ){ /* kick_off */ if ( msg[9] == Mem->MySide ) Mem->PlayMode = MY_KICK_OFF; else if ( msg[9] == Mem->TheirSide ) Mem->PlayMode = THEIR_KICK_OFF; else my_error("kick_off_?"); } else my_error("referee k..?"); break; case 'g': Mem->SetPlay = FALSE; Mem->SetMyselfInactive(); if ( msg[5] == 'k' ){ /* goal_kick */ if ( msg[10] == Mem->MySide ) Mem->PlayMode = MY_GOAL_KICK; else if ( msg[10] == Mem->TheirSide ) Mem->PlayMode = THEIR_GOAL_KICK; else my_error("goal_kick_?"); if ( Mem->QActionTaken ) Mem->CloseRewards(); } else if ( msg[5] == Mem->MySide ){ /* goal */ Mem->MyScore++; /* printf("Server says my score = %c, I say %d\n",msg[7], Mem->MyScore); */ Mem->StoppedClockTime=0; /* Measures sights since clock stopped */ Mem->KickOffMode = THEIR_KICK_OFF; Mem->PlayMode = BEFORE_KICK_OFF; } else if ( msg[5] == Mem->TheirSide ){ Mem->TheirScore++; /* printf("Server says their score = %c, I say %d\n",msg[7], Mem->TheirScore); */ Mem->StoppedClockTime=0; /* Measures sights since clock stopped */ Mem->KickOffMode = MY_KICK_OFF; Mem->PlayMode = BEFORE_KICK_OFF; } else my_error("referee g..?"); if ( Mem->QActionTaken ) Mem->CloseRewards(); break; case 'c': /* corner_kick */ Mem->SetPlay = FALSE; Mem->SetMyselfInactive(); if ( msg[12] == Mem->MySide ) Mem->PlayMode = MY_CORNER_KICK; else if ( msg[12] == Mem->TheirSide ) Mem->PlayMode = THEIR_CORNER_KICK; else my_error("corner_kick_?"); if ( Mem->QActionTaken ) Mem->CloseRewards(); break; case 'd': Mem->PlayMode = DROP_BALL; break; /* drop_ball */ case 'f': Mem->SetPlay = FALSE; Mem->SetMyselfInactive(); if ( msg[5] == 'k' ){ /* free_kick */ if ( msg[10] == Mem->MySide ) Mem->PlayMode = MY_FREE_KICK; else if ( msg[10] == Mem->TheirSide ) Mem->PlayMode = THEIR_FREE_KICK; else my_error("free_kick_?"); } else if ( msg[5] == Mem->MySide ) /* foul */ ; else if ( msg[5] == Mem->TheirSide ) ; else my_error("referee f..?"); break; case 'h': /* half_time */ Mem->StoppedClockTime=0; /* Measures sights since clock stopped */ Mem->StaminaReset(); /* this is only chance before changing */ Mem->PlayMode = HALF_TIME; /* play_mode to before_kick_off */ Mem->SetPlay = FALSE; Mem->SetMyselfInactive(); if ( Mem->MySide == 'l' ) Mem->KickOffMode = THEIR_KICK_OFF; else Mem->KickOffMode = MY_KICK_OFF; break; case 'b': Mem->PlayMode = BEFORE_KICK_OFF; break; /* before_kick_off */ case 't': if ( msg[5] == 'u' ) /* time_up */ Mem->PlayMode = TIME_UP; else if ( msg[5] == 'o' ) /* time_over */ break; else if ( msg[5] == 'e' ){ /* time_extended */ Mem->StoppedClockTime = 0; Mem->StaminaReset(); Mem->PlayMode = EXTENDED_TIME; Mem->SetPlay = FALSE; Mem->SetMyselfInactive(); if ( Mem->MySide == 'l' ) Mem->KickOffMode = MY_KICK_OFF; else Mem->KickOffMode = THEIR_KICK_OFF; } else my_error("referee t..?"); break; /* case 'e': break; /* extend */ default: my_error("Referee msg ????"); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -