# autorail.h

Go to the documentation of this file.

    00001 /* $Id: autorail.h 15717 2009-03-15 00:03:27Z rubidium $ */
    00002
    00005 /* Rail selection types (directions):
    00006  *  / \    / \    / \    / \   / \   / \
    00007  * /  /\  /\  \  /===\  /   \ /|  \ /  |\
    00008  * \/  /  \  \/  \   /  \===/ \|  / \  |/
    00009  *  \ /    \ /    \ /    \ /   \ /   \ /
    00010  *   0      1      2      3     4     5
    00011  */
    00012
    00013 /* mark invalid tiles red */
    00014 #define RED(c) -c
    00015
    00016 /* table maps each of the six rail directions and tileh combinations to a sprite
    00017  * invalid entries are required to make sure that this array can be quickly accessed */
    00018 static const int _AutorailTilehSprite[][6] = {
    00019 /* type   0        1        2        3        4        5 */
    00020   {       0,       8,      16,      25,      34,      42 }, // tileh = 0
    00021   {       5,      13, RED(22), RED(31),      35,      42 }, // tileh = 1
    00022   {       5,      10,      16,      26, RED(38), RED(46) }, // tileh = 2
    00023   {       5,       9, RED(23),      26,      35, RED(46) }, // tileh = 3
    00024   {       2,      10, RED(19), RED(28),      34,      43 }, // tileh = 4
    00025   {       1,       9,      17,      26,      35,      43 }, // tileh = 5
    00026   {       1,      10, RED(20),      26, RED(38),      43 }, // tileh = 6
    00027   {       1,       9,      17,      26,      35,      43 }, // tileh = 7
    00028   {       2,      13,      17,      25, RED(40), RED(48) }, // tileh = 8
    00029   {       1,      13,      17, RED(32),      35, RED(48) }, // tileh = 9
    00030   {       1,       9,      17,      26,      35,      43 }, // tileh = 10
    00031   {       1,       9,      17,      26,      35,      43 }, // tileh = 11
    00032   {       2,       9,      17, RED(29), RED(40),      43 }, // tileh = 12
    00033   {       1,       9,      17,      26,      35,      43 }, // tileh = 13
    00034   {       1,       9,      17,      26,      35,      43 }, // tileh = 14
    00035   {       0,       1,       2,       3,       4,       5 }, // invalid (15)
    00036   {       0,       1,       2,       3,       4,       5 }, // invalid (16)
    00037   {       0,       1,       2,       3,       4,       5 }, // invalid (17)
    00038   {       0,       1,       2,       3,       4,       5 }, // invalid (18)
    00039   {       0,       1,       2,       3,       4,       5 }, // invalid (19)
    00040   {       0,       1,       2,       3,       4,       5 }, // invalid (20)
    00041   {       0,       1,       2,       3,       4,       5 }, // invalid (21)
    00042   {       0,       1,       2,       3,       4,       5 }, // invalid (22)
    00043   {       6,      11,      17,      27, RED(39), RED(47) }, // tileh = 23
    00044   {       0,       1,       2,       3,       4,       5 }, // invalid (24)
    00045   {       0,       1,       2,       3,       4,       5 }, // invalid (25)
    00046   {       0,       1,       2,       3,       4,       5 }, // invalid (26)
    00047   {       7,      15, RED(24), RED(33),      36,      44 }, // tileh = 27
    00048   {       0,       1,       2,       3,       4,       5 }, // invalid (28)
    00049   {       3,      14,      18,      26, RED(41), RED(49) }, // tileh = 29
    00050   {       4,      12, RED(21), RED(30),      37,      45 }  // tileh = 30
    00051 };
    00052 #undef RED
    00053
    00054
    00055 /* maps each pixel of a tile (16x16) to a selection type
    00056  * (0,0) is the top corner, (16,16) the bottom corner */
    00057 static const HighLightStyle _autorail_piece[][16] = {
    00058   { HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR },
    00059   { HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR },
    00060   { HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR },
    00061   { HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR },
    00062   { HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR },
    00063   { HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_HU, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR, HT_DIR_VR },
    00064   { HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_Y, HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y  },
    00065   { HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y, HT_DIR_X, HT_DIR_Y, HT_DIR_Y, HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y  },
    00066   { HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y, HT_DIR_Y, HT_DIR_X, HT_DIR_Y, HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y  },
    00067   { HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y,  HT_DIR_Y  },
    00068   { HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL },
    00069   { HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL },
    00070   { HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL },
    00071   { HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL },
    00072   { HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL },
    00073   { HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_VL, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_X, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL, HT_DIR_HL }
    00074 };