// // 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
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; }
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; }