00001
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},
00054 {DIAGDIR_SE, DIAGDIR_NW},
00055 {DIAGDIR_NW, DIAGDIR_NE},
00056 {DIAGDIR_SE, DIAGDIR_SW},
00057 {DIAGDIR_SW, DIAGDIR_NW},
00058 {DIAGDIR_NE, DIAGDIR_SE},
00059 };
00060
00061 #define PCP_NOT_ON_TRACK 0xFF
00062
00066 static byte PreferredPPPofTrackAtPCP[TRACK_END][DIAGDIR_END] = {
00067 {
00068 1 << DIR_NE | 1 << DIR_SE | 1 << DIR_NW,
00069 PCP_NOT_ON_TRACK,
00070 1 << DIR_SE | 1 << DIR_SW | 1 << DIR_NW,
00071 PCP_NOT_ON_TRACK
00072 }, {
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 }, {
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 }, {
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 }, {
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 }, {
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 {
00109 {
00110 IGNORE_NONE,
00111 1 << DIR_NE | 1 << DIR_SW,
00112 1 << DIR_NW | 1 << DIR_SE,
00113 IGNORE_NONE
00114 }, {
00115 IGNORE_NONE,
00116 IGNORE_NONE,
00117 1 << DIR_NW | 1 << DIR_SE,
00118 1 << DIR_NE | 1 << DIR_SW
00119 }, {
00120 1 << DIR_NW | 1 << DIR_SE,
00121 1 << DIR_NE | 1 << DIR_SW,
00122 IGNORE_NONE,
00123 IGNORE_NONE
00124 }, {
00125 1 << DIR_NW | 1 << DIR_SE,
00126 IGNORE_NONE,
00127 IGNORE_NONE,
00128 1 << DIR_NE | 1 << DIR_SW
00129 }
00130 },
00131 {
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 {
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 },
00184 {0, 1 << DIR_NW | 1 << DIR_SE, 0, 1 << DIR_NW | 1 << DIR_SE},
00185 {1 << DIR_W | 1 << DIR_E, 0, 0, 1 << DIR_W | 1 << DIR_E },
00186 {0, 1 << DIR_W | 1 << DIR_E, 1 << DIR_W | 1 << DIR_E, 0 },
00187 {0, 0, 1 << DIR_S | 1 << DIR_N, 1 << DIR_N | 1 << DIR_S },
00188 {1 << DIR_S | 1 << DIR_N, 1 << DIR_S | 1 << DIR_N, 0, 0, },
00189 };
00190
00191
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
00200
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
00209 static const Direction PPPorder[DIAGDIR_END][TLG_END][DIR_END] = {
00210 {
00211 {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_N, DIR_E, DIR_S, DIR_W},
00212 {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_S, DIR_W, DIR_N, DIR_E},
00213 {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_S, DIR_W, DIR_N, DIR_E},
00214 {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_N, DIR_E, DIR_S, DIR_W},
00215 }, {
00216 {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_S, DIR_E, DIR_N, DIR_W},
00217 {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_N, DIR_W, DIR_S, DIR_E},
00218 {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_N, DIR_W, DIR_S, DIR_E},
00219 {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_S, DIR_E, DIR_N, DIR_W},
00220 }, {
00221 {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_S, DIR_W, DIR_N, DIR_E},
00222 {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_N, DIR_E, DIR_S, DIR_W},
00223 {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_N, DIR_E, DIR_S, DIR_W},
00224 {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_S, DIR_W, DIR_N, DIR_E},
00225 }, {
00226 {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_N, DIR_W, DIR_S, DIR_E},
00227 {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_S, DIR_E, DIR_N, DIR_W},
00228 {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_S, DIR_E, DIR_N, DIR_W},
00229 {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_N, DIR_W, DIR_S, DIR_E},
00230 }
00231 };
00232
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
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
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
00321
00322
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
00328
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
00334
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
00341
00342
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
00348
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
00354
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
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
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
00453
00454
00455
00456
00457
00458 static const CatenarySprite Wires[5][TRACK_END][4] = {
00459 {
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 }, {
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 }, {
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 }, {
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 }, {
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