10 #ifndef AIRPORT_MOVEMENT_H
11 #define AIRPORT_MOVEMENT_H
35 #define AMD(x, y, flags, dir) { x, y, flags, dir }
410 static const uint8_t _airport_entries_dummy[] = {0, 1, 2, 3};
422 static const uint8_t _airport_terminal_country[] = {1, 2};
423 static const uint8_t _airport_entries_country[] = {16, 15, 18, 17};
425 { 0,
HANGAR, NOTHING_block, 1 },
426 { 1,
TERMGROUP, AIRPORT_BUSY_block, 0 }, { 1,
HANGAR, 0, 0 }, { 1,
TERM1,
TERM1_block, 2 }, { 1,
TERM2, 0, 4 }, { 1,
HELITAKEOFF, 0, 19 }, { 1,
TO_ALL, 0, 6 },
429 { 4,
TERMGROUP, AIRPORT_BUSY_block, 0 }, { 4,
TERM2, 0, 5 }, { 4,
HANGAR, 0, 1 }, { 4,
TAKEOFF, 0, 6 }, { 4,
HELITAKEOFF, 0, 1 },
430 { 5,
TERMGROUP, AIRPORT_BUSY_block, 0 }, { 5,
TERM2,
TERM2_block, 3 }, { 5,
TO_ALL, 0, 4 },
431 { 6, 0, AIRPORT_BUSY_block, 7 },
433 { 7,
TAKEOFF, AIRPORT_BUSY_block, 8 },
437 { 10,
FLYING, NOTHING_block, 15 }, { 10,
LANDING, 0, 11 }, { 10,
HELILANDING, 0, 20 },
438 { 11,
LANDING, AIRPORT_BUSY_block, 12 },
439 { 12,
TO_ALL, AIRPORT_BUSY_block, 13 },
440 { 13,
ENDLANDING, AIRPORT_BUSY_block, 14 }, { 13,
TERM2, 0, 5 }, { 13,
TO_ALL, 0, 14 },
441 { 14,
TO_ALL, AIRPORT_BUSY_block, 1 },
443 { 15,
TO_ALL, NOTHING_block, 16 },
444 { 16,
TO_ALL, NOTHING_block, 17 },
445 { 17,
TO_ALL, NOTHING_block, 18 },
446 { 18,
TO_ALL, NOTHING_block, 10 },
454 static const uint8_t _airport_terminal_commuter[] = { 1, 3 };
455 static const uint8_t _airport_entries_commuter[] = {22, 21, 24, 23};
457 { 0,
HANGAR, NOTHING_block, 1 }, { 0,
HELITAKEOFF, TAXIWAY_BUSY_block, 1 }, { 0,
TO_ALL, 0, 1 },
458 { 1,
TERMGROUP, TAXIWAY_BUSY_block, 0 }, { 1,
HANGAR, 0, 0 }, { 1,
TAKEOFF, 0, 11 }, { 1,
TERM1, TAXIWAY_BUSY_block, 10 }, { 1,
TERM2, TAXIWAY_BUSY_block, 10 }, { 1,
TERM3, TAXIWAY_BUSY_block, 10 }, { 1,
HELIPAD1, TAXIWAY_BUSY_block, 10 }, { 1,
HELIPAD2, TAXIWAY_BUSY_block, 10 }, { 1,
HELITAKEOFF, TAXIWAY_BUSY_block, 37 }, { 1,
TO_ALL, 0, 0 },
459 { 2,
TERMGROUP, AIRPORT_ENTRANCE_block, 2 }, { 2,
HANGAR, 0, 8 }, { 2,
TERM1, 0, 8 }, { 2,
TERM2, 0, 8 }, { 2,
TERM3, 0, 8 }, { 2,
HELIPAD1, 0, 8 }, { 2,
HELIPAD2, 0, 8 }, { 2,
HELITAKEOFF, 0, 8 }, { 2,
TO_ALL, 0, 2 },
460 { 3,
TERM1,
TERM1_block, 8 }, { 3,
HANGAR, 0, 8 }, { 3,
TAKEOFF, 0, 8 }, { 3,
TO_ALL, 0, 3 },
461 { 4,
TERM2,
TERM2_block, 9 }, { 4,
HANGAR, 0, 9 }, { 4,
TAKEOFF, 0, 9 }, { 4,
TO_ALL, 0, 4 },
462 { 5,
TERM3,
TERM3_block, 10 }, { 5,
HANGAR, 0, 10 }, { 5,
TAKEOFF, 0, 10 }, { 5,
TO_ALL, 0, 5 },
463 { 6,
HELIPAD1,
HELIPAD1_block, 6 }, { 6,
HANGAR, TAXIWAY_BUSY_block, 9 }, { 6,
HELITAKEOFF, 0, 35 },
464 { 7,
HELIPAD2,
HELIPAD2_block, 7 }, { 7,
HANGAR, TAXIWAY_BUSY_block, 10 }, { 7,
HELITAKEOFF, 0, 36 },
465 { 8,
TERMGROUP, TAXIWAY_BUSY_block, 8 }, { 8,
TAKEOFF, TAXIWAY_BUSY_block, 9 }, { 8,
HANGAR, TAXIWAY_BUSY_block, 9 }, { 8,
TERM1,
TERM1_block, 3 }, { 8,
TO_ALL, TAXIWAY_BUSY_block, 9 },
466 { 9,
TERMGROUP, TAXIWAY_BUSY_block, 9 }, { 9,
TAKEOFF, TAXIWAY_BUSY_block, 10 }, { 9,
HANGAR, TAXIWAY_BUSY_block, 10 }, { 9,
TERM2,
TERM2_block, 4 }, { 9,
HELIPAD1,
HELIPAD1_block, 6 }, { 9,
HELITAKEOFF,
HELIPAD1_block, 6 }, { 9,
TERM1, TAXIWAY_BUSY_block, 8 }, { 9,
TO_ALL, TAXIWAY_BUSY_block, 10 },
467 { 10,
TERMGROUP, TAXIWAY_BUSY_block, 10 }, { 10,
TERM3,
TERM3_block, 5 }, { 10,
HELIPAD1, 0, 9 }, { 10,
HELIPAD2,
HELIPAD2_block, 7 }, { 10,
HELITAKEOFF, 0, 1 }, { 10,
TAKEOFF, TAXIWAY_BUSY_block, 1 }, { 10,
HANGAR, TAXIWAY_BUSY_block, 1 }, { 10,
TO_ALL, TAXIWAY_BUSY_block, 9 },
468 { 11,
TO_ALL, OUT_WAY_block, 12 },
470 { 12,
TAKEOFF, RUNWAY_IN_OUT_block, 13 },
471 { 13,
TO_ALL, RUNWAY_IN_OUT_block, 14 },
475 { 16,
FLYING, NOTHING_block, 21 }, { 16,
LANDING, IN_WAY_block, 17 }, { 16,
HELILANDING, 0, 25 },
476 { 17,
LANDING, RUNWAY_IN_OUT_block, 18 },
477 { 18,
TO_ALL, RUNWAY_IN_OUT_block, 19 },
478 { 19,
TO_ALL, RUNWAY_IN_OUT_block, 20 },
481 { 21,
TO_ALL, NOTHING_block, 22 },
482 { 22,
TO_ALL, NOTHING_block, 23 },
483 { 23,
TO_ALL, NOTHING_block, 24 },
484 { 24,
TO_ALL, NOTHING_block, 16 },
487 { 26,
HELIENDLANDING, PRE_HELIPAD_block, 26 }, { 26,
HELIPAD1, 0, 27 }, { 26,
HELIPAD2, 0, 28 }, { 26,
HANGAR, 0, 33 },
488 { 27,
TO_ALL, NOTHING_block, 29 },
489 { 28,
TO_ALL, NOTHING_block, 30 },
496 { 33,
TO_ALL, TAXIWAY_BUSY_block, 34 },
497 { 34,
TO_ALL, TAXIWAY_BUSY_block, 1 },
505 static const uint8_t _airport_terminal_city[] = { 1, 3 };
506 static const uint8_t _airport_entries_city[] = {26, 29, 27, 28};
508 { 0,
HANGAR, NOTHING_block, 1 }, { 0,
TAKEOFF, OUT_WAY_block, 1 }, { 0,
TO_ALL, 0, 1 },
509 { 1,
TERMGROUP, TAXIWAY_BUSY_block, 0 }, { 1,
HANGAR, 0, 0 }, { 1,
TERM2, 0, 6 }, { 1,
TERM3, 0, 6 }, { 1,
TO_ALL, 0, 7 },
510 { 2,
TERM1,
TERM1_block, 7 }, { 2,
TAKEOFF, OUT_WAY_block, 7 }, { 2,
TO_ALL, 0, 7 },
511 { 3,
TERM2,
TERM2_block, 5 }, { 3,
TAKEOFF, OUT_WAY_block, 6 }, { 3,
TO_ALL, 0, 6 },
512 { 4,
TERM3,
TERM3_block, 5 }, { 4,
TAKEOFF, OUT_WAY_block, 5 }, { 4,
TO_ALL, 0, 5 },
513 { 5,
TERMGROUP, TAXIWAY_BUSY_block, 0 }, { 5,
TERM2,
TERM2_block, 3 }, { 5,
TERM3,
TERM3_block, 4 }, { 5,
TO_ALL, 0, 6 },
514 { 6,
TERMGROUP, TAXIWAY_BUSY_block, 0 }, { 6,
TERM2,
TERM2_block, 3 }, { 6,
TERM3, 0, 5 }, { 6,
HANGAR, 0, 1 }, { 6,
TO_ALL, 0, 7 },
515 { 7,
TERMGROUP, TAXIWAY_BUSY_block, 0 }, { 7,
TERM1,
TERM1_block, 2 }, { 7,
TAKEOFF, OUT_WAY_block, 8 }, { 7,
HELITAKEOFF, 0, 22 }, { 7,
HANGAR, 0, 1 }, { 7,
TO_ALL, 0, 6 },
516 { 8, 0, OUT_WAY_block, 9 },
517 { 9, 0, RUNWAY_IN_OUT_block, 10 },
519 { 10,
TAKEOFF, RUNWAY_IN_OUT_block, 11 },
523 { 13,
FLYING, NOTHING_block, 18 }, { 13,
LANDING, 0, 14 }, { 13,
HELILANDING, 0, 23 },
524 { 14,
LANDING, RUNWAY_IN_OUT_block, 15 },
525 { 15,
TO_ALL, RUNWAY_IN_OUT_block, 17 },
526 { 16,
TO_ALL, RUNWAY_IN_OUT_block, 17 },
529 { 18,
TO_ALL, NOTHING_block, 25 },
530 { 19,
TO_ALL, NOTHING_block, 20 },
531 { 20,
TO_ALL, NOTHING_block, 21 },
532 { 21,
TO_ALL, NOTHING_block, 13 },
537 { 25,
TO_ALL, NOTHING_block, 20},
538 { 26,
TO_ALL, NOTHING_block, 19},
539 { 27,
TO_ALL, NOTHING_block, 28},
540 { 28,
TO_ALL, NOTHING_block, 19},
541 { 29,
TO_ALL, NOTHING_block, 26},
546 static const uint8_t _airport_terminal_metropolitan[] = { 1, 3 };
547 static const uint8_t _airport_entries_metropolitan[] = {20, 19, 22, 21};
549 { 0,
HANGAR, NOTHING_block, 1 },
550 { 1,
TERMGROUP, TAXIWAY_BUSY_block, 0 }, { 1,
HANGAR, 0, 0 }, { 1,
TERM2, 0, 6 }, { 1,
TERM3, 0, 6 }, { 1,
TO_ALL, 0, 7 },
554 { 5,
TERMGROUP, TAXIWAY_BUSY_block, 0 }, { 5,
TERM2,
TERM2_block, 3 }, { 5,
TERM3,
TERM3_block, 4 }, { 5,
TO_ALL, 0, 6 },
555 { 6,
TERMGROUP, TAXIWAY_BUSY_block, 0 }, { 6,
TERM2,
TERM2_block, 3 }, { 6,
TERM3, 0, 5 }, { 6,
HANGAR, 0, 1 }, { 6,
TO_ALL, 0, 7 },
556 { 7,
TERMGROUP, TAXIWAY_BUSY_block, 0 }, { 7,
TERM1,
TERM1_block, 2 }, { 7,
TAKEOFF, 0, 8 }, { 7,
HELITAKEOFF, 0, 23 }, { 7,
HANGAR, 0, 1 }, { 7,
TO_ALL, 0, 6 },
557 { 8, 0, OUT_WAY_block, 9 },
558 { 9, 0, RUNWAY_OUT_block, 10 },
560 { 10,
TAKEOFF, RUNWAY_OUT_block, 11 },
564 { 13,
FLYING, NOTHING_block, 19 }, { 13,
LANDING, 0, 14 }, { 13,
HELILANDING, 0, 25 },
565 { 14,
LANDING, RUNWAY_IN_block, 15 },
566 { 15,
TO_ALL, RUNWAY_IN_block, 16 },
571 { 19,
TO_ALL, NOTHING_block, 20 },
572 { 20,
TO_ALL, NOTHING_block, 21 },
573 { 21,
TO_ALL, NOTHING_block, 22 },
574 { 22,
TO_ALL, NOTHING_block, 13 },
576 { 23,
TO_ALL, NOTHING_block, 24 },
580 { 27,
TERMGROUP, TAXIWAY_BUSY_block, 27 }, { 27,
TERM1,
TERM1_block, 2 }, { 27,
TO_ALL, 0, 7 },
585 static const uint8_t _airport_terminal_international[] = { 2, 3, 3 };
586 static const uint8_t _airport_entries_international[] = { 38, 37, 40, 39 };
588 { 0,
HANGAR, NOTHING_block, 2 }, { 0,
TERMGROUP, TERM_GROUP1_block, 0 }, { 0,
TERMGROUP, TERM_GROUP2_ENTER1_block, 1 }, { 0,
HELITAKEOFF, AIRPORT_ENTRANCE_block, 2 }, { 0,
TO_ALL, 0, 2 },
589 { 1,
HANGAR, NOTHING_block, 3 }, { 1,
TERMGROUP, HANGAR2_AREA_block, 1 }, { 1,
HELITAKEOFF, HANGAR2_AREA_block, 3 }, { 1,
TO_ALL, 0, 3 },
590 { 2,
TERMGROUP, AIRPORT_ENTRANCE_block, 0 }, { 2,
HANGAR, 0, 0 }, { 2,
TERM4, 0, 12 }, { 2,
TERM5, 0, 12 }, { 2,
TERM6, 0, 12 }, { 2,
HELIPAD1, 0, 12 }, { 2,
HELIPAD2, 0, 12 }, { 2,
HELITAKEOFF, 0, 51 }, { 2,
TO_ALL, 0, 23 },
591 { 3,
TERMGROUP, HANGAR2_AREA_block, 0 }, { 3,
HANGAR, 0, 1 }, { 3,
HELITAKEOFF, 0, 52 }, { 3,
TO_ALL, 0, 18 },
592 { 4,
TERM1,
TERM1_block, 23 }, { 4,
HANGAR, AIRPORT_ENTRANCE_block, 23 }, { 4,
TO_ALL, 0, 23 },
593 { 5,
TERM2,
TERM2_block, 24 }, { 5,
HANGAR, AIRPORT_ENTRANCE_block, 24 }, { 5,
TO_ALL, 0, 24 },
594 { 6,
TERM3,
TERM3_block, 25 }, { 6,
HANGAR, AIRPORT_ENTRANCE_block, 25 }, { 6,
TO_ALL, 0, 25 },
595 { 7,
TERM4,
TERM4_block, 16 }, { 7,
HANGAR, HANGAR2_AREA_block, 16 }, { 7,
TO_ALL, 0, 16 },
596 { 8,
TERM5,
TERM5_block, 17 }, { 8,
HANGAR, HANGAR2_AREA_block, 17 }, { 8,
TO_ALL, 0, 17 },
597 { 9,
TERM6,
TERM6_block, 18 }, { 9,
HANGAR, HANGAR2_AREA_block, 18 }, { 9,
TO_ALL, 0, 18 },
598 { 10,
HELIPAD1,
HELIPAD1_block, 10 }, { 10,
HANGAR, HANGAR2_AREA_block, 16 }, { 10,
HELITAKEOFF, 0, 47 },
599 { 11,
HELIPAD2,
HELIPAD2_block, 11 }, { 11,
HANGAR, HANGAR2_AREA_block, 17 }, { 11,
HELITAKEOFF, 0, 48 },
600 { 12,
TO_ALL, TERM_GROUP2_ENTER1_block, 13 },
601 { 13,
TO_ALL, TERM_GROUP2_ENTER1_block, 14 },
602 { 14,
TO_ALL, TERM_GROUP2_ENTER2_block, 15 },
603 { 15,
TO_ALL, TERM_GROUP2_ENTER2_block, 16 },
604 { 16,
TERMGROUP, TERM_GROUP2_block, 0 }, { 16,
TERM4,
TERM4_block, 7 }, { 16,
HELIPAD1,
HELIPAD1_block, 10 }, { 16,
HELITAKEOFF,
HELIPAD1_block, 10 }, { 16,
TO_ALL, 0, 17 },
605 { 17,
TERMGROUP, TERM_GROUP2_block, 0 }, { 17,
TERM5,
TERM5_block, 8 }, { 17,
TERM4, 0, 16 }, { 17,
HELIPAD1, 0, 16 }, { 17,
HELIPAD2,
HELIPAD2_block, 11 }, { 17,
HELITAKEOFF,
HELIPAD2_block, 11 }, { 17,
TO_ALL, 0, 18 },
606 { 18,
TERMGROUP, TERM_GROUP2_block, 0 }, { 18,
TERM6,
TERM6_block, 9 }, { 18,
TAKEOFF, 0, 19 }, { 18,
HANGAR, HANGAR2_AREA_block, 3 }, { 18,
TO_ALL, 0, 17 },
607 { 19,
TO_ALL, TERM_GROUP2_EXIT1_block, 20 },
608 { 20,
TO_ALL, TERM_GROUP2_EXIT1_block, 21 },
609 { 21,
TO_ALL, TERM_GROUP2_EXIT2_block, 22 },
610 { 22,
TO_ALL, TERM_GROUP2_EXIT2_block, 26 },
611 { 23,
TERMGROUP, TERM_GROUP1_block, 0 }, { 23,
TERM1,
TERM1_block, 4 }, { 23,
HANGAR, AIRPORT_ENTRANCE_block, 2 }, { 23,
TO_ALL, 0, 24 },
612 { 24,
TERMGROUP, TERM_GROUP1_block, 0 }, { 24,
TERM2,
TERM2_block, 5 }, { 24,
TERM1, 0, 23 }, { 24,
HANGAR, 0, 23 }, { 24,
TO_ALL, 0, 25 },
613 { 25,
TERMGROUP, TERM_GROUP1_block, 0 }, { 25,
TERM3,
TERM3_block, 6 }, { 25,
TAKEOFF, 0, 26 }, { 25,
TO_ALL, 0, 24 },
614 { 26,
TERMGROUP, TAXIWAY_BUSY_block, 0 }, { 26,
TAKEOFF, 0, 27 }, { 26,
TO_ALL, 0, 25 },
615 { 27,
TO_ALL, OUT_WAY_block, 28 },
617 { 28,
TAKEOFF, OUT_WAY_block, 29 },
618 { 29,
TO_ALL, RUNWAY_OUT_block, 30 },
622 { 32,
FLYING, NOTHING_block, 37 }, { 32,
LANDING, 0, 33 }, { 32,
HELILANDING, 0, 41 },
623 { 33,
LANDING, RUNWAY_IN_block, 34 },
624 { 34,
TO_ALL, RUNWAY_IN_block, 35 },
625 { 35,
TO_ALL, RUNWAY_IN_block, 36 },
626 { 36,
ENDLANDING, IN_WAY_block, 36 }, { 36,
TERMGROUP, TERM_GROUP1_block, 0 }, { 36,
TERMGROUP, TERM_GROUP2_ENTER1_block, 1 }, { 36,
TERM4, 0, 12 }, { 36,
TERM5, 0, 12 }, { 36,
TERM6, 0, 12 }, { 36,
TO_ALL, 0, 2 },
628 { 37,
TO_ALL, NOTHING_block, 38 },
629 { 38,
TO_ALL, NOTHING_block, 39 },
630 { 39,
TO_ALL, NOTHING_block, 40 },
631 { 40,
TO_ALL, NOTHING_block, 32 },
634 { 42,
HELIENDLANDING, PRE_HELIPAD_block, 42 }, { 42,
HELIPAD1, 0, 43 }, { 42,
HELIPAD2, 0, 44 }, { 42,
HANGAR, 0, 49 },
635 { 43,
TO_ALL, NOTHING_block, 45 },
636 { 44,
TO_ALL, NOTHING_block, 46 },
643 { 49,
TO_ALL, HANGAR2_AREA_block, 50 },
644 { 50,
TO_ALL, HANGAR2_AREA_block, 3 },
652 static const uint8_t _airport_terminal_intercontinental[] = { 2, 4, 4 };
653 static const uint8_t _airport_entries_intercontinental[] = { 44, 43, 46, 45 };
655 { 0,
HANGAR, NOTHING_block, 2 }, { 0,
TERMGROUP, HANGAR1_AREA_block | TERM_GROUP1_block, 0 }, { 0,
TERMGROUP, HANGAR1_AREA_block | TERM_GROUP1_block, 1 }, { 0,
TAKEOFF, HANGAR1_AREA_block | TERM_GROUP1_block, 2 }, { 0,
TO_ALL, 0, 2 },
656 { 1,
HANGAR, NOTHING_block, 3 }, { 1,
TERMGROUP, HANGAR2_AREA_block, 1 }, { 1,
TERMGROUP, HANGAR2_AREA_block, 0 }, { 1,
TO_ALL, 0, 3 },
657 { 2,
TERMGROUP, HANGAR1_AREA_block, 0 }, { 2,
TERMGROUP, TERM_GROUP1_block, 0 }, { 2,
TERMGROUP, TERM_GROUP1_block, 1 }, { 2,
HANGAR, 0, 0 }, { 2,
TAKEOFF, TERM_GROUP1_block, 27 }, { 2,
TERM5, 0, 26 }, { 2,
TERM6, 0, 26 }, { 2,
TERM7, 0, 26 }, { 2,
TERM8, 0, 26 }, { 2,
HELIPAD1, 0, 26 }, { 2,
HELIPAD2, 0, 26 }, { 2,
HELITAKEOFF, 0, 74 }, { 2,
TO_ALL, 0, 27 },
658 { 3,
TERMGROUP, HANGAR2_AREA_block, 0 }, { 3,
HANGAR, 0, 1 }, { 3,
HELITAKEOFF, 0, 75 }, {3,
TAKEOFF, 0, 59}, { 3,
TO_ALL, 0, 20 },
659 { 4,
TERM1,
TERM1_block, 26 }, { 4,
HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 26 }, { 4,
TO_ALL, 0, 26 },
660 { 5,
TERM2,
TERM2_block, 27 }, { 5,
HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 27 }, { 5,
TO_ALL, 0, 27 },
661 { 6,
TERM3,
TERM3_block, 28 }, { 6,
HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 28 }, { 6,
TO_ALL, 0, 28 },
662 { 7,
TERM4,
TERM4_block, 29 }, { 7,
HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 29 }, { 7,
TO_ALL, 0, 29 },
663 { 8,
TERM5,
TERM5_block, 18 }, { 8,
HANGAR, HANGAR2_AREA_block, 18 }, { 8,
TO_ALL, 0, 18 },
664 { 9,
TERM6,
TERM6_block, 19 }, { 9,
HANGAR, HANGAR2_AREA_block, 19 }, { 9,
TO_ALL, 0, 19 },
665 { 10,
TERM7,
TERM7_block, 20 }, { 10,
HANGAR, HANGAR2_AREA_block, 20 }, { 10,
TO_ALL, 0, 20 },
666 { 11,
TERM8,
TERM8_block, 21 }, { 11,
HANGAR, HANGAR2_AREA_block, 21 }, { 11,
TO_ALL, 0, 21 },
667 { 12,
HELIPAD1,
HELIPAD1_block, 12 }, { 12,
HANGAR, 0, 70 }, { 12,
HELITAKEOFF, 0, 72 },
668 { 13,
HELIPAD2,
HELIPAD2_block, 13 }, { 13,
HANGAR, 0, 71 }, { 13,
HELITAKEOFF, 0, 73 },
669 { 14,
TO_ALL, TERM_GROUP2_ENTER1_block, 15 },
670 { 15,
TO_ALL, TERM_GROUP2_ENTER1_block, 16 },
671 { 16,
TO_ALL, TERM_GROUP2_ENTER2_block, 17 },
672 { 17,
TO_ALL, TERM_GROUP2_ENTER2_block, 18 },
673 { 18,
TERMGROUP, TERM_GROUP2_block, 0 }, { 18,
TERM5,
TERM5_block, 8 }, { 18,
TAKEOFF, 0, 19 }, { 18,
HELITAKEOFF,
HELIPAD1_block, 19 }, { 18,
TO_ALL, TERM_GROUP2_EXIT1_block, 19 },
674 { 19,
TERMGROUP, TERM_GROUP2_block, 0 }, { 19,
TERM6,
TERM6_block, 9 }, { 19,
TERM5, 0, 18 }, { 19,
TAKEOFF, 0, 57 }, { 19,
HELITAKEOFF,
HELIPAD1_block, 20 }, { 19,
TO_ALL, TERM_GROUP2_EXIT1_block, 20 },
675 { 20,
TERMGROUP, TERM_GROUP2_block, 0 }, { 20,
TERM7,
TERM7_block, 10 }, { 20,
TERM5, 0, 19 }, { 20,
TERM6, 0, 19 }, { 20,
HANGAR, HANGAR2_AREA_block, 3 }, { 20,
TAKEOFF, 0, 19 }, { 20,
TO_ALL, TERM_GROUP2_EXIT1_block, 21 },
676 { 21,
TERMGROUP, TERM_GROUP2_block, 0 }, { 21,
TERM8,
TERM8_block, 11 }, { 21,
HANGAR, HANGAR2_AREA_block, 20 }, { 21,
TERM5, 0, 20 }, { 21,
TERM6, 0, 20 }, { 21,
TERM7, 0, 20 }, { 21,
TAKEOFF, 0, 20 }, { 21,
TO_ALL, TERM_GROUP2_EXIT1_block, 22 },
677 { 22,
TERMGROUP, TERM_GROUP2_block, 0 }, { 22,
HANGAR, 0, 21 }, { 22,
TERM5, 0, 21 }, { 22,
TERM6, 0, 21 }, { 22,
TERM7, 0, 21 }, { 22,
TERM8, 0, 21 }, { 22,
TAKEOFF, 0, 21 }, { 22,
TO_ALL, 0, 23 },
678 { 23,
TO_ALL, TERM_GROUP2_EXIT1_block, 70 },
679 { 24,
TO_ALL, TERM_GROUP2_EXIT2_block, 25 },
680 { 25,
TERMGROUP, TERM_GROUP2_EXIT2_block, 0 }, { 25,
HANGAR, HANGAR1_AREA_block | TERM_GROUP1_block, 29 }, { 25,
TO_ALL, 0, 29 },
681 { 26,
TERMGROUP, TERM_GROUP1_block, 0 }, { 26,
TERM1,
TERM1_block, 4 }, { 26,
HANGAR, HANGAR1_AREA_block, 27 }, { 26,
TERM5, TERM_GROUP2_ENTER1_block, 14 }, { 26,
TERM6, TERM_GROUP2_ENTER1_block, 14 }, { 26,
TERM7, TERM_GROUP2_ENTER1_block, 14 }, { 26,
TERM8, TERM_GROUP2_ENTER1_block, 14 }, { 26,
HELIPAD1, TERM_GROUP2_ENTER1_block, 14 }, { 26,
HELIPAD2, TERM_GROUP2_ENTER1_block, 14 }, { 26,
HELITAKEOFF, TERM_GROUP2_ENTER1_block, 14 }, { 26,
TO_ALL, 0, 27 },
682 { 27,
TERMGROUP, TERM_GROUP1_block, 0 }, { 27,
TERM2,
TERM2_block, 5 }, { 27,
HANGAR, HANGAR1_AREA_block, 2 }, { 27,
TERM1, 0, 26 }, { 27,
TERM5, 0, 26 }, { 27,
TERM6, 0, 26 }, { 27,
TERM7, 0, 26 }, { 27,
TERM8, 0, 26 }, { 27,
HELIPAD1, 0, 14 }, { 27,
HELIPAD2, 0, 14 }, { 27,
TO_ALL, 0, 28 },
683 { 28,
TERMGROUP, TERM_GROUP1_block, 0 }, { 28,
TERM3,
TERM3_block, 6 }, { 28,
HANGAR, HANGAR1_AREA_block, 27 }, { 28,
TERM1, 0, 27 }, { 28,
TERM2, 0, 27 }, { 28,
TERM4, 0, 29 }, { 28,
TERM5, 0, 14 }, { 28,
TERM6, 0, 14 }, { 28,
TERM7, 0, 14 }, { 28,
TERM8, 0, 14 }, { 28,
HELIPAD1, 0, 14 }, { 28,
HELIPAD2, 0, 14 }, { 28,
TO_ALL, 0, 29 },
684 { 29,
TERMGROUP, TERM_GROUP1_block, 0 }, { 29,
TERM4,
TERM4_block, 7 }, { 29,
HANGAR, HANGAR1_AREA_block, 27 }, { 29,
TAKEOFF, 0, 30 }, { 29,
TO_ALL, 0, 28 },
685 { 30,
TO_ALL, OUT_WAY_block2, 31 },
686 { 31,
TO_ALL, OUT_WAY_block, 32 },
688 { 32,
TAKEOFF, RUNWAY_OUT_block, 33 },
689 { 33,
TO_ALL, RUNWAY_OUT_block, 34 },
694 { 37,
LANDING, RUNWAY_IN_block, 38 },
695 { 38,
TO_ALL, RUNWAY_IN_block, 39 },
696 { 39,
TO_ALL, RUNWAY_IN_block, 40 },
698 { 41,
TO_ALL, IN_WAY_block, 42 },
699 { 42,
TERMGROUP, IN_WAY_block, 0 }, { 42,
TERMGROUP, TERM_GROUP1_block, 0 }, { 42,
TERMGROUP, TERM_GROUP1_block, 1 }, { 42,
HANGAR, 0, 2 }, { 42,
TO_ALL, 0, 26 },
702 { 44,
FLYING, 0, 45 }, { 44,
HELILANDING, 0, 47 }, { 44,
LANDING, 0, 69 }, { 44,
TO_ALL, 0, 45 },
704 { 46,
FLYING, 0, 43 }, { 46,
LANDING, 0, 76 }, { 46,
TO_ALL, 0, 43 },
707 { 48,
HELIENDLANDING, PRE_HELIPAD_block, 48 }, { 48,
HELIPAD1, 0, 49 }, { 48,
HELIPAD2, 0, 50 }, { 48,
HANGAR, 0, 55 },
708 { 49,
TO_ALL, NOTHING_block, 51 },
709 { 50,
TO_ALL, NOTHING_block, 52 },
711 { 51,
TERMGROUP, NOTHING_block, 0 }, { 51,
HELIPAD1,
HELIPAD1_block, 12 }, { 51,
HANGAR, 0, 55 }, { 51,
TO_ALL, 0, 12 },
712 { 52,
TERMGROUP, NOTHING_block, 0 }, { 52,
HELIPAD2,
HELIPAD2_block, 13 }, { 52,
HANGAR, 0, 55 }, { 52,
TO_ALL, 0, 13 },
716 { 55,
TO_ALL, HANGAR2_AREA_block, 56 },
717 { 56,
TO_ALL, HANGAR2_AREA_block, 3 },
719 { 57,
TERMGROUP, OUT_WAY2_block, 0 }, { 57,
TAKEOFF, 0, 58 }, { 57,
TO_ALL, 0, 58 },
720 { 58,
TO_ALL, OUT_WAY2_block, 59 },
726 { 63,
LANDING, RUNWAY_IN2_block, 64 },
727 { 64,
TO_ALL, RUNWAY_IN2_block, 65 },
728 { 65,
TO_ALL, RUNWAY_IN2_block, 66 },
729 { 66,
ENDLANDING, RUNWAY_IN2_block, 0 }, { 66,
TERMGROUP, 0, 1 }, { 66,
TERMGROUP, 0, 0 }, { 66,
TO_ALL, 0, 67 },
730 { 67,
TO_ALL, IN_WAY2_block, 68 },
731 { 68,
TERMGROUP, IN_WAY2_block, 0 }, { 68,
TERMGROUP, TERM_GROUP2_block, 1 }, { 68,
TERMGROUP, TERM_GROUP1_block, 0 }, { 68,
HANGAR, HANGAR2_AREA_block, 22 }, { 68,
TO_ALL, 0, 22 },
732 { 69,
TERMGROUP, RUNWAY_IN2_block, 0 }, { 69,
TO_ALL, RUNWAY_IN2_block, 63 },
733 { 70,
TERMGROUP, TERM_GROUP2_EXIT1_block, 0 }, { 70,
HELIPAD1,
HELIPAD1_block, 12 }, { 70,
HELITAKEOFF,
HELIPAD1_block, 12 }, { 70,
TO_ALL, 0, 71 },
734 { 71,
TERMGROUP, TERM_GROUP2_EXIT1_block, 0 }, { 71,
HELIPAD2,
HELIPAD2_block, 13 }, { 71,
HELITAKEOFF,
HELIPAD1_block, 12 }, { 71,
TO_ALL, 0, 24 },
739 { 76,
TERMGROUP, RUNWAY_IN_block, 0 }, { 76,
TO_ALL, RUNWAY_IN_block, 37 },
745 static const uint8_t _airport_entries_heliport[] = { 7, 7, 7, 7 };
749 { 2,
TERMGROUP, AIRPORT_BUSY_block, 0 }, { 2,
HELILANDING, 0, 3 }, { 2,
HELITAKEOFF, 0, 1 },
751 { 4,
HELIENDLANDING, AIRPORT_BUSY_block, 4 }, { 4,
HELIPAD1,
HELIPAD1_block, 0 }, { 4,
HELITAKEOFF, 0, 2 },
753 { 5,
TO_ALL, NOTHING_block, 6 },
754 { 6,
TO_ALL, NOTHING_block, 7 },
755 { 7,
TO_ALL, NOTHING_block, 8 },
759 #define _airport_entries_oilrig _airport_entries_heliport
760 #define _airport_fta_oilrig _airport_fta_heliport
764 static const uint8_t _airport_entries_helidepot[] = { 4, 4, 4, 4 };
766 { 0,
HANGAR, NOTHING_block, 1 },
767 { 1,
TERMGROUP, HANGAR2_AREA_block, 0 }, { 1,
HANGAR, 0, 0 }, { 1,
HELIPAD1,
HELIPAD1_block, 14 }, { 1,
HELITAKEOFF, 0, 15 }, { 1,
TO_ALL, 0, 0 },
768 { 2,
FLYING, NOTHING_block, 3 }, { 2,
HELILANDING, PRE_HELIPAD_block, 7 }, { 2,
HANGAR, 0, 12 }, { 2,
HELITAKEOFF, NOTHING_block, 16 },
770 { 3, 0, NOTHING_block, 4 },
771 { 4, 0, NOTHING_block, 5 },
772 { 5, 0, NOTHING_block, 6 },
773 { 6, 0, NOTHING_block, 2 },
776 { 8,
HELIENDLANDING, PRE_HELIPAD_block, 8 }, { 8,
HELIPAD1, 0, 9 }, { 8,
HANGAR, 0, 12 }, { 8,
TO_ALL, 0, 2 },
777 { 9, 0, NOTHING_block, 10 },
779 { 10,
TERMGROUP, NOTHING_block, 10 }, { 10,
HELIPAD1,
HELIPAD1_block, 14 }, { 10,
HANGAR, 0, 1 }, { 10,
TO_ALL, 0, 14 },
782 { 12,
TO_ALL, HANGAR2_AREA_block, 13 },
783 { 13,
TO_ALL, HANGAR2_AREA_block, 1 },
784 { 14,
HELIPAD1,
HELIPAD1_block, 14 }, { 14,
HANGAR, 0, 1 }, { 14,
HELITAKEOFF, 0, 17 },
787 { 17,
TO_ALL, NOTHING_block, 11 },
793 static const uint8_t _airport_entries_helistation[] = { 25, 25, 25, 25 };
795 { 0,
HANGAR, NOTHING_block, 8 }, { 0,
HELIPAD1, 0, 1 }, { 0,
HELIPAD2, 0, 1 }, { 0,
HELIPAD3, 0, 1 }, { 0,
HELITAKEOFF, 0, 1 }, { 0,
TO_ALL, 0, 0 },
796 { 1,
TERMGROUP, HANGAR2_AREA_block, 0 }, { 1,
HANGAR, 0, 0 }, { 1,
HELITAKEOFF, 0, 3 }, { 1,
TO_ALL, 0, 4 },
798 { 2,
FLYING, NOTHING_block, 28 }, { 2,
HELILANDING, 0, 15 }, { 2,
TO_ALL, 0, 28 },
801 { 4,
TERMGROUP, TAXIWAY_BUSY_block, 0 }, { 4,
HANGAR, HANGAR2_AREA_block, 1 }, { 4,
HELITAKEOFF, 0, 1 }, { 4,
TO_ALL, 0, 5 },
802 { 5,
TERMGROUP, TAXIWAY_BUSY_block, 0 }, { 5,
HELIPAD1,
HELIPAD1_block, 6 }, { 5,
HELIPAD2,
HELIPAD2_block, 7 }, { 5,
HELIPAD3,
HELIPAD3_block, 8 }, { 5,
TO_ALL, 0, 4 },
803 { 6,
HELIPAD1,
HELIPAD1_block, 5 }, { 6,
HANGAR, HANGAR2_AREA_block, 5 }, { 6,
HELITAKEOFF, 0, 9 }, { 6,
TO_ALL, 0, 6 },
804 { 7,
HELIPAD2,
HELIPAD2_block, 5 }, { 7,
HANGAR, HANGAR2_AREA_block, 5 }, { 7,
HELITAKEOFF, 0, 10 }, { 7,
TO_ALL, 0, 7 },
805 { 8,
HELIPAD3,
HELIPAD3_block, 5 }, { 8,
HANGAR, HANGAR2_AREA_block, 5 }, { 8,
HELITAKEOFF, 0, 11 }, { 8,
TO_ALL, 0, 8 },
814 { 16,
HELIENDLANDING, PRE_HELIPAD_block, 16 }, { 16,
HELIPAD1, 0, 17 }, { 16,
HELIPAD2, 0, 18 }, { 16,
HELIPAD3, 0, 19 }, { 16,
HANGAR, 0, 23 },
815 { 17,
TO_ALL, NOTHING_block, 20 },
816 { 18,
TO_ALL, NOTHING_block, 21 },
817 { 19,
TO_ALL, NOTHING_block, 22 },
819 { 20,
TERMGROUP, NOTHING_block, 0 }, { 20,
HELIPAD1,
HELIPAD1_block, 6 }, { 20,
HANGAR, 0, 23 }, { 20,
TO_ALL, 0, 6 },
820 { 21,
TERMGROUP, NOTHING_block, 0 }, { 21,
HELIPAD2,
HELIPAD2_block, 7 }, { 21,
HANGAR, 0, 23 }, { 21,
TO_ALL, 0, 7 },
821 { 22,
TERMGROUP, NOTHING_block, 0 }, { 22,
HELIPAD3,
HELIPAD3_block, 8 }, { 22,
HANGAR, 0, 23 }, { 22,
TO_ALL, 0, 8 },
822 { 23,
TO_ALL, HANGAR2_AREA_block, 24 },
823 { 24,
TO_ALL, HANGAR2_AREA_block, 1 },
824 { 25,
TO_ALL, NOTHING_block, 26 },
825 { 26,
TO_ALL, NOTHING_block, 27 },
826 { 27,
TO_ALL, NOTHING_block, 2 },
827 { 28,
TO_ALL, NOTHING_block, 29 },
828 { 29,
TO_ALL, NOTHING_block, 30 },
829 { 30,
TO_ALL, NOTHING_block, 31 },
830 { 31,
TO_ALL, NOTHING_block, 32 },
831 { 32,
TO_ALL, NOTHING_block, 25 },
static const uint64_t TERM7_block
Block belonging to terminal 7.
static const uint64_t TERM4_block
Block belonging to terminal 4.
static const uint MAX_ELEMENTS
maximum number of aircraft positions at airport
static const uint64_t TERM2_block
Block belonging to terminal 2.
static const uint64_t TERM1_block
Movement Blocks on Airports blocks (eg_airport_flags).
static const uint64_t TERM5_block
Block belonging to terminal 5.
static const uint64_t TERM3_block
Block belonging to terminal 3.
static const uint64_t TERM8_block
Block belonging to terminal 8.
@ AMED_BRAKE
Taxiing at the airport.
@ AMED_HOLD
Holding pattern movement (above the airport).
@ AMED_SLOWTURN
Turn slowly (mostly used in the air).
@ AMED_HELI_LOWER
Helicopter landing.
@ AMED_LAND
Landing onto landing strip.
@ AMED_NOSPDCLAMP
No speed restrictions.
@ AMED_TAKEOFF
Takeoff movement.
@ AMED_EXACTPOS
Go exactly to the destination coordinates.
@ AMED_HELI_RAISE
Helicopter take-off.
static const uint64_t HELIPAD2_block
Block belonging to helipad 2.
static const uint64_t TERM6_block
Block belonging to terminal 6.
static const uint64_t HELIPAD3_block
Block belonging to helipad 3.
static const uint64_t HELIPAD1_block
Block belonging to helipad 1.
@ HELITAKEOFF
Helicopter wants to leave the airport.
@ TERM4
Heading for terminal 4.
@ STARTTAKEOFF
Airplane has arrived at a runway for take-off.
@ HELIPAD2
Heading for helipad 2.
@ ENDTAKEOFF
Airplane has reached end-point of the take-off runway.
@ TERM5
Heading for terminal 5.
@ TERM6
Heading for terminal 6.
@ TERM3
Heading for terminal 3.
@ TERM8
Heading for terminal 8.
@ HELIPAD3
Heading for helipad 3.
@ HELIPAD1
Heading for helipad 1.
@ TERM2
Heading for terminal 2.
@ HANGAR
Heading for hangar.
@ FLYING
Vehicle is flying in the air.
@ TAKEOFF
Airplane wants to leave the airport.
@ HELILANDING
Helicopter wants to land.
@ TO_ALL
Go in this direction for every target.
@ ENDLANDING
Airplane wants to finish landing.
@ HELIENDLANDING
Helicopter wants to finish landing.
@ TERM1
Heading for terminal 1.
@ LANDING
Airplane wants to land.
@ TERM7
Heading for terminal 7.
@ TERMGROUP
Aircraft is looking for a free terminal in a terminalgroup.
static const uint64_t RUNWAY_OUT2_block
static const AirportMovingData _airport_moving_data_intercontinental[77]
Intercontinental Airport - 4 runways, 8 terminals, 2 dedicated helipads.
static const AirportMovingData _airport_moving_data_commuter[38]
Commuter Airfield (small) 5x4.
static const AirportMovingData _airport_moving_data_international[53]
International Airport (international) - 2 runways, 6 terminals, dedicated helipad.
static const AirportMovingData _airport_moving_data_oilrig[9]
Oilrig.
static const AirportMovingData _airport_moving_data_dummy[]
Dummy airport.
static const AirportMovingData _airport_moving_data_country[22]
Country Airfield (small) 4x3.
#define AMD(x, y, flags, dir)
Airport movement data creation macro.
static const AirportMovingData _airport_moving_data_heliport[9]
Heliport (heliport).
static const AirportMovingData _airport_moving_data_helidepot[18]
HeliDepot 2x2 (heliport).
static const AirportMovingData _airport_moving_data_helistation[33]
HeliDepot 2x2 (heliport).
static const AirportMovingData _airport_moving_data_metropolitan[28]
Metropolitan Airport (metropolitan) - 2 runways.
static const AirportMovingData _airport_moving_data_city[]
City Airport (large) 6x6.
State machine input struct (from external file, etc.) Finite sTate mAchine --> FTA.
uint8_t heading
The current orders (eg. TAKEOFF, HANGAR, ENDLANDING, etc.).
uint8_t next
Next position from this position.
uint8_t position
The position that an airplane is at.
uint64_t block
The block this position is on on the airport (st->airport.flags).
A single location on an airport where aircraft can move to.
A list of all hangar tiles in an airport.