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