elrail_data.h

Go to the documentation of this file.
00001 /* $Id: elrail_data.h 15717 2009-03-15 00:03:27Z rubidium $ */
00002 
00006 #ifndef ELRAIL_DATA_H
00007 #define ELRAIL_DATA_H
00008 
00011 enum TLG {
00012   XEVEN_YEVEN = 0,
00013   XEVEN_YODD  = 1,
00014   XODD_YEVEN  = 2,
00015   XODD_YODD   = 3,
00016   TLG_END
00017 };
00018 
00022 enum TileSource {
00023   TS_HOME      = 0,
00024   TS_NEIGHBOUR = 1,
00025 
00026   TS_END
00027 };
00028 
00029 enum {
00030   NUM_TRACKS_AT_PCP = 6
00031 };
00032 
00034 static byte AllowedPPPonPCP[DIAGDIR_END] = {
00035   1 << DIR_N | 1 << DIR_E  | 1 << DIR_SE | 1 << DIR_S | 1 << DIR_W  | 1 << DIR_NW,
00036   1 << DIR_N | 1 << DIR_NE | 1 << DIR_E  | 1 << DIR_S | 1 << DIR_SW | 1 << DIR_W,
00037   1 << DIR_N | 1 << DIR_E  | 1 << DIR_SE | 1 << DIR_S | 1 << DIR_W  | 1 << DIR_NW,
00038   1 << DIR_N | 1 << DIR_NE | 1 << DIR_E  | 1 << DIR_S | 1 << DIR_SW | 1 << DIR_W,
00039 };
00040 
00044 static byte OwnedPPPonPCP[DIAGDIR_END] = {
00045   1 << DIR_SE | 1 << DIR_S  | 1 << DIR_SW | 1 << DIR_W,
00046   1 << DIR_N  | 1 << DIR_SW | 1 << DIR_W  | 1 << DIR_NW,
00047   1 << DIR_N  | 1 << DIR_NE | 1 << DIR_E  | 1 << DIR_NW,
00048   1 << DIR_NE | 1 << DIR_E  | 1 << DIR_SE | 1 << DIR_S
00049 };
00050 
00052 static const DiagDirection PCPpositions[TRACK_END][2] = {
00053   {DIAGDIR_NE, DIAGDIR_SW}, // X
00054   {DIAGDIR_SE, DIAGDIR_NW}, // Y
00055   {DIAGDIR_NW, DIAGDIR_NE}, // UPPER
00056   {DIAGDIR_SE, DIAGDIR_SW}, // LOWER
00057   {DIAGDIR_SW, DIAGDIR_NW}, // LEFT
00058   {DIAGDIR_NE, DIAGDIR_SE}, // RIGHT
00059 };
00060 
00061 #define PCP_NOT_ON_TRACK 0xFF
00062 
00066 static byte PreferredPPPofTrackAtPCP[TRACK_END][DIAGDIR_END] = {
00067   {    // X
00068     1 << DIR_NE | 1 << DIR_SE | 1 << DIR_NW, // NE
00069     PCP_NOT_ON_TRACK,                        // SE
00070     1 << DIR_SE | 1 << DIR_SW | 1 << DIR_NW, // SW
00071     PCP_NOT_ON_TRACK                         // NE
00072   }, { // Y
00073     PCP_NOT_ON_TRACK,
00074     1 << DIR_NE | 1 << DIR_SE | 1 << DIR_SW,
00075     PCP_NOT_ON_TRACK,
00076     1 << DIR_SW | 1 << DIR_NW | 1 << DIR_NE
00077   }, { // UPPER
00078     1 << DIR_E | 1 << DIR_N | 1 << DIR_S,
00079     PCP_NOT_ON_TRACK,
00080     PCP_NOT_ON_TRACK,
00081     1 << DIR_W | 1 << DIR_N | 1 << DIR_S
00082   }, { // LOWER
00083     PCP_NOT_ON_TRACK,
00084     1 << DIR_E | 1 << DIR_N | 1 << DIR_S,
00085     1 << DIR_W | 1 << DIR_N | 1 << DIR_S,
00086     PCP_NOT_ON_TRACK
00087   }, { // LEFT
00088     PCP_NOT_ON_TRACK,
00089     PCP_NOT_ON_TRACK,
00090     1 << DIR_S | 1 << DIR_E | 1 << DIR_W,
00091     1 << DIR_N | 1 << DIR_E | 1 << DIR_W
00092   }, { // RIGHT
00093     1 << DIR_N | 1 << DIR_E | 1 << DIR_W,
00094     1 << DIR_S | 1 << DIR_E | 1 << DIR_W,
00095     PCP_NOT_ON_TRACK,
00096     PCP_NOT_ON_TRACK
00097   }
00098 };
00099 #undef PCP_NOT_ON_TRACK
00100 
00101 
00102 #define NUM_IGNORE_GROUPS 3
00103 #define IGNORE_NONE 0xFF
00104 
00107 static byte IgnoredPCP[NUM_IGNORE_GROUPS][TLG_END][DIAGDIR_END] = {
00108   {   // Ignore group 1, X and Y tracks
00109     {     // X even, Y even
00110       IGNORE_NONE,
00111       1 << DIR_NE | 1 << DIR_SW,
00112       1 << DIR_NW | 1 << DIR_SE,
00113       IGNORE_NONE
00114     }, { // X even, Y odd
00115       IGNORE_NONE,
00116       IGNORE_NONE,
00117       1 << DIR_NW | 1 << DIR_SE,
00118       1 << DIR_NE | 1 << DIR_SW
00119     }, { // X odd,  Y even
00120       1 << DIR_NW | 1 << DIR_SE,
00121       1 << DIR_NE | 1 << DIR_SW,
00122       IGNORE_NONE,
00123       IGNORE_NONE
00124     }, { // X odd,  Y odd
00125       1 << DIR_NW | 1 << DIR_SE,
00126       IGNORE_NONE,
00127       IGNORE_NONE,
00128       1 << DIR_NE | 1 << DIR_SW
00129     }
00130   },
00131   {   // Ignore group 2, LEFT and RIGHT tracks
00132     {
00133       1 << DIR_E | 1 << DIR_W,
00134       IGNORE_NONE,
00135       IGNORE_NONE,
00136       1 << DIR_E | 1 << DIR_W
00137     }, {
00138       IGNORE_NONE,
00139       1 << DIR_E | 1 << DIR_W,
00140       1 << DIR_E | 1 << DIR_W,
00141       IGNORE_NONE
00142     }, {
00143       IGNORE_NONE,
00144       1 << DIR_E | 1 << DIR_W,
00145       1 << DIR_E | 1 << DIR_W,
00146       IGNORE_NONE
00147     }, {
00148       1 << DIR_E | 1 << DIR_W,
00149       IGNORE_NONE,
00150       IGNORE_NONE,
00151       1 << DIR_E | 1 << DIR_W
00152     }
00153   },
00154   {   // Ignore group 3, UPPER and LOWER tracks
00155     {
00156       1 << DIR_N | 1 << DIR_S,
00157       1 << DIR_N | 1 << DIR_S,
00158       IGNORE_NONE,
00159       IGNORE_NONE
00160     }, {
00161       IGNORE_NONE,
00162       IGNORE_NONE,
00163       1 << DIR_N | 1 << DIR_S,
00164       1 << DIR_N | 1 << DIR_S
00165     }, {
00166       IGNORE_NONE,
00167       IGNORE_NONE,
00168       1 << DIR_N | 1 << DIR_S ,
00169       1 << DIR_N | 1 << DIR_S
00170     }, {
00171       1 << DIR_N | 1 << DIR_S,
00172       1 << DIR_N | 1 << DIR_S,
00173       IGNORE_NONE,
00174       IGNORE_NONE
00175     }
00176   }
00177 };
00178 
00179 #undef NO_IGNORE
00180 
00182 static byte DisallowedPPPofTrackAtPCP[TRACK_END][DIAGDIR_END] = {
00183   {1 << DIR_SW | 1 << DIR_NE, 0,           1 << DIR_SW | 1 << DIR_NE, 0          }, // X
00184   {0,           1 << DIR_NW | 1 << DIR_SE, 0,           1 << DIR_NW | 1 << DIR_SE}, // Y
00185   {1 << DIR_W | 1 << DIR_E,  0,           0,           1 << DIR_W | 1 << DIR_E }, // UPPER
00186   {0,           1 << DIR_W | 1 << DIR_E,  1 << DIR_W | 1 << DIR_E,  0          }, // LOWER
00187   {0,           0,           1 << DIR_S | 1 << DIR_N,  1 << DIR_N | 1 << DIR_S }, // LEFT
00188   {1 << DIR_S | 1 << DIR_N,  1 << DIR_S | 1 << DIR_N,  0,           0,         }, // RIGHT
00189 };
00190 
00191 /* This array stores which track bits can meet at a tile edge */
00192 static const Track TracksAtPCP[DIAGDIR_END][NUM_TRACKS_AT_PCP] = {
00193   {TRACK_X, TRACK_X, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
00194   {TRACK_Y, TRACK_Y, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
00195   {TRACK_X, TRACK_X, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
00196   {TRACK_Y, TRACK_Y, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
00197 };
00198 
00199 /* takes each of the 6 track bits from the array above and
00200  * assigns it to the home tile or neighbour tile */
00201 static const TileSource TrackSourceTile[DIAGDIR_END][NUM_TRACKS_AT_PCP] = {
00202   {TS_HOME, TS_NEIGHBOUR, TS_HOME     , TS_NEIGHBOUR, TS_NEIGHBOUR, TS_HOME     },
00203   {TS_HOME, TS_NEIGHBOUR, TS_NEIGHBOUR, TS_HOME     , TS_NEIGHBOUR, TS_HOME     },
00204   {TS_HOME, TS_NEIGHBOUR, TS_NEIGHBOUR, TS_HOME     , TS_HOME     , TS_NEIGHBOUR},
00205   {TS_HOME, TS_NEIGHBOUR, TS_HOME     , TS_NEIGHBOUR, TS_HOME     , TS_NEIGHBOUR},
00206 };
00207 
00208 /* Several PPPs maybe exist, here they are sorted in order of preference. */
00209 static const Direction PPPorder[DIAGDIR_END][TLG_END][DIR_END] = {    //  X  -  Y
00210   {   // PCP 0
00211     {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_N, DIR_E, DIR_S, DIR_W}, // evn - evn
00212     {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_S, DIR_W, DIR_N, DIR_E}, // evn - odd
00213     {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_S, DIR_W, DIR_N, DIR_E}, // odd - evn
00214     {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_N, DIR_E, DIR_S, DIR_W}, // odd - odd
00215   }, {// PCP 1
00216     {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_S, DIR_E, DIR_N, DIR_W}, // evn - evn
00217     {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_N, DIR_W, DIR_S, DIR_E}, // evn - odd
00218     {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_N, DIR_W, DIR_S, DIR_E}, // odd - evn
00219     {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_S, DIR_E, DIR_N, DIR_W}, // odd - odd
00220   }, {// PCP 2
00221     {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_S, DIR_W, DIR_N, DIR_E}, // evn - evn
00222     {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_N, DIR_E, DIR_S, DIR_W}, // evn - odd
00223     {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_N, DIR_E, DIR_S, DIR_W}, // odd - evn
00224     {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_S, DIR_W, DIR_N, DIR_E}, // odd - odd
00225   }, {// PCP 3
00226     {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_N, DIR_W, DIR_S, DIR_E}, // evn - evn
00227     {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_S, DIR_E, DIR_N, DIR_W}, // evn - odd
00228     {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_S, DIR_E, DIR_N, DIR_W}, // odd - evn
00229     {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_N, DIR_W, DIR_S, DIR_E}, // odd - odd
00230   }
00231 };
00232 /* Geometric placement of the PCP relative to the tile origin */
00233 static const int8 x_pcp_offsets[DIAGDIR_END] = {0,  8, 16, 8};
00234 static const int8 y_pcp_offsets[DIAGDIR_END] = {8, 16,  8, 0};
00235 /* Geometric placement of the PPP relative to the PCP*/
00236 static const int8 x_ppp_offsets[DIR_END] = {-2, -4, -2,  0,  2,  4,  2,  0};
00237 static const int8 y_ppp_offsets[DIR_END] = {-2,  0,  2,  4,  2,  0, -2, -4};
00238 
00242 enum PylonSpriteOffset {
00243   PSO_Y_NE,
00244   PSO_Y_SW,
00245   PSO_X_NW,
00246   PSO_X_SE,
00247   PSO_EW_N,
00248   PSO_EW_S,
00249   PSO_NS_W,
00250   PSO_NS_E,
00251 };
00252 
00253 /* The type of pylon to draw at each PPP */
00254 static const uint8 pylon_sprites[] = {
00255   PSO_EW_N,
00256   PSO_Y_NE,
00257   PSO_NS_E,
00258   PSO_X_SE,
00259   PSO_EW_S,
00260   PSO_Y_SW,
00261   PSO_NS_W,
00262   PSO_X_NW,
00263 };
00264 
00268 enum WireSpriteOffset {
00269   WSO_X_SHORT,
00270   WSO_Y_SHORT,
00271   WSO_EW_SHORT,
00272   WSO_NS_SHORT,
00273   WSO_X_SHORT_DOWN,
00274   WSO_Y_SHORT_UP,
00275   WSO_X_SHORT_UP,
00276   WSO_Y_SHORT_DOWN,
00277 
00278   WSO_X_SW,
00279   WSO_Y_SE,
00280   WSO_EW_E,
00281   WSO_NS_S,
00282   WSO_X_SW_DOWN,
00283   WSO_Y_SE_UP,
00284   WSO_X_SW_UP,
00285   WSO_Y_SE_DOWN,
00286 
00287   WSO_X_NE,
00288   WSO_Y_NW,
00289   WSO_EW_W,
00290   WSO_NS_N,
00291   WSO_X_NE_DOWN,
00292   WSO_Y_NW_UP,
00293   WSO_X_NE_UP,
00294   WSO_Y_NW_DOWN,
00295 
00296   WSO_ENTRANCE_NE,
00297   WSO_ENTRANCE_SE,
00298   WSO_ENTRANCE_SW,
00299   WSO_ENTRANCE_NW,
00300 };
00301 
00302 struct SortableSpriteStruct {
00303   uint8 image_offset;
00304   int8 x_offset;
00305   int8 y_offset;
00306   int8 x_size;
00307   int8 y_size;
00308   int8 z_size;
00309   int8 z_offset;
00310 };
00311 
00312 enum {
00314   ELRAIL_ELEVATION = 10,
00316   ELRAIL_ELEVRAISE = ELRAIL_ELEVATION + TILE_HEIGHT
00317 };
00318 
00319 static const SortableSpriteStruct CatenarySpriteData[] = {
00320 /* X direction
00321    * Flat tiles:
00322      * Wires */
00323   { WSO_X_SW,          0,  7, 15,  1,  1, ELRAIL_ELEVATION }, 
00324   { WSO_X_NE,          0,  7, 15,  1,  1, ELRAIL_ELEVATION }, 
00325   { WSO_X_SHORT,       0,  7, 15,  1,  1, ELRAIL_ELEVATION }, 
00326 
00327   /* "up" tiles
00328      * Wires */
00329   { WSO_X_SW_UP,       0,  7, 15,  8,  1, ELRAIL_ELEVRAISE }, 
00330   { WSO_X_NE_UP,       0,  7, 15,  8,  1, ELRAIL_ELEVRAISE }, 
00331   { WSO_X_SHORT_UP,    0,  7, 15,  8,  1, ELRAIL_ELEVRAISE }, 
00332 
00333   /* "down" tiles
00334      * Wires */
00335   { WSO_X_SW_DOWN,     0,  7, 15,  8,  1, ELRAIL_ELEVATION }, 
00336   { WSO_X_NE_DOWN,     0,  7, 15,  8,  1, ELRAIL_ELEVATION }, 
00337   { WSO_X_SHORT_DOWN,  0,  7, 15,  8,  1, ELRAIL_ELEVATION }, 
00338 
00339 
00340 /* Y direction
00341    * Flat tiles:
00342      * Wires */
00343   { WSO_Y_SE,          7,  0,  1, 15,  1, ELRAIL_ELEVATION }, 
00344   { WSO_Y_NW,          7,  0,  1, 15,  1, ELRAIL_ELEVATION }, 
00345   { WSO_Y_SHORT,       7,  0,  1, 15,  1, ELRAIL_ELEVATION }, 
00346 
00347   /* "up" tiles
00348      * Wires */
00349   { WSO_Y_SE_UP,       7,  0,  8, 15,  1, ELRAIL_ELEVRAISE }, 
00350   { WSO_Y_NW_UP,       7,  0,  8, 15,  1, ELRAIL_ELEVRAISE }, 
00351   { WSO_Y_SHORT_UP,    7,  0,  8, 15,  1, ELRAIL_ELEVRAISE }, 
00352 
00353   /* "down" tiles
00354      * Wires */
00355   { WSO_Y_SE_DOWN,     7,  0,  8, 15,  1, ELRAIL_ELEVATION }, 
00356   { WSO_Y_NW_DOWN,     7,  0,  8, 15,  1, ELRAIL_ELEVATION }, 
00357   { WSO_Y_SHORT_DOWN,  7,  0,  8, 15,  1, ELRAIL_ELEVATION }, 
00358 
00359 /* NS Direction */
00360   { WSO_NS_SHORT,      8,  0,  8,  8,  1, ELRAIL_ELEVATION }, 
00361   { WSO_NS_SHORT,      0,  8,  8,  8,  1, ELRAIL_ELEVATION }, 
00362 
00363   { WSO_NS_N,          8,  0,  8,  8,  1, ELRAIL_ELEVATION }, 
00364   { WSO_NS_N,          0,  8,  8,  8,  1, ELRAIL_ELEVATION }, 
00365 
00366   { WSO_NS_S,          8,  0,  8,  8,  1, ELRAIL_ELEVATION }, 
00367   { WSO_NS_S,          0,  8,  8,  8,  1, ELRAIL_ELEVATION }, 
00368 
00369 /* EW Direction */
00370   { WSO_EW_SHORT,      7,  0,  1,  1,  1, ELRAIL_ELEVATION }, 
00371   { WSO_EW_SHORT,     15,  8,  3,  3,  1, ELRAIL_ELEVATION }, 
00372 
00373   { WSO_EW_W,          7,  0,  1,  1,  1, ELRAIL_ELEVATION }, 
00374   { WSO_EW_W,         15,  8,  3,  3,  1, ELRAIL_ELEVATION }, 
00375 
00376   { WSO_EW_E,          7,  0,  1,  1,  1, ELRAIL_ELEVATION }, 
00377   { WSO_EW_E,         15,  8,  3,  3,  1, ELRAIL_ELEVATION }  
00378 };
00379 
00380 static const SortableSpriteStruct CatenarySpriteData_Depot[] = {
00381   { WSO_ENTRANCE_NE,   0,  7, 15,  1,  1, ELRAIL_ELEVATION }, 
00382   { WSO_ENTRANCE_SE,   7,  0,  1, 15,  1, ELRAIL_ELEVATION }, 
00383   { WSO_ENTRANCE_SW,   0,  7, 15,  1,  1, ELRAIL_ELEVATION }, 
00384   { WSO_ENTRANCE_NW,   7,  0,  1, 15,  1, ELRAIL_ELEVATION }  
00385 };
00386 
00387 static const SortableSpriteStruct CatenarySpriteData_Tunnel[] = {
00388   { WSO_ENTRANCE_NE,   0,  7, 15,  1,  1, ELRAIL_ELEVATION }, 
00389   { WSO_ENTRANCE_SE,   7,  0,  1, 15,  1, ELRAIL_ELEVATION }, 
00390   { WSO_ENTRANCE_SW,   0,  7, 15,  1,  1, ELRAIL_ELEVATION }, 
00391   { WSO_ENTRANCE_NW,   7,  0,  1, 15,  1, ELRAIL_ELEVATION }  
00392 };
00393 
00394 
00406 enum CatenarySprite {
00407   WIRE_X_FLAT_SW,
00408   WIRE_X_FLAT_NE,
00409   WIRE_X_FLAT_BOTH,
00410 
00411   WIRE_X_UP_SW,
00412   WIRE_X_UP_NE,
00413   WIRE_X_UP_BOTH,
00414 
00415   WIRE_X_DOWN_SW,
00416   WIRE_X_DOWN_NE,
00417   WIRE_X_DOWN_BOTH,
00418 
00419   WIRE_Y_FLAT_SE,
00420   WIRE_Y_FLAT_NW,
00421   WIRE_Y_FLAT_BOTH,
00422 
00423   WIRE_Y_UP_SE,
00424   WIRE_Y_UP_NW,
00425   WIRE_Y_UP_BOTH,
00426 
00427   WIRE_Y_DOWN_SE,
00428   WIRE_Y_DOWN_NW,
00429   WIRE_Y_DOWN_BOTH,
00430 
00431   WIRE_NS_W_BOTH,
00432   WIRE_NS_E_BOTH,
00433 
00434   WIRE_NS_W_N,
00435   WIRE_NS_E_N,
00436 
00437   WIRE_NS_W_S,
00438   WIRE_NS_E_S,
00439 
00440   WIRE_EW_N_BOTH,
00441   WIRE_EW_S_BOTH,
00442 
00443   WIRE_EW_N_W,
00444   WIRE_EW_S_W,
00445 
00446   WIRE_EW_N_E,
00447   WIRE_EW_S_E,
00448 
00449   INVALID_CATENARY = 0xFF
00450 };
00451 
00452 /* Selects a Wire (with white and grey ends) depending on whether:
00453  * a) none (should never happen)
00454  * b) the first
00455  * c) the second
00456  * d) both
00457  * PCP exists.*/
00458 static const CatenarySprite Wires[5][TRACK_END][4] = {
00459   { // Tileh == 0
00460     {INVALID_CATENARY, WIRE_X_FLAT_NE,   WIRE_X_FLAT_SW,   WIRE_X_FLAT_BOTH},
00461     {INVALID_CATENARY, WIRE_Y_FLAT_SE,   WIRE_Y_FLAT_NW,   WIRE_Y_FLAT_BOTH},
00462     {INVALID_CATENARY, WIRE_EW_N_W,      WIRE_EW_N_E,      WIRE_EW_N_BOTH},
00463     {INVALID_CATENARY, WIRE_EW_S_E,      WIRE_EW_S_W,      WIRE_EW_S_BOTH},
00464     {INVALID_CATENARY, WIRE_NS_W_S,      WIRE_NS_W_N,      WIRE_NS_W_BOTH},
00465     {INVALID_CATENARY, WIRE_NS_E_N,      WIRE_NS_E_S,      WIRE_NS_E_BOTH},
00466   }, { // Tileh == 3
00467     {INVALID_CATENARY, WIRE_X_UP_NE,     WIRE_X_UP_SW,     WIRE_X_UP_BOTH},
00468     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00469     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00470     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00471     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00472     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00473   }, { // Tileh == 6
00474     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00475     {INVALID_CATENARY, WIRE_Y_UP_SE,     WIRE_Y_UP_NW,     WIRE_Y_UP_BOTH},
00476     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00477     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00478     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00479     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00480   }, { // Tileh == 9
00481     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00482     {INVALID_CATENARY, WIRE_Y_DOWN_SE,   WIRE_Y_DOWN_NW,   WIRE_Y_DOWN_BOTH},
00483     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00484     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00485     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00486     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00487   }, { // Tileh == 12
00488     {INVALID_CATENARY, WIRE_X_DOWN_NE,   WIRE_X_DOWN_SW,   WIRE_X_DOWN_BOTH},
00489     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00490     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00491     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00492     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00493     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00494   }
00495 };
00496 
00497 #endif /* ELRAIL_DATA_H */

Generated on Wed Apr 1 14:38:10 2009 for OpenTTD by  doxygen 1.5.6