elrail_data.h

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

Generated on Thu Apr 14 00:48:21 2011 for OpenTTD by  doxygen 1.6.1