Add: INR currency (#8136)
[openttd-github.git] / src / table / roadveh_movement.h
blobbb4c5df3b2463591bc0d09fcc26de25c1c715381
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 */
8 /** @file table/roadveh_movement.h Data about how a road vehicle must drive on a tile */
10 static 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},
27 {RDE_NEXT_TILE | DIAGDIR_NE, 0}
29 static 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},
46 {RDE_NEXT_TILE | DIAGDIR_SE, 0}
48 static 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},
57 {RDE_NEXT_TILE | DIAGDIR_NE, 0}
59 static 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},
76 {RDE_NEXT_TILE | DIAGDIR_SE, 0}
78 static 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},
95 {RDE_NEXT_TILE | DIAGDIR_SW, 0}
97 static 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},
107 {RDE_NEXT_TILE | DIAGDIR_SE, 0}
109 static const RoadDriveEntry _roadveh_drive_data_6[] = {
110 {0, 6},
111 {0, 7},
112 {0, 8},
113 {0, 9},
114 {RDE_TURNED | DIAGDIR_SW, 0}
116 static const RoadDriveEntry _roadveh_drive_data_7[] = {
117 {6, 15},
118 {7, 15},
119 {8, 15},
120 {9, 15},
121 {RDE_TURNED | DIAGDIR_NW, 0}
123 static 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},
140 {RDE_NEXT_TILE | DIAGDIR_SW, 0}
142 static 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},
159 {RDE_NEXT_TILE | DIAGDIR_NW, 0}
161 static 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},
177 {RDE_NEXT_TILE | DIAGDIR_NW, 0}
179 static 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},
189 {RDE_NEXT_TILE | DIAGDIR_SW, 0}
191 static 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},
200 {RDE_NEXT_TILE | DIAGDIR_NW, 0}
202 static 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},
218 {RDE_NEXT_TILE | DIAGDIR_NE, 0}
220 static const RoadDriveEntry _roadveh_drive_data_14[] = {
221 {15, 8},
222 {15, 7},
223 {15, 6},
224 {15, 5},
225 {RDE_TURNED | DIAGDIR_NE, 0}
227 static const RoadDriveEntry _roadveh_drive_data_15[] = {
228 {8, 0},
229 {7, 0},
230 {6, 0},
231 {5, 0},
232 {RDE_TURNED | DIAGDIR_SE, 0}
234 static 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},
251 {RDE_NEXT_TILE | DIAGDIR_NE, 0}
253 static 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},
270 {RDE_NEXT_TILE | DIAGDIR_SE, 0}
272 static 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},
288 {RDE_NEXT_TILE | DIAGDIR_NE, 0}
290 static 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},
300 {RDE_NEXT_TILE | DIAGDIR_SE, 0}
302 static 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},
311 {RDE_NEXT_TILE | DIAGDIR_SW, 0}
313 static 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},
329 {RDE_NEXT_TILE | DIAGDIR_SE, 0}
331 static const RoadDriveEntry _roadveh_drive_data_22[] = {
332 {0, 8},
333 {0, 7},
334 {0, 6},
335 {0, 5},
336 {RDE_TURNED | DIAGDIR_SW, 0}
338 static const RoadDriveEntry _roadveh_drive_data_23[] = {
339 {8, 15},
340 {7, 15},
341 {6, 15},
342 {5, 15},
343 {RDE_TURNED | DIAGDIR_NW, 0}
345 static 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},
362 {RDE_NEXT_TILE | DIAGDIR_SW, 0}
364 static 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},
381 {RDE_NEXT_TILE | DIAGDIR_NW, 0}
383 static 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},
392 {RDE_NEXT_TILE | DIAGDIR_NW, 0}
394 static 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},
411 {RDE_NEXT_TILE | DIAGDIR_SW, 0}
413 static 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},
430 {RDE_NEXT_TILE | DIAGDIR_NW, 0}
432 static 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},
442 {RDE_NEXT_TILE | DIAGDIR_NE, 0}
444 static const RoadDriveEntry _roadveh_drive_data_30[] = {
445 {15, 6},
446 {15, 7},
447 {15, 8},
448 {15, 9},
449 {RDE_TURNED | DIAGDIR_NE, 0}
451 static const RoadDriveEntry _roadveh_drive_data_31[] = {
452 {6, 0},
453 {7, 0},
454 {8, 0},
455 {9, 0},
456 {RDE_TURNED | DIAGDIR_SE, 0}
458 static 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},
496 {RDE_NEXT_TILE | DIAGDIR_SW, 0}
498 static 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},
536 {RDE_NEXT_TILE | DIAGDIR_NW, 0}
538 static 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},
568 {RDE_NEXT_TILE | DIAGDIR_SW, 0}
570 static 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},
600 {RDE_NEXT_TILE | DIAGDIR_NW, 0}
602 static 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},
638 {RDE_NEXT_TILE | DIAGDIR_NE, 0}
640 static 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},
676 {RDE_NEXT_TILE | DIAGDIR_SE, 0}
678 static 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},
706 {RDE_NEXT_TILE | DIAGDIR_NE, 0}
708 static 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},
736 {RDE_NEXT_TILE | DIAGDIR_SE, 0}
738 static 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},
776 {RDE_NEXT_TILE | DIAGDIR_SW, 0}
778 static 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},
816 {RDE_NEXT_TILE | DIAGDIR_NW, 0}
818 static 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},
848 {RDE_NEXT_TILE | DIAGDIR_SW, 0}
850 static 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},
880 {RDE_NEXT_TILE | DIAGDIR_NW, 0}
882 static 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},
918 {RDE_NEXT_TILE | DIAGDIR_NE, 0}
920 static 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},
956 {RDE_NEXT_TILE | DIAGDIR_SE, 0}
958 static 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},
986 {RDE_NEXT_TILE | DIAGDIR_NE, 0}
988 static 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},
1016 {RDE_NEXT_TILE | DIAGDIR_SE, 0}
1019 static 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,
1086 /** Table of road stop stop frames, when to stop at a road stop. */
1087 extern const byte _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
1095 static 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},
1132 {RDE_NEXT_TILE | DIAGDIR_SW, 0}
1135 static 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},
1172 {RDE_NEXT_TILE | DIAGDIR_SW, 0}
1175 static 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},
1212 {RDE_NEXT_TILE | DIAGDIR_NW, 0}
1215 static 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},
1252 {RDE_NEXT_TILE | DIAGDIR_NW, 0}
1255 static 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},
1292 {RDE_NEXT_TILE | DIAGDIR_NE, 0}
1294 static 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},
1331 {RDE_NEXT_TILE | DIAGDIR_NE, 0}
1334 static 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},
1371 {RDE_NEXT_TILE | DIAGDIR_SE, 0}
1373 static 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},
1410 {RDE_NEXT_TILE | DIAGDIR_SE, 0}
1413 static 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,
1481 static const RoadDriveEntry * const * const _road_drive_data[2] = {
1482 _road_road_drive_data,
1483 _road_tram_drive_data,