Exemplo n.º 1
0
//
// GenerateCommand
// 
//
void Generate_Command(DriverBotPtr bot, int cmd)
{

	switch(cmd)
	{
		case ATTACK_COMMAND:
			bot->run = Attack_Command;
		break;

		case WANDER_COMMAND:
			bot->run = Wander_Command;
		break;

		case MOVE_COMMAND:
			bot->run = Move_Command;
		break;

		default: break;
	};

	bot->state = GetStartState(cmd);

	bot->last_command = bot->command;
	bot->command = cmd;

} // end of the function 
Exemplo n.º 2
0
bool 
OrderedTask::CheckTransitions(const AircraftState &state,
                              const AircraftState &state_last)
{
  if (!taskpoint_start)
    return false;

  taskpoint_start->ScanActive(*task_points[active_task_point]);

  if (!state.flying)
    return false;

  const int n_task = task_points.size();

  if (!n_task)
    return false;

  FlatBoundingBox bb_last(task_projection.project(state_last.location),1);
  FlatBoundingBox bb_now(task_projection.project(state.location),1);

  bool last_started = TaskStarted();
  const bool last_finished = TaskFinished();

  const int t_min = max(0, (int)active_task_point - 1);
  const int t_max = min(n_task - 1, (int)active_task_point);
  bool full_update = false;

  for (int i = t_min; i <= t_max; i++) {

    bool transition_enter = false;
    bool transition_exit = false;

    if (i==0) {
      full_update |= CheckTransitionOptionalStart(state, state_last,
                                                  bb_now, bb_last,
                                                  transition_enter,
                                                  transition_exit,
                                                  last_started);
    }

    full_update |= CheckTransitionPoint(*task_points[i],
                                        state, state_last, bb_now, bb_last,
                                        transition_enter, transition_exit,
                                        last_started, i == 0);

    if (i == (int)active_task_point) {
      const bool last_request_armed = task_advance.NeedToArm();

      if (task_advance.CheckReadyToAdvance(*task_points[i], state,
                                           transition_enter,
                                           transition_exit)) {
        task_advance.SetArmed(false);
        
        if (i + 1 < n_task) {
          i++;
          SetActiveTaskPoint(i);
          taskpoint_start->ScanActive(*task_points[active_task_point]);
          
          if (task_events != NULL)
            task_events->ActiveAdvanced(*task_points[i], i);

          // on sector exit, must update samples since start sector
          // exit transition clears samples
          full_update = true;
        }
      } else if (!last_request_armed && task_advance.NeedToArm()) {
        if (task_events != NULL)
          task_events->RequestArm(*task_points[i]);
      }
    }
  }

  taskpoint_start->ScanActive(*task_points[active_task_point]);

  stats.task_finished = TaskFinished();
  stats.task_started = TaskStarted();

  if (stats.task_started)
    taskpoint_finish->set_fai_finish_height(GetStartState().altitude - fixed(1000));

  if (task_events != NULL) {
    if (stats.task_started && !last_started)
      task_events->TaskStart();

    if (stats.task_finished && !last_finished)
      task_events->TaskFinish();
  }

  return full_update;
}
Exemplo n.º 3
0
static CJcToken* NextToken(CJcScanner* scanner){
	jc_int state;
	while (scanner->ch == ' ' ||
			scanner->ch >= 9 && scanner->ch <= 10 || scanner->ch == 13
	) NextCh(scanner);

	scanner->t = CreateToken(scanner);
	scanner->t->fcol = GetCol(scanner->buffer);
	scanner->t->fline = GetLine(scanner->buffer);
	scanner->t->fname = GetFileName(scanner->buffer);
	scanner->t->pos = scanner->pos;
	scanner->t->col = scanner->col;
	scanner->t->line = scanner->line;
	state = GetStartState(&scanner->start, scanner->ch);
	scanner->tlen = 0;
	AddCh(scanner);

	switch (state){
	case -1:
		scanner->t->kind = scanner->eofSym;
		break;
	case 0:
		scanner->t->kind = scanner->noSym;
		break;
		case 1:
			case_1:
			if (scanner->ch >= '0' && scanner->ch <= '9' || scanner->ch >= 'A' && scanner->ch <= 'Z' || scanner->ch == '_' || scanner->ch >= 'a' && scanner->ch <= 'z') {AddCh(scanner); goto case_1;}
			else {scanner->t->kind = 1; {char *literal = jcc_string_create(scanner->tval, 0, scanner->tlen); scanner->t->kind = GetKeyword(&scanner->keywords, literal, scanner->t->kind); free(literal); break;}}
		case 2:
			if (scanner->ch <= 9 || scanner->ch >= 11 && scanner->ch <= 12 || scanner->ch >= 14 && scanner->ch <= '&' || scanner->ch >= '(' && scanner->ch <= '[' || scanner->ch >= ']' && scanner->ch <= 65535) {AddCh(scanner); goto case_4;}
			else if (scanner->ch == 92) {AddCh(scanner); goto case_3;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 3:
			case_3:
			if (scanner->ch == '"' || scanner->ch == 39 || scanner->ch == '?' || scanner->ch == 92 || scanner->ch >= 'a' && scanner->ch <= 'b' || scanner->ch == 'f' || scanner->ch == 'n' || scanner->ch == 'r' || scanner->ch == 't' || scanner->ch == 'v') {AddCh(scanner); goto case_4;}
			else if (scanner->ch >= '0' && scanner->ch <= '7') {AddCh(scanner); goto case_5;}
			else if (scanner->ch == 'X' || scanner->ch == 'x') {AddCh(scanner); goto case_6;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 4:
			case_4:
			if (scanner->ch == 39) {AddCh(scanner); goto case_8;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 5:
			case_5:
			if (scanner->ch >= '0' && scanner->ch <= '7') {AddCh(scanner); goto case_87;}
			else if (scanner->ch == 39) {AddCh(scanner); goto case_8;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 6:
			case_6:
			if (scanner->ch >= '0' && scanner->ch <= '9' || scanner->ch >= 'A' && scanner->ch <= 'F' || scanner->ch >= 'a' && scanner->ch <= 'f') {AddCh(scanner); goto case_7;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 7:
			case_7:
			if (scanner->ch >= '0' && scanner->ch <= '9' || scanner->ch >= 'A' && scanner->ch <= 'F' || scanner->ch >= 'a' && scanner->ch <= 'f') {AddCh(scanner); goto case_4;}
			else if (scanner->ch == 39) {AddCh(scanner); goto case_8;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 8:
			case_8:
			{scanner->t->kind = 2; break;}
		case 9:
			case_9:
			if (scanner->ch <= 9 || scanner->ch >= 11 && scanner->ch <= 12 || scanner->ch >= 14 && scanner->ch <= '!' || scanner->ch >= '#' && scanner->ch <= '[' || scanner->ch >= ']' && scanner->ch <= 65535) {AddCh(scanner); goto case_9;}
			else if (scanner->ch == '"') {AddCh(scanner); goto case_14;}
			else if (scanner->ch == 92) {AddCh(scanner); goto case_10;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 10:
			case_10:
			if (scanner->ch == '"' || scanner->ch == 39 || scanner->ch == '?' || scanner->ch == 92 || scanner->ch >= 'a' && scanner->ch <= 'b' || scanner->ch == 'f' || scanner->ch == 'n' || scanner->ch == 'r' || scanner->ch == 't' || scanner->ch == 'v') {AddCh(scanner); goto case_9;}
			else if (scanner->ch >= '0' && scanner->ch <= '7') {AddCh(scanner); goto case_11;}
			else if (scanner->ch == 'X' || scanner->ch == 'x') {AddCh(scanner); goto case_12;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 11:
			case_11:
			if (scanner->ch <= 9 || scanner->ch >= 11 && scanner->ch <= 12 || scanner->ch >= 14 && scanner->ch <= '!' || scanner->ch >= '#' && scanner->ch <= '/' || scanner->ch >= '8' && scanner->ch <= '[' || scanner->ch >= ']' && scanner->ch <= 65535) {AddCh(scanner); goto case_9;}
			else if (scanner->ch >= '0' && scanner->ch <= '7') {AddCh(scanner); goto case_88;}
			else if (scanner->ch == '"') {AddCh(scanner); goto case_14;}
			else if (scanner->ch == 92) {AddCh(scanner); goto case_10;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 12:
			case_12:
			if (scanner->ch >= '0' && scanner->ch <= '9' || scanner->ch >= 'A' && scanner->ch <= 'F' || scanner->ch >= 'a' && scanner->ch <= 'f') {AddCh(scanner); goto case_13;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 13:
			case_13:
			if (scanner->ch <= 9 || scanner->ch >= 11 && scanner->ch <= 12 || scanner->ch >= 14 && scanner->ch <= '!' || scanner->ch >= '#' && scanner->ch <= '[' || scanner->ch >= ']' && scanner->ch <= 65535) {AddCh(scanner); goto case_9;}
			else if (scanner->ch == '"') {AddCh(scanner); goto case_14;}
			else if (scanner->ch == 92) {AddCh(scanner); goto case_10;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 14:
			case_14:
			{scanner->t->kind = 3; break;}
		case 15:
			case_15:
			if (scanner->ch == '8' || scanner->ch == 'L' || scanner->ch == 'l') {AddCh(scanner); goto case_25;}
			else if (scanner->ch == '1') {AddCh(scanner); goto case_16;}
			else if (scanner->ch == '3') {AddCh(scanner); goto case_17;}
			else if (scanner->ch == '6') {AddCh(scanner); goto case_18;}
			else {scanner->t->kind = 4; break;}
		case 16:
			case_16:
			if (scanner->ch == '6') {AddCh(scanner); goto case_25;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 17:
			case_17:
			if (scanner->ch == '2') {AddCh(scanner); goto case_25;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 18:
			case_18:
			if (scanner->ch == '4') {AddCh(scanner); goto case_25;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 19:
			case_19:
			if (scanner->ch == '8') {AddCh(scanner); goto case_25;}
			else if (scanner->ch == '1') {AddCh(scanner); goto case_20;}
			else if (scanner->ch == '3') {AddCh(scanner); goto case_21;}
			else if (scanner->ch == '6') {AddCh(scanner); goto case_22;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 20:
			case_20:
			if (scanner->ch == '6') {AddCh(scanner); goto case_25;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 21:
			case_21:
			if (scanner->ch == '2') {AddCh(scanner); goto case_25;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 22:
			case_22:
			if (scanner->ch == '4') {AddCh(scanner); goto case_25;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 23:
			case_23:
			if (scanner->ch >= '0' && scanner->ch <= '9' || scanner->ch >= 'A' && scanner->ch <= 'F' || scanner->ch >= 'a' && scanner->ch <= 'f') {AddCh(scanner); goto case_24;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 24:
			case_24:
			if (scanner->ch >= '0' && scanner->ch <= '9' || scanner->ch >= 'A' && scanner->ch <= 'F' || scanner->ch >= 'a' && scanner->ch <= 'f') {AddCh(scanner); goto case_24;}
			else if (scanner->ch == 'U' || scanner->ch == 'u') {AddCh(scanner); goto case_15;}
			else if (scanner->ch == 'I' || scanner->ch == 'i') {AddCh(scanner); goto case_19;}
			else {scanner->t->kind = 4; break;}
		case 25:
			case_25:
			{scanner->t->kind = 4; break;}
		case 26:
			case_26:
			if (scanner->ch >= '0' && scanner->ch <= '9') {AddCh(scanner); goto case_26;}
			else if (scanner->ch == 'F' || scanner->ch == 'f') {AddCh(scanner); goto case_39;}
			else if (scanner->ch == 'E' || scanner->ch == 'e') {AddCh(scanner); goto case_27;}
			else {scanner->t->kind = 5; break;}
		case 27:
			case_27:
			if (scanner->ch >= '0' && scanner->ch <= '9') {AddCh(scanner); goto case_29;}
			else if (scanner->ch == '+' || scanner->ch == '-') {AddCh(scanner); goto case_28;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 28:
			case_28:
			if (scanner->ch >= '0' && scanner->ch <= '9') {AddCh(scanner); goto case_29;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 29:
			case_29:
			if (scanner->ch >= '0' && scanner->ch <= '9') {AddCh(scanner); goto case_29;}
			else if (scanner->ch == 'F' || scanner->ch == 'f') {AddCh(scanner); goto case_39;}
			else {scanner->t->kind = 5; break;}
		case 30:
			case_30:
			if (scanner->ch >= '0' && scanner->ch <= '9') {AddCh(scanner); goto case_30;}
			else if (scanner->ch == '.') {AddCh(scanner); goto case_31;}
			else if (scanner->ch == 'E' || scanner->ch == 'e') {AddCh(scanner); goto case_36;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 31:
			case_31:
			if (scanner->ch >= '0' && scanner->ch <= '9') {AddCh(scanner); goto case_35;}
			else if (scanner->ch == 'F' || scanner->ch == 'f') {AddCh(scanner); goto case_39;}
			else if (scanner->ch == 'E' || scanner->ch == 'e') {AddCh(scanner); goto case_32;}
			else {scanner->t->kind = 5; break;}
		case 32:
			case_32:
			if (scanner->ch >= '0' && scanner->ch <= '9') {AddCh(scanner); goto case_34;}
			else if (scanner->ch == '+' || scanner->ch == '-') {AddCh(scanner); goto case_33;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 33:
			case_33:
			if (scanner->ch >= '0' && scanner->ch <= '9') {AddCh(scanner); goto case_34;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 34:
			case_34:
			if (scanner->ch >= '0' && scanner->ch <= '9') {AddCh(scanner); goto case_34;}
			else if (scanner->ch == 'F' || scanner->ch == 'f') {AddCh(scanner); goto case_39;}
			else {scanner->t->kind = 5; break;}
		case 35:
			case_35:
			if (scanner->ch >= '0' && scanner->ch <= '9') {AddCh(scanner); goto case_35;}
			else if (scanner->ch == 'F' || scanner->ch == 'f') {AddCh(scanner); goto case_39;}
			else if (scanner->ch == 'E' || scanner->ch == 'e') {AddCh(scanner); goto case_32;}
			else {scanner->t->kind = 5; break;}
		case 36:
			case_36:
			if (scanner->ch >= '0' && scanner->ch <= '9') {AddCh(scanner); goto case_38;}
			else if (scanner->ch == '+' || scanner->ch == '-') {AddCh(scanner); goto case_37;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 37:
			case_37:
			if (scanner->ch >= '0' && scanner->ch <= '9') {AddCh(scanner); goto case_38;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 38:
			case_38:
			if (scanner->ch >= '0' && scanner->ch <= '9') {AddCh(scanner); goto case_38;}
			else if (scanner->ch == 'F' || scanner->ch == 'f') {AddCh(scanner); goto case_39;}
			else {scanner->t->kind = 5; break;}
		case 39:
			case_39:
			{scanner->t->kind = 5; break;}
		case 40:
			case_40:
			if (scanner->ch == '.') {AddCh(scanner); goto case_41;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 41:
			case_41:
			{scanner->t->kind = 40; break;}
		case 42:
			case_42:
			{scanner->t->kind = 41; break;}
		case 43:
			case_43:
			{scanner->t->kind = 42; break;}
		case 44:
			case_44:
			{scanner->t->kind = 43; break;}
		case 45:
			case_45:
			{scanner->t->kind = 44; break;}
		case 46:
			case_46:
			{scanner->t->kind = 45; break;}
		case 47:
			case_47:
			{scanner->t->kind = 46; break;}
		case 48:
			case_48:
			{scanner->t->kind = 47; break;}
		case 49:
			case_49:
			{scanner->t->kind = 48; break;}
		case 50:
			case_50:
			{scanner->t->kind = 49; break;}
		case 51:
			case_51:
			{scanner->t->kind = 50; break;}
		case 52:
			case_52:
			{scanner->t->kind = 51; break;}
		case 53:
			case_53:
			{scanner->t->kind = 52; break;}
		case 54:
			case_54:
			{scanner->t->kind = 53; break;}
		case 55:
			case_55:
			{scanner->t->kind = 54; break;}
		case 56:
			case_56:
			{scanner->t->kind = 57; break;}
		case 57:
			case_57:
			{scanner->t->kind = 58; break;}
		case 58:
			case_58:
			{scanner->t->kind = 59; break;}
		case 59:
			case_59:
			{scanner->t->kind = 60; break;}
		case 60:
			case_60:
			{scanner->t->kind = 61; break;}
		case 61:
			{scanner->t->kind = 62; break;}
		case 62:
			{scanner->t->kind = 68; break;}
		case 63:
			{scanner->t->kind = 69; break;}
		case 64:
			case_64:
			{scanner->t->kind = 73; break;}
		case 65:
			case_65:
			{scanner->t->kind = 74; break;}
		case 66:
			case_66:
			{scanner->t->kind = 75; break;}
		case 67:
			case_67:
			{scanner->t->kind = 76; break;}
		case 68:
			{scanner->t->kind = 79; break;}
		case 69:
			{scanner->t->kind = 82; break;}
		case 70:
			{scanner->t->kind = 84; break;}
		case 71:
			case_71:
			if (scanner->ch >= '0' && scanner->ch <= '9') {AddCh(scanner); goto case_71;}
			else if (scanner->ch == 'U' || scanner->ch == 'u') {AddCh(scanner); goto case_15;}
			else if (scanner->ch == 'I' || scanner->ch == 'i') {AddCh(scanner); goto case_19;}
			else if (scanner->ch == '.') {AddCh(scanner); goto case_31;}
			else if (scanner->ch == 'E' || scanner->ch == 'e') {AddCh(scanner); goto case_36;}
			else {scanner->t->kind = 4; break;}
		case 72:
			case_72:
			if (scanner->ch >= '0' && scanner->ch <= '7') {AddCh(scanner); goto case_72;}
			else if (scanner->ch >= '8' && scanner->ch <= '9') {AddCh(scanner); goto case_30;}
			else if (scanner->ch == 'X' || scanner->ch == 'x') {AddCh(scanner); goto case_23;}
			else if (scanner->ch == 'U' || scanner->ch == 'u') {AddCh(scanner); goto case_15;}
			else if (scanner->ch == 'I' || scanner->ch == 'i') {AddCh(scanner); goto case_19;}
			else if (scanner->ch == '.') {AddCh(scanner); goto case_31;}
			else if (scanner->ch == 'E' || scanner->ch == 'e') {AddCh(scanner); goto case_36;}
			else {scanner->t->kind = 4; break;}
		case 73:
			if (scanner->ch >= '0' && scanner->ch <= '9') {AddCh(scanner); goto case_26;}
			else if (scanner->ch == '.') {AddCh(scanner); goto case_40;}
			else {scanner->t->kind = 83; break;}
		case 74:
			if (scanner->ch == '>') {AddCh(scanner); goto case_89;}
			else if (scanner->ch == '=') {AddCh(scanner); goto case_53;}
			else {scanner->t->kind = 81; break;}
		case 75:
			if (scanner->ch == '<') {AddCh(scanner); goto case_90;}
			else if (scanner->ch == '=') {AddCh(scanner); goto case_54;}
			else if (scanner->ch == '%') {AddCh(scanner); goto case_64;}
			else if (scanner->ch == ':') {AddCh(scanner); goto case_66;}
			else {scanner->t->kind = 80; break;}
		case 76:
			if (scanner->ch == '=') {AddCh(scanner); goto case_44;}
			else {scanner->t->kind = 63; break;}
		case 77:
			if (scanner->ch == '=') {AddCh(scanner); goto case_45;}
			else if (scanner->ch == '>') {AddCh(scanner); goto case_65;}
			else {scanner->t->kind = 64; break;}
		case 78:
			if (scanner->ch == '=') {AddCh(scanner); goto case_46;}
			else {scanner->t->kind = 65; break;}
		case 79:
			if (scanner->ch == '=') {AddCh(scanner); goto case_47;}
			else if (scanner->ch == '&') {AddCh(scanner); goto case_56;}
			else {scanner->t->kind = 66; break;}
		case 80:
			if (scanner->ch == '=') {AddCh(scanner); goto case_48;}
			else {scanner->t->kind = 67; break;}
		case 81:
			if (scanner->ch == '=') {AddCh(scanner); goto case_49;}
			else if (scanner->ch == '>') {AddCh(scanner); goto case_58;}
			else if (scanner->ch == '-') {AddCh(scanner); goto case_60;}
			else {scanner->t->kind = 70; break;}
		case 82:
			if (scanner->ch == '=') {AddCh(scanner); goto case_50;}
			else if (scanner->ch == '+') {AddCh(scanner); goto case_59;}
			else {scanner->t->kind = 71; break;}
		case 83:
			if (scanner->ch == '=') {AddCh(scanner); goto case_51;}
			else if (scanner->ch == '|') {AddCh(scanner); goto case_57;}
			else {scanner->t->kind = 77; break;}
		case 84:
			if (scanner->ch == '=') {AddCh(scanner); goto case_52;}
			else {scanner->t->kind = 85; break;}
		case 85:
			if (scanner->ch == '=') {AddCh(scanner); goto case_55;}
			else {scanner->t->kind = 72; break;}
		case 86:
			if (scanner->ch == '>') {AddCh(scanner); goto case_67;}
			else {scanner->t->kind = 78; break;}
		case 87:
			case_87:
			if (scanner->ch >= '0' && scanner->ch <= '7') {AddCh(scanner); goto case_4;}
			else if (scanner->ch == 39) {AddCh(scanner); goto case_8;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 88:
			case_88:
			if (scanner->ch <= 9 || scanner->ch >= 11 && scanner->ch <= 12 || scanner->ch >= 14 && scanner->ch <= '!' || scanner->ch >= '#' && scanner->ch <= '[' || scanner->ch >= ']' && scanner->ch <= 65535) {AddCh(scanner); goto case_9;}
			else if (scanner->ch == '"') {AddCh(scanner); goto case_14;}
			else if (scanner->ch == 92) {AddCh(scanner); goto case_10;}
			else {scanner->t->kind = scanner->noSym; break;}
		case 89:
			case_89:
			if (scanner->ch == '=') {AddCh(scanner); goto case_42;}
			else {scanner->t->kind = 56; break;}
		case 90:
			case_90:
			if (scanner->ch == '=') {AddCh(scanner); goto case_43;}
			else {scanner->t->kind = 55; break;}

	}
	AppendVal(scanner, scanner->t);
	return scanner->t;
}