diff options
author | peter1138 <peter1138@openttd.org> | 2006-02-03 15:51:00 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2006-02-03 15:51:00 +0000 |
commit | ea4c5bbd2d3e5c964a95f76cdb53777ca7aaa376 (patch) | |
tree | 1c81fe17f8ecd4773aad3c0a614d8f1759350873 /newgrf_station.h | |
parent | b88904f345cf14a3e02313b50d81148ee9bdf6d8 (diff) | |
download | openttd-ea4c5bbd2d3e5c964a95f76cdb53777ca7aaa376.tar.xz |
(svn r3525) - Rename station_newgrf.[ch] to newgrf_station.[ch], and update project files.
Diffstat (limited to 'newgrf_station.h')
-rw-r--r-- | newgrf_station.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/newgrf_station.h b/newgrf_station.h new file mode 100644 index 000000000..60033de77 --- /dev/null +++ b/newgrf_station.h @@ -0,0 +1,77 @@ +/* $Id$ */ + +/** @file newgrf_station.h Header file for NewGRF stations */ + +#ifndef NEWGRF_STATION_H +#define NEWGRF_STATION_H + +#include "engine.h" + +typedef enum { + STAT_CLASS_DFLT, ///< Default station class. + STAT_CLASS_WAYP, ///< Waypoint class. + STAT_CLASS_MAX = 16, ///< Maximum number of classes. +} StationClassID; + +/* Station layout for given dimensions - it is a two-dimensional array + * where index is computed as (x * platforms) + platform. */ +typedef byte *StationLayout; + +typedef struct stationspec { + uint32 grfid; ///< ID of GRF file station belongs to. + int localidx; ///< Index within GRF file of station. + + StationClassID sclass; ///< The class to which this spec belongs. + + /** + * Bitmask of number of platforms available for the station. + * 0..6 correpsond to 1..7, while bit 7 corresponds to >7 platforms. + */ + byte allowed_platforms; + /** + * Bitmask of platform lengths available for the station. + * 0..6 correpsond to 1..7, while bit 7 corresponds to >7 tiles long. + */ + byte allowed_lengths; + + /** Number of tile layouts. + * A minimum of 8 is required is required for stations. + * 0-1 = plain platform + * 2-3 = platform with building + * 4-5 = platform with roof, left side + * 6-7 = platform with roof, right side + */ + int tiles; + DrawTileSprites *renderdata; ///< Array of tile layouts. + + byte lengths; + byte *platforms; + StationLayout **layouts; + + /** + * NUM_GLOBAL_CID sprite groups. + * Used for obtaining the sprite offset of custom sprites, and for + * evaluating callbacks. + */ + SpriteGroup *spritegroup[NUM_GLOBAL_CID]; +} StationSpec; + +/** + * Struct containing information relating to station classes. + */ +typedef struct stationclass { + uint32 id; ///< ID of this class, e.g. 'DFLT', 'WAYP', etc. + char *name; ///< Name of this class. + uint stations; ///< Number of stations in this class. + StationSpec **spec; ///< Array of station specifications. +} StationClass; + +void ResetStationClasses(void); +StationClassID AllocateStationClass(uint32 class); +void SetStationClassName(StationClassID sclass, const char *name); +uint GetNumCustomStations(StationClassID sclass); + +void SetCustomStation(StationSpec *spec); +const StationSpec *GetCustomStation(StationClassID sclass, uint station); + +#endif /* NEWGRF_STATION_H */ |