OpenTTD Source 20241224-master-gf74b0cf984
roadveh_movement.h
Go to the documentation of this file.
1/*
2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
6 */
7
10static const RoadDriveEntry _roadveh_drive_data_0[] = {
11 {15, 5},
12 {14, 5},
13 {13, 5},
14 {12, 5},
15 {11, 5},
16 {10, 5},
17 { 9, 5},
18 { 8, 5},
19 { 7, 5},
20 { 6, 5},
21 { 5, 5},
22 { 4, 5},
23 { 3, 5},
24 { 2, 5},
25 { 1, 5},
26 { 0, 5},
28};
29static const RoadDriveEntry _roadveh_drive_data_1[] = {
30 {5, 0},
31 {5, 1},
32 {5, 2},
33 {5, 3},
34 {5, 4},
35 {5, 5},
36 {5, 6},
37 {5, 7},
38 {5, 8},
39 {5, 9},
40 {5, 10},
41 {5, 11},
42 {5, 12},
43 {5, 13},
44 {5, 14},
45 {5, 15},
47};
48static const RoadDriveEntry _roadveh_drive_data_2[] = {
49 {5, 0},
50 {5, 1},
51 {5, 2},
52 {4, 3},
53 {3, 4},
54 {2, 5},
55 {1, 5},
56 {0, 5},
58};
59static const RoadDriveEntry _roadveh_drive_data_3[] = {
60 {15, 5},
61 {14, 5},
62 {13, 5},
63 {12, 5},
64 {11, 5},
65 {10, 5},
66 { 9, 6},
67 { 8, 7},
68 { 7, 8},
69 { 6, 9},
70 { 5, 10},
71 { 5, 11},
72 { 5, 12},
73 { 5, 13},
74 { 5, 14},
75 { 5, 15},
77};
78static const RoadDriveEntry _roadveh_drive_data_4[] = {
79 { 5, 0},
80 { 5, 1},
81 { 5, 2},
82 { 5, 3},
83 { 5, 4},
84 { 5, 5},
85 { 6, 6},
86 { 7, 7},
87 { 8, 8},
88 { 9, 9},
89 {10, 9},
90 {11, 9},
91 {12, 9},
92 {13, 9},
93 {14, 9},
94 {15, 9},
96};
97static const RoadDriveEntry _roadveh_drive_data_5[] = {
98 {0, 9},
99 {1, 9},
100 {2, 9},
101 {3, 10},
102 {4, 11},
103 {5, 12},
104 {5, 13},
105 {5, 14},
106 {5, 15},
108};
109static const RoadDriveEntry _roadveh_drive_data_6[] = {
110 {0, 6},
111 {0, 7},
112 {0, 8},
113 {0, 9},
115};
116static const RoadDriveEntry _roadveh_drive_data_7[] = {
117 {6, 15},
118 {7, 15},
119 {8, 15},
120 {9, 15},
122};
123static const RoadDriveEntry _roadveh_drive_data_8[] = {
124 { 0, 9},
125 { 1, 9},
126 { 2, 9},
127 { 3, 9},
128 { 4, 9},
129 { 5, 9},
130 { 6, 9},
131 { 7, 9},
132 { 8, 9},
133 { 9, 9},
134 {10, 9},
135 {11, 9},
136 {12, 9},
137 {13, 9},
138 {14, 9},
139 {15, 9},
141};
142static const RoadDriveEntry _roadveh_drive_data_9[] = {
143 {9, 15},
144 {9, 14},
145 {9, 13},
146 {9, 12},
147 {9, 11},
148 {9, 10},
149 {9, 9},
150 {9, 8},
151 {9, 7},
152 {9, 6},
153 {9, 5},
154 {9, 4},
155 {9, 3},
156 {9, 2},
157 {9, 1},
158 {9, 0},
160};
161static const RoadDriveEntry _roadveh_drive_data_10[] = {
162 {0, 9},
163 {1, 9},
164 {2, 9},
165 {3, 9},
166 {4, 9},
167 {5, 9},
168 {6, 8},
169 {7, 7},
170 {8, 6},
171 {9, 5},
172 {9, 4},
173 {9, 3},
174 {9, 2},
175 {9, 1},
176 {9, 0},
178};
179static const RoadDriveEntry _roadveh_drive_data_11[] = {
180 { 9, 15},
181 { 9, 14},
182 { 9, 13},
183 {10, 12},
184 {11, 11},
185 {12, 10},
186 {13, 9},
187 {14, 9},
188 {15, 9},
190};
191static const RoadDriveEntry _roadveh_drive_data_12[] = {
192 {15, 5},
193 {14, 5},
194 {13, 5},
195 {12, 4},
196 {11, 3},
197 {10, 2},
198 { 9, 1},
199 { 9, 0},
201};
202static const RoadDriveEntry _roadveh_drive_data_13[] = {
203 {9, 15},
204 {9, 14},
205 {9, 13},
206 {9, 12},
207 {9, 11},
208 {9, 10},
209 {8, 9},
210 {7, 8},
211 {6, 7},
212 {5, 6},
213 {4, 5},
214 {3, 5},
215 {2, 5},
216 {1, 5},
217 {0, 5},
219};
220static const RoadDriveEntry _roadveh_drive_data_14[] = {
221 {15, 8},
222 {15, 7},
223 {15, 6},
224 {15, 5},
226};
227static const RoadDriveEntry _roadveh_drive_data_15[] = {
228 {8, 0},
229 {7, 0},
230 {6, 0},
231 {5, 0},
233};
234static const RoadDriveEntry _roadveh_drive_data_16[] = {
235 {15, 9},
236 {14, 9},
237 {13, 9},
238 {12, 9},
239 {11, 9},
240 {10, 9},
241 { 9, 9},
242 { 8, 9},
243 { 7, 9},
244 { 6, 9},
245 { 5, 9},
246 { 4, 9},
247 { 3, 9},
248 { 2, 9},
249 { 1, 9},
250 { 0, 9},
252};
253static const RoadDriveEntry _roadveh_drive_data_17[] = {
254 {9, 0},
255 {9, 1},
256 {9, 2},
257 {9, 3},
258 {9, 4},
259 {9, 5},
260 {9, 6},
261 {9, 7},
262 {9, 8},
263 {9, 9},
264 {9, 10},
265 {9, 11},
266 {9, 12},
267 {9, 13},
268 {9, 14},
269 {9, 15},
271};
272static const RoadDriveEntry _roadveh_drive_data_18[] = {
273 {9, 0},
274 {9, 1},
275 {9, 2},
276 {9, 3},
277 {9, 4},
278 {9, 5},
279 {8, 6},
280 {7, 7},
281 {6, 8},
282 {5, 9},
283 {4, 9},
284 {3, 9},
285 {2, 9},
286 {1, 9},
287 {0, 9},
289};
290static const RoadDriveEntry _roadveh_drive_data_19[] = {
291 {15, 9},
292 {14, 9},
293 {13, 9},
294 {12, 10},
295 {11, 11},
296 {10, 12},
297 { 9, 13},
298 { 9, 14},
299 { 9, 15},
301};
302static const RoadDriveEntry _roadveh_drive_data_20[] = {
303 { 9, 0},
304 { 9, 1},
305 {10, 2},
306 {11, 3},
307 {12, 4},
308 {13, 5},
309 {14, 5},
310 {15, 5},
312};
313static const RoadDriveEntry _roadveh_drive_data_21[] = {
314 {0, 5},
315 {1, 5},
316 {2, 5},
317 {3, 5},
318 {4, 5},
319 {5, 6},
320 {6, 7},
321 {7, 8},
322 {8, 9},
323 {9, 10},
324 {9, 11},
325 {9, 12},
326 {9, 13},
327 {9, 14},
328 {9, 15},
330};
331static const RoadDriveEntry _roadveh_drive_data_22[] = {
332 {0, 8},
333 {0, 7},
334 {0, 6},
335 {0, 5},
337};
338static const RoadDriveEntry _roadveh_drive_data_23[] = {
339 {8, 15},
340 {7, 15},
341 {6, 15},
342 {5, 15},
344};
345static const RoadDriveEntry _roadveh_drive_data_24[] = {
346 { 0, 5},
347 { 1, 5},
348 { 2, 5},
349 { 3, 5},
350 { 4, 5},
351 { 5, 5},
352 { 6, 5},
353 { 7, 5},
354 { 8, 5},
355 { 9, 5},
356 {10, 5},
357 {11, 5},
358 {12, 5},
359 {13, 5},
360 {14, 5},
361 {15, 5},
363};
364static const RoadDriveEntry _roadveh_drive_data_25[] = {
365 {5, 15},
366 {5, 14},
367 {5, 13},
368 {5, 12},
369 {5, 11},
370 {5, 10},
371 {5, 9},
372 {5, 8},
373 {5, 7},
374 {5, 6},
375 {5, 5},
376 {5, 4},
377 {5, 3},
378 {5, 2},
379 {5, 1},
380 {5, 0},
382};
383static const RoadDriveEntry _roadveh_drive_data_26[] = {
384 {0, 5},
385 {1, 5},
386 {2, 5},
387 {3, 4},
388 {4, 3},
389 {5, 2},
390 {5, 1},
391 {5, 0},
393};
394static const RoadDriveEntry _roadveh_drive_data_27[] = {
395 { 5, 15},
396 { 5, 14},
397 { 5, 13},
398 { 5, 12},
399 { 5, 11},
400 { 5, 10},
401 { 6, 9},
402 { 7, 8},
403 { 8, 7},
404 { 9, 6},
405 {10, 5},
406 {11, 5},
407 {12, 5},
408 {13, 5},
409 {14, 5},
410 {15, 5},
412};
413static const RoadDriveEntry _roadveh_drive_data_28[] = {
414 {15, 9},
415 {14, 9},
416 {13, 9},
417 {12, 9},
418 {11, 9},
419 {10, 9},
420 { 9, 9},
421 { 8, 8},
422 { 7, 7},
423 { 6, 6},
424 { 5, 5},
425 { 5, 4},
426 { 5, 3},
427 { 5, 2},
428 { 5, 1},
429 { 5, 0},
431};
432static const RoadDriveEntry _roadveh_drive_data_29[] = {
433 {5, 15},
434 {5, 14},
435 {5, 13},
436 {5, 12},
437 {4, 11},
438 {3, 10},
439 {2, 9},
440 {1, 9},
441 {0, 9},
443};
444static const RoadDriveEntry _roadveh_drive_data_30[] = {
445 {15, 6},
446 {15, 7},
447 {15, 8},
448 {15, 9},
450};
451static const RoadDriveEntry _roadveh_drive_data_31[] = {
452 {6, 0},
453 {7, 0},
454 {8, 0},
455 {9, 0},
457};
458static const RoadDriveEntry _rv_station_left_sw_far[] = {
459 {15, 5},
460 {14, 5},
461 {13, 6},
462 {13, 7},
463 {13, 8},
464 {13, 9},
465 {13, 10},
466 {13, 11},
467 {12, 12},
468 {11, 12},
469 {10, 12},
470 { 9, 12},
471 { 8, 12},
472 { 7, 12},
473 { 6, 12},
474 { 5, 11},
475 { 5, 10},
476 { 5, 9},
477 { 5, 8},
478 { 5, 7},
479 { 5, 6},
480 { 5, 7},
481 { 5, 8},
482 { 5, 9},
483 { 5, 10},
484 { 5, 11},
485 { 6, 12},
486 { 7, 12},
487 { 8, 12},
488 { 9, 12},
489 {10, 12},
490 {11, 12},
491 {12, 12},
492 {13, 11},
493 {13, 10},
494 {14, 9},
495 {15, 9},
497};
498static const RoadDriveEntry _rv_station_left_nw_far[] = {
499 { 5, 0},
500 { 5, 1},
501 { 6, 2},
502 { 7, 2},
503 { 8, 2},
504 { 9, 2},
505 {10, 2},
506 {11, 2},
507 {12, 3},
508 {12, 4},
509 {12, 5},
510 {12, 6},
511 {12, 7},
512 {12, 8},
513 {12, 9},
514 {11, 10},
515 {10, 10},
516 { 9, 10},
517 { 8, 10},
518 { 7, 10},
519 { 6, 10},
520 { 7, 10},
521 { 8, 10},
522 { 9, 10},
523 {10, 10},
524 {11, 10},
525 {12, 9},
526 {12, 8},
527 {12, 7},
528 {12, 6},
529 {12, 5},
530 {12, 4},
531 {12, 3},
532 {11, 2},
533 {10, 2},
534 { 9, 1},
535 { 9, 0},
537};
538static const RoadDriveEntry _rv_station_left_sw_near[] = {
539 {15, 5},
540 {14, 5},
541 {13, 6},
542 {13, 7},
543 {13, 8},
544 {13, 9},
545 {13, 10},
546 {13, 11},
547 {12, 12},
548 {11, 12},
549 {10, 12},
550 { 9, 11},
551 { 9, 10},
552 { 9, 9},
553 { 9, 8},
554 { 9, 7},
555 { 9, 6},
556 { 9, 7},
557 { 9, 8},
558 { 9, 9},
559 { 9, 10},
560 { 9, 11},
561 {10, 12},
562 {11, 12},
563 {12, 12},
564 {13, 11},
565 {13, 10},
566 {14, 9},
567 {15, 9},
569};
570static const RoadDriveEntry _rv_station_left_nw_near[] = {
571 { 5, 0},
572 { 5, 1},
573 { 6, 2},
574 { 7, 2},
575 { 8, 2},
576 { 9, 2},
577 {10, 2},
578 {11, 2},
579 {12, 3},
580 {12, 4},
581 {12, 5},
582 {11, 6},
583 {10, 6},
584 { 9, 6},
585 { 8, 6},
586 { 7, 6},
587 { 6, 6},
588 { 7, 6},
589 { 8, 6},
590 { 9, 6},
591 {10, 6},
592 {11, 6},
593 {12, 5},
594 {12, 4},
595 {12, 3},
596 {11, 2},
597 {10, 2},
598 { 9, 1},
599 { 9, 0},
601};
602static const RoadDriveEntry _rv_station_left_ne_far[] = {
603 { 0, 9},
604 { 1, 9},
605 { 2, 8},
606 { 2, 7},
607 { 2, 6},
608 { 2, 5},
609 { 2, 4},
610 { 3, 3},
611 { 4, 3},
612 { 5, 3},
613 { 6, 3},
614 { 7, 3},
615 { 8, 3},
616 { 9, 3},
617 {10, 4},
618 {10, 5},
619 {10, 6},
620 {10, 7},
621 {10, 8},
622 {10, 9},
623 {10, 8},
624 {10, 7},
625 {10, 6},
626 {10, 5},
627 {10, 4},
628 { 9, 3},
629 { 8, 3},
630 { 7, 3},
631 { 6, 3},
632 { 5, 3},
633 { 4, 3},
634 { 3, 3},
635 { 2, 4},
636 { 1, 5},
637 { 0, 5},
639};
640static const RoadDriveEntry _rv_station_left_se_far[] = {
641 {9, 15},
642 {9, 14},
643 {8, 13},
644 {7, 13},
645 {6, 13},
646 {5, 13},
647 {4, 13},
648 {3, 12},
649 {3, 11},
650 {3, 10},
651 {3, 9},
652 {3, 8},
653 {3, 7},
654 {3, 6},
655 {4, 5},
656 {5, 5},
657 {6, 5},
658 {7, 5},
659 {8, 5},
660 {9, 5},
661 {8, 5},
662 {7, 5},
663 {6, 5},
664 {5, 5},
665 {4, 5},
666 {3, 6},
667 {3, 7},
668 {3, 8},
669 {3, 9},
670 {3, 10},
671 {3, 11},
672 {3, 12},
673 {4, 13},
674 {5, 14},
675 {5, 15},
677};
678static const RoadDriveEntry _rv_station_left_ne_near[] = {
679 {0, 9},
680 {1, 9},
681 {2, 8},
682 {2, 7},
683 {2, 6},
684 {2, 5},
685 {2, 4},
686 {3, 3},
687 {4, 3},
688 {5, 3},
689 {6, 4},
690 {6, 5},
691 {6, 6},
692 {6, 7},
693 {6, 8},
694 {6, 9},
695 {6, 8},
696 {6, 7},
697 {6, 6},
698 {6, 5},
699 {6, 4},
700 {5, 3},
701 {4, 3},
702 {3, 3},
703 {2, 4},
704 {1, 5},
705 {0, 5},
707};
708static const RoadDriveEntry _rv_station_left_se_near[] = {
709 {9, 15},
710 {9, 14},
711 {8, 13},
712 {7, 13},
713 {6, 13},
714 {5, 13},
715 {4, 13},
716 {3, 12},
717 {3, 11},
718 {3, 10},
719 {4, 9},
720 {5, 9},
721 {6, 9},
722 {7, 9},
723 {8, 9},
724 {9, 9},
725 {8, 9},
726 {7, 9},
727 {6, 9},
728 {5, 9},
729 {4, 9},
730 {3, 10},
731 {3, 11},
732 {3, 12},
733 {4, 13},
734 {5, 14},
735 {5, 15},
737};
738static const RoadDriveEntry _rv_station_right_sw_far[] = {
739 {15, 9},
740 {14, 9},
741 {13, 10},
742 {13, 11},
743 {12, 12},
744 {11, 12},
745 {10, 12},
746 { 9, 12},
747 { 8, 12},
748 { 7, 12},
749 { 6, 12},
750 { 5, 11},
751 { 5, 10},
752 { 5, 9},
753 { 5, 8},
754 { 5, 7},
755 { 5, 6},
756 { 5, 7},
757 { 5, 8},
758 { 5, 9},
759 { 5, 10},
760 { 5, 11},
761 { 6, 12},
762 { 7, 12},
763 { 8, 12},
764 { 9, 12},
765 {10, 12},
766 {11, 12},
767 {12, 12},
768 {13, 11},
769 {13, 10},
770 {13, 9},
771 {13, 8},
772 {13, 7},
773 {13, 6},
774 {14, 5},
775 {15, 5},
777};
778static const RoadDriveEntry _rv_station_right_nw_far[] = {
779 { 9, 0},
780 { 9, 1},
781 {10, 2},
782 {11, 2},
783 {12, 3},
784 {12, 4},
785 {12, 5},
786 {12, 6},
787 {12, 7},
788 {12, 8},
789 {12, 9},
790 {11, 10},
791 {10, 10},
792 { 9, 10},
793 { 8, 10},
794 { 7, 10},
795 { 6, 10},
796 { 7, 10},
797 { 8, 10},
798 { 9, 10},
799 {10, 10},
800 {11, 10},
801 {12, 9},
802 {12, 8},
803 {12, 7},
804 {12, 6},
805 {12, 5},
806 {12, 4},
807 {12, 3},
808 {11, 2},
809 {10, 2},
810 { 9, 2},
811 { 8, 2},
812 { 7, 2},
813 { 6, 2},
814 { 5, 1},
815 { 5, 0},
817};
818static const RoadDriveEntry _rv_station_right_sw_near[] = {
819 {15, 9},
820 {14, 9},
821 {13, 10},
822 {13, 11},
823 {12, 12},
824 {11, 12},
825 {10, 12},
826 { 9, 11},
827 { 9, 10},
828 { 9, 9},
829 { 9, 8},
830 { 9, 7},
831 { 9, 6},
832 { 9, 7},
833 { 9, 8},
834 { 9, 9},
835 { 9, 10},
836 { 9, 11},
837 {10, 12},
838 {11, 12},
839 {12, 12},
840 {13, 11},
841 {13, 10},
842 {13, 9},
843 {13, 8},
844 {13, 7},
845 {13, 6},
846 {14, 5},
847 {15, 5},
849};
850static const RoadDriveEntry _rv_station_right_nw_near[] = {
851 { 9, 0},
852 { 9, 1},
853 {10, 2},
854 {11, 2},
855 {12, 3},
856 {12, 4},
857 {12, 5},
858 {11, 6},
859 {10, 6},
860 { 9, 6},
861 { 8, 6},
862 { 7, 6},
863 { 6, 6},
864 { 7, 6},
865 { 8, 6},
866 { 9, 6},
867 {10, 6},
868 {11, 6},
869 {12, 5},
870 {12, 4},
871 {12, 3},
872 {11, 2},
873 {10, 2},
874 { 9, 2},
875 { 8, 2},
876 { 7, 2},
877 { 6, 2},
878 { 5, 1},
879 { 5, 0},
881};
882static const RoadDriveEntry _rv_station_right_ne_far[] = {
883 { 0, 5},
884 { 1, 5},
885 { 2, 4},
886 { 3, 3},
887 { 4, 3},
888 { 5, 3},
889 { 6, 3},
890 { 7, 3},
891 { 8, 3},
892 { 9, 3},
893 {10, 4},
894 {10, 5},
895 {10, 6},
896 {10, 7},
897 {10, 8},
898 {10, 9},
899 {10, 8},
900 {10, 7},
901 {10, 6},
902 {10, 5},
903 {10, 4},
904 { 9, 3},
905 { 8, 3},
906 { 7, 3},
907 { 6, 3},
908 { 5, 3},
909 { 4, 3},
910 { 3, 3},
911 { 2, 4},
912 { 2, 5},
913 { 2, 6},
914 { 2, 7},
915 { 2, 8},
916 { 1, 9},
917 { 0, 9},
919};
920static const RoadDriveEntry _rv_station_right_se_far[] = {
921 {5, 15},
922 {5, 14},
923 {4, 13},
924 {3, 12},
925 {3, 11},
926 {3, 10},
927 {3, 9},
928 {3, 8},
929 {3, 7},
930 {3, 6},
931 {4, 5},
932 {5, 5},
933 {6, 5},
934 {7, 5},
935 {8, 5},
936 {9, 5},
937 {8, 5},
938 {7, 5},
939 {6, 5},
940 {5, 5},
941 {4, 5},
942 {3, 6},
943 {3, 7},
944 {3, 8},
945 {3, 9},
946 {3, 10},
947 {3, 11},
948 {3, 12},
949 {4, 13},
950 {5, 13},
951 {6, 13},
952 {7, 13},
953 {8, 13},
954 {9, 14},
955 {9, 15},
957};
958static const RoadDriveEntry _rv_station_right_ne_near[] = {
959 {0, 5},
960 {1, 5},
961 {2, 4},
962 {3, 3},
963 {4, 3},
964 {5, 3},
965 {6, 4},
966 {6, 5},
967 {6, 6},
968 {6, 7},
969 {6, 8},
970 {6, 9},
971 {6, 8},
972 {6, 7},
973 {6, 6},
974 {6, 5},
975 {6, 4},
976 {5, 3},
977 {4, 3},
978 {3, 3},
979 {2, 4},
980 {2, 5},
981 {2, 6},
982 {2, 7},
983 {2, 8},
984 {1, 9},
985 {0, 9},
987};
988static const RoadDriveEntry _rv_station_right_se_near[] = {
989 {5, 15},
990 {5, 14},
991 {4, 13},
992 {3, 12},
993 {3, 11},
994 {3, 10},
995 {4, 9},
996 {5, 9},
997 {6, 9},
998 {7, 9},
999 {8, 9},
1000 {9, 9},
1001 {8, 9},
1002 {7, 9},
1003 {6, 9},
1004 {5, 9},
1005 {4, 9},
1006 {3, 10},
1007 {3, 11},
1008 {3, 12},
1009 {4, 13},
1010 {5, 13},
1011 {6, 13},
1012 {7, 13},
1013 {8, 13},
1014 {9, 14},
1015 {9, 15},
1017};
1018
1019static const RoadDriveEntry * const _road_road_drive_data[] = {
1020 _roadveh_drive_data_0,
1021 _roadveh_drive_data_1,
1022 _roadveh_drive_data_2,
1023 _roadveh_drive_data_3,
1024 _roadveh_drive_data_4,
1025 _roadveh_drive_data_5,
1026 _roadveh_drive_data_6,
1027 _roadveh_drive_data_7,
1028 _roadveh_drive_data_8,
1029 _roadveh_drive_data_9,
1030 _roadveh_drive_data_10,
1031 _roadveh_drive_data_11,
1032 _roadveh_drive_data_12,
1033 _roadveh_drive_data_13,
1034 _roadveh_drive_data_14,
1035 _roadveh_drive_data_15,
1036 _roadveh_drive_data_16,
1037 _roadveh_drive_data_17,
1038 _roadveh_drive_data_18,
1039 _roadveh_drive_data_19,
1040 _roadveh_drive_data_20,
1041 _roadveh_drive_data_21,
1042 _roadveh_drive_data_22,
1043 _roadveh_drive_data_23,
1044 _roadveh_drive_data_24,
1045 _roadveh_drive_data_25,
1046 _roadveh_drive_data_26,
1047 _roadveh_drive_data_27,
1048 _roadveh_drive_data_28,
1049 _roadveh_drive_data_29,
1050 _roadveh_drive_data_30,
1051 _roadveh_drive_data_31,
1052 _rv_station_left_sw_far,
1053 _rv_station_left_nw_far,
1054 _rv_station_left_sw_near,
1055 _rv_station_left_nw_near,
1056 _rv_station_left_sw_far,
1057 _rv_station_left_nw_far,
1058 _rv_station_left_sw_near,
1059 _rv_station_left_nw_near,
1060 _rv_station_left_ne_far,
1061 _rv_station_left_se_far,
1062 _rv_station_left_ne_near,
1063 _rv_station_left_se_near,
1064 _rv_station_left_ne_far,
1065 _rv_station_left_se_far,
1066 _rv_station_left_ne_near,
1067 _rv_station_left_se_near,
1068 _rv_station_right_sw_far,
1069 _rv_station_right_nw_far,
1070 _rv_station_right_sw_near,
1071 _rv_station_right_nw_near,
1072 _rv_station_right_sw_far,
1073 _rv_station_right_nw_far,
1074 _rv_station_right_sw_near,
1075 _rv_station_right_nw_near,
1076 _rv_station_right_ne_far,
1077 _rv_station_right_se_far,
1078 _rv_station_right_ne_near,
1079 _rv_station_right_se_near,
1080 _rv_station_right_ne_far,
1081 _rv_station_right_se_far,
1082 _rv_station_right_ne_near,
1083 _rv_station_right_se_near,
1084};
1085
1087extern const uint8_t _road_stop_stop_frame[] = {
1088 /* Duplicated left and right because of "entered stop" bit */
1089 20, 20, 16, 16, 20, 20, 16, 16,
1090 19, 19, 15, 15, 19, 19, 15, 15,
1091 16, 16, 12, 12, 16, 16, 12, 12,
1092 15, 15, 11, 11, 15, 15, 11, 11
1093};
1094
1095static const RoadDriveEntry _roadveh_tram_turn_ne_0[] = {
1096 {15, 5},
1097 {14, 5},
1098 {13, 5},
1099 {12, 5},
1100 {11, 5},
1101 {10, 5},
1102 { 9, 5},
1103 { 8, 5},
1104 { 7, 5},
1105 { 6, 5},
1106 { 5, 5},
1107 { 4, 5},
1108 { 3, 5},
1109 { 2, 5},
1110 { 1, 5},
1111 { 0, 5},
1112 { 0, 6},
1113 { 0, 7},
1114 { 0, 8},
1115 { 0, 9},
1116 {RDE_TURNED | DIAGDIR_SW, 0},
1117 { 1, 9},
1118 { 2, 9},
1119 { 3, 9},
1120 { 4, 9},
1121 { 5, 9},
1122 { 6, 9},
1123 { 7, 9},
1124 { 8, 9},
1125 { 9, 9},
1126 {10, 9},
1127 {11, 9},
1128 {12, 9},
1129 {13, 9},
1130 {14, 9},
1131 {15, 9},
1133};
1134
1135static const RoadDriveEntry _roadveh_tram_turn_ne_1[] = {
1136 {15, 9},
1137 {14, 9},
1138 {13, 9},
1139 {12, 9},
1140 {11, 9},
1141 {10, 9},
1142 { 9, 9},
1143 { 8, 9},
1144 { 7, 9},
1145 { 6, 9},
1146 { 5, 9},
1147 { 4, 9},
1148 { 3, 9},
1149 { 2, 9},
1150 { 1, 9},
1151 { 0, 9},
1152 { 0, 8},
1153 { 0, 7},
1154 { 0, 6},
1155 { 0, 5},
1156 {RDE_TURNED | DIAGDIR_SW, 0},
1157 { 1, 5},
1158 { 2, 5},
1159 { 3, 5},
1160 { 4, 5},
1161 { 5, 5},
1162 { 6, 5},
1163 { 7, 5},
1164 { 8, 5},
1165 { 9, 5},
1166 {10, 5},
1167 {11, 5},
1168 {12, 5},
1169 {13, 5},
1170 {14, 5},
1171 {15, 5},
1173};
1174
1175static const RoadDriveEntry _roadveh_tram_turn_se_0[] = {
1176 {5, 0},
1177 {5, 1},
1178 {5, 2},
1179 {5, 3},
1180 {5, 4},
1181 {5, 5},
1182 {5, 6},
1183 {5, 7},
1184 {5, 8},
1185 {5, 9},
1186 {5, 10},
1187 {5, 11},
1188 {5, 12},
1189 {5, 13},
1190 {5, 14},
1191 {5, 15},
1192 {6, 15},
1193 {7, 15},
1194 {8, 15},
1195 {9, 15},
1196 {RDE_TURNED | DIAGDIR_NW, 0},
1197 {9, 14},
1198 {9, 13},
1199 {9, 12},
1200 {9, 11},
1201 {9, 10},
1202 {9, 9},
1203 {9, 8},
1204 {9, 7},
1205 {9, 6},
1206 {9, 5},
1207 {9, 4},
1208 {9, 3},
1209 {9, 2},
1210 {9, 1},
1211 {9, 0},
1213};
1214
1215static const RoadDriveEntry _roadveh_tram_turn_se_1[] = {
1216 {9, 0},
1217 {9, 1},
1218 {9, 2},
1219 {9, 3},
1220 {9, 4},
1221 {9, 5},
1222 {9, 6},
1223 {9, 7},
1224 {9, 8},
1225 {9, 9},
1226 {9, 10},
1227 {9, 11},
1228 {9, 12},
1229 {9, 13},
1230 {9, 14},
1231 {9, 15},
1232 {8, 15},
1233 {7, 15},
1234 {6, 15},
1235 {5, 15},
1236 {RDE_TURNED | DIAGDIR_NW, 0},
1237 {5, 14},
1238 {5, 13},
1239 {5, 12},
1240 {5, 11},
1241 {5, 10},
1242 {5, 9},
1243 {5, 8},
1244 {5, 7},
1245 {5, 6},
1246 {5, 5},
1247 {5, 4},
1248 {5, 3},
1249 {5, 2},
1250 {5, 1},
1251 {5, 0},
1253};
1254
1255static const RoadDriveEntry _roadveh_tram_turn_sw_0[] = {
1256 { 0, 9},
1257 { 1, 9},
1258 { 2, 9},
1259 { 3, 9},
1260 { 4, 9},
1261 { 5, 9},
1262 { 6, 9},
1263 { 7, 9},
1264 { 8, 9},
1265 { 9, 9},
1266 {10, 9},
1267 {11, 9},
1268 {12, 9},
1269 {13, 9},
1270 {14, 9},
1271 {15, 9},
1272 {15, 8},
1273 {15, 7},
1274 {15, 6},
1275 {15, 5},
1276 {RDE_TURNED | DIAGDIR_NE, 0},
1277 {14, 5},
1278 {13, 5},
1279 {12, 5},
1280 {11, 5},
1281 {10, 5},
1282 { 9, 5},
1283 { 8, 5},
1284 { 7, 5},
1285 { 6, 5},
1286 { 5, 5},
1287 { 4, 5},
1288 { 3, 5},
1289 { 2, 5},
1290 { 1, 5},
1291 { 0, 5},
1293};
1294static const RoadDriveEntry _roadveh_tram_turn_sw_1[] = {
1295 { 0, 5},
1296 { 1, 5},
1297 { 2, 5},
1298 { 3, 5},
1299 { 4, 5},
1300 { 5, 5},
1301 { 6, 5},
1302 { 7, 5},
1303 { 8, 5},
1304 { 9, 5},
1305 {10, 5},
1306 {11, 5},
1307 {12, 5},
1308 {13, 5},
1309 {14, 5},
1310 {15, 5},
1311 {15, 6},
1312 {15, 7},
1313 {15, 8},
1314 {15, 9},
1315 {RDE_TURNED | DIAGDIR_NE, 0},
1316 {14, 9},
1317 {13, 9},
1318 {12, 9},
1319 {11, 9},
1320 {10, 9},
1321 { 9, 9},
1322 { 8, 9},
1323 { 7, 9},
1324 { 6, 9},
1325 { 5, 9},
1326 { 4, 9},
1327 { 3, 9},
1328 { 2, 9},
1329 { 1, 9},
1330 { 0, 9},
1332};
1333
1334static const RoadDriveEntry _roadveh_tram_turn_nw_0[] = {
1335 {9, 15},
1336 {9, 14},
1337 {9, 13},
1338 {9, 12},
1339 {9, 11},
1340 {9, 10},
1341 {9, 9},
1342 {9, 8},
1343 {9, 7},
1344 {9, 6},
1345 {9, 5},
1346 {9, 4},
1347 {9, 3},
1348 {9, 2},
1349 {9, 1},
1350 {9, 0},
1351 {8, 0},
1352 {7, 0},
1353 {6, 0},
1354 {5, 0},
1355 {RDE_TURNED | DIAGDIR_SE, 0},
1356 {5, 1},
1357 {5, 2},
1358 {5, 3},
1359 {5, 4},
1360 {5, 5},
1361 {5, 6},
1362 {5, 7},
1363 {5, 8},
1364 {5, 9},
1365 {5, 10},
1366 {5, 11},
1367 {5, 12},
1368 {5, 13},
1369 {5, 14},
1370 {5, 15},
1372};
1373static const RoadDriveEntry _roadveh_tram_turn_nw_1[] = {
1374 {5, 15},
1375 {5, 14},
1376 {5, 13},
1377 {5, 12},
1378 {5, 11},
1379 {5, 10},
1380 {5, 9},
1381 {5, 8},
1382 {5, 7},
1383 {5, 6},
1384 {5, 5},
1385 {5, 4},
1386 {5, 3},
1387 {5, 2},
1388 {5, 1},
1389 {5, 0},
1390 {6, 0},
1391 {7, 0},
1392 {8, 0},
1393 {9, 0},
1394 {RDE_TURNED | DIAGDIR_SE, 0},
1395 {9, 1},
1396 {9, 2},
1397 {9, 3},
1398 {9, 4},
1399 {9, 5},
1400 {9, 6},
1401 {9, 7},
1402 {9, 8},
1403 {9, 9},
1404 {9, 10},
1405 {9, 11},
1406 {9, 12},
1407 {9, 13},
1408 {9, 14},
1409 {9, 15},
1411};
1412
1413static const RoadDriveEntry * const _road_tram_drive_data[] = {
1414 _roadveh_drive_data_0,
1415 _roadveh_drive_data_1,
1416 _roadveh_drive_data_2,
1417 _roadveh_drive_data_3,
1418 _roadveh_drive_data_4,
1419 _roadveh_drive_data_5,
1420 _roadveh_tram_turn_ne_0,
1421 _roadveh_tram_turn_se_0,
1422 _roadveh_drive_data_8,
1423 _roadveh_drive_data_9,
1424 _roadveh_drive_data_10,
1425 _roadveh_drive_data_11,
1426 _roadveh_drive_data_12,
1427 _roadveh_drive_data_13,
1428 _roadveh_tram_turn_sw_0,
1429 _roadveh_tram_turn_nw_0,
1430 _roadveh_drive_data_16,
1431 _roadveh_drive_data_17,
1432 _roadveh_drive_data_18,
1433 _roadveh_drive_data_19,
1434 _roadveh_drive_data_20,
1435 _roadveh_drive_data_21,
1436 _roadveh_tram_turn_ne_1,
1437 _roadveh_tram_turn_se_1,
1438 _roadveh_drive_data_24,
1439 _roadveh_drive_data_25,
1440 _roadveh_drive_data_26,
1441 _roadveh_drive_data_27,
1442 _roadveh_drive_data_28,
1443 _roadveh_drive_data_29,
1444 _roadveh_tram_turn_sw_1,
1445 _roadveh_tram_turn_nw_1,
1446 nullptr,
1447 nullptr,
1448 nullptr,
1449 nullptr,
1450 nullptr,
1451 nullptr,
1452 nullptr,
1453 nullptr,
1454 nullptr,
1455 nullptr,
1456 nullptr,
1457 nullptr,
1458 nullptr,
1459 nullptr,
1460 nullptr,
1461 nullptr,
1462 nullptr,
1463 nullptr,
1464 nullptr,
1465 nullptr,
1466 nullptr,
1467 nullptr,
1468 nullptr,
1469 nullptr,
1470 nullptr,
1471 nullptr,
1472 nullptr,
1473 nullptr,
1474 nullptr,
1475 nullptr,
1476 nullptr,
1477 nullptr,
1478 nullptr,
1479};
1480
1481static const RoadDriveEntry * const * const _road_drive_data[2] = {
1482 _road_road_drive_data,
1483 _road_tram_drive_data,
1484};
@ DIAGDIR_NE
Northeast, upper right on your monitor.
@ DIAGDIR_NW
Northwest.
@ DIAGDIR_SE
Southeast.
@ DIAGDIR_SW
Southwest.
static const uint RDE_TURNED
We just finished turning.
Definition roadveh.h:62
static const uint RDE_NEXT_TILE
State information about the Road Vehicle controller.
Definition roadveh.h:61
const uint8_t _road_stop_stop_frame[]
Table of road stop stop frames, when to stop at a road stop.