src/newgrf_station.h
author rubidium
Thu, 18 Dec 2008 12:23:08 +0000
changeset 10436 8d3a9fbe8f19
parent 9714 5d785e184f2d
permissions -rw-r--r--
(svn r14689) -Change: make configure die on commonly made user mistakes, like not having SDL development files or zlib headers installed; you can still compile a dedicated server or a binary without zlib, but you have to explicitly force it.
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
     1
/* $Id$ */
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
     2
2963
f28ce0549513 (svn r3525) - Rename station_newgrf.[ch] to newgrf_station.[ch], and update project files.
peter1138
parents: 2625
diff changeset
     3
/** @file newgrf_station.h Header file for NewGRF stations */
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
     4
2963
f28ce0549513 (svn r3525) - Rename station_newgrf.[ch] to newgrf_station.[ch], and update project files.
peter1138
parents: 2625
diff changeset
     5
#ifndef NEWGRF_STATION_H
f28ce0549513 (svn r3525) - Rename station_newgrf.[ch] to newgrf_station.[ch], and update project files.
peter1138
parents: 2625
diff changeset
     6
#define NEWGRF_STATION_H
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
     7
8786
1823ff88a054 (svn r12490) -Codechange: rename engine.h to engine_func.h and remove unneeded inclusions of engine.h and/or replace them with engine_type.h.
rubidium
parents: 8785
diff changeset
     8
#include "engine_type.h"
7327
d810677fb909 (svn r10690) -Codechange: use the enum that describes all callback IDs in favor of "just" using an untyped integer.
rubidium
parents: 6451
diff changeset
     9
#include "newgrf_callbacks.h"
3866
b13553406a0a (svn r4902) Newgrf : Introduction of the newgrf_cargo files.
belugas
parents: 3865
diff changeset
    10
#include "newgrf_cargo.h"
8237
6f925c9cf836 (svn r11801) -Codechange: remove some unneeded includes from some header files.
rubidium
parents: 8130
diff changeset
    11
#include "tile_type.h"
8785
871586967963 (svn r12489) -Codechange: split station.h into station_base.h and station_func.h.
rubidium
parents: 8295
diff changeset
    12
#include "station_type.h"
8264
b1e85998c7d3 (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8237
diff changeset
    13
#include "strings_type.h"
8785
871586967963 (svn r12489) -Codechange: split station.h into station_base.h and station_func.h.
rubidium
parents: 8295
diff changeset
    14
#include "sprite.h"
871586967963 (svn r12489) -Codechange: split station.h into station_base.h and station_func.h.
rubidium
parents: 8295
diff changeset
    15
#include "direction_type.h"
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    16
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    17
enum StationClassID {
5587
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5475
diff changeset
    18
	STAT_CLASS_BEGIN = 0,    ///< the lowest valid value
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5475
diff changeset
    19
	STAT_CLASS_DFLT = 0,     ///< Default station class.
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5475
diff changeset
    20
	STAT_CLASS_WAYP,         ///< Waypoint class.
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5475
diff changeset
    21
	STAT_CLASS_MAX = 32,     ///< Maximum number of classes.
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    22
};
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    23
5587
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5475
diff changeset
    24
/** Define basic enum properties */
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5475
diff changeset
    25
template <> struct EnumPropsT<StationClassID> : MakeEnumPropsT<StationClassID, byte, STAT_CLASS_BEGIN, STAT_CLASS_MAX, STAT_CLASS_MAX> {};
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5475
diff changeset
    26
typedef TinyEnumT<StationClassID> StationClassIDByte;
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5475
diff changeset
    27
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5475
diff changeset
    28
/** Allow incrementing of StationClassID variables */
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5475
diff changeset
    29
DECLARE_POSTFIX_INCREMENT(StationClassID);
167d9a91ef02 (svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
rubidium
parents: 5475
diff changeset
    30
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    31
/* Station layout for given dimensions - it is a two-dimensional array
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    32
 * where index is computed as (x * platforms) + platform. */
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    33
typedef byte *StationLayout;
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    34
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    35
struct StationSpec {
6451
e576c71bfc09 (svn r9601) -Codechange: Store grf file reference in station spec, not just GRF ID
peter1138
parents: 6248
diff changeset
    36
	const struct GRFFile *grffile; ///< ID of GRF file station belongs to.
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    37
	int localidx; ///< Index within GRF file of station.
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    38
3780
4c785f28b1dd (svn r4772) - Newstations: when allocating a custom station (via action 0x03) check if the station has already been allocated. (Fixes duplicate waypoints in newstatsw in non-temperate climate)
peter1138
parents: 3775
diff changeset
    39
	bool allocated; ///< Flag whether this station has been added to a station class list
4c785f28b1dd (svn r4772) - Newstations: when allocating a custom station (via action 0x03) check if the station has already been allocated. (Fixes duplicate waypoints in newstatsw in non-temperate climate)
peter1138
parents: 3775
diff changeset
    40
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    41
	StationClassID sclass; ///< The class to which this spec belongs.
3594
3c4e4feea80a (svn r4484) - Newstations: Use StringIDs instead of char*s to reference our custom names.
peter1138
parents: 3587
diff changeset
    42
	StringID name; ///< Name of this station.
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    43
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    44
	/**
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    45
	 * Bitmask of number of platforms available for the station.
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    46
	 * 0..6 correpsond to 1..7, while bit 7 corresponds to >7 platforms.
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    47
	 */
3505
091f0285df7d (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 2967
diff changeset
    48
	byte disallowed_platforms;
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    49
	/**
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    50
	 * Bitmask of platform lengths available for the station.
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    51
	 * 0..6 correpsond to 1..7, while bit 7 corresponds to >7 tiles long.
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    52
	 */
3505
091f0285df7d (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 2967
diff changeset
    53
	byte disallowed_lengths;
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    54
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    55
	/** Number of tile layouts.
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    56
	 * A minimum of 8 is required is required for stations.
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    57
	 * 0-1 = plain platform
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    58
	 * 2-3 = platform with building
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    59
	 * 4-5 = platform with roof, left side
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    60
	 * 6-7 = platform with roof, right side
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    61
	 */
3570
707f93772b0a (svn r4452) - NewGRF: switch to unsigned ints for array indices.
peter1138
parents: 3505
diff changeset
    62
	uint tiles;
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    63
	DrawTileSprites *renderdata; ///< Array of tile layouts.
3740
4742b3d6f37b (svn r4722) - Newstations: release station sprite layout data when uninitializing NewGRF data.
peter1138
parents: 3688
diff changeset
    64
	bool copied_renderdata;
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    65
3505
091f0285df7d (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 2967
diff changeset
    66
	/** Cargo threshold for choosing between little and lots of cargo
091f0285df7d (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 2967
diff changeset
    67
	 * @note little/lots are equivalent to the moving/loading states for vehicles
091f0285df7d (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 2967
diff changeset
    68
	 */
091f0285df7d (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 2967
diff changeset
    69
	uint16 cargo_threshold;
091f0285df7d (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 2967
diff changeset
    70
091f0285df7d (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 2967
diff changeset
    71
	uint32 cargo_triggers; ///< Bitmask of cargo types which cause trigger re-randomizing
091f0285df7d (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 2967
diff changeset
    72
091f0285df7d (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 2967
diff changeset
    73
	byte callbackmask; ///< Bitmask of callbacks to use, @see newgrf_callbacks.h
091f0285df7d (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 2967
diff changeset
    74
091f0285df7d (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 2967
diff changeset
    75
	byte flags; ///< Bitmask of flags, bit 0: use different sprite set; bit 1: divide cargo about by station size
091f0285df7d (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 2967
diff changeset
    76
091f0285df7d (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 2967
diff changeset
    77
	byte pylons;  ///< Bitmask of base tiles (0 - 7) which should contain elrail pylons
091f0285df7d (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 2967
diff changeset
    78
	byte wires;   ///< Bitmask of base tiles (0 - 7) which should contain elrail wires
091f0285df7d (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 2967
diff changeset
    79
	byte blocked; ///< Bitmask of base tiles (0 - 7) which are blocked to trains
091f0285df7d (svn r4356) - NewGRF: Load more newstation properties.
peter1138
parents: 2967
diff changeset
    80
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    81
	byte lengths;
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    82
	byte *platforms;
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    83
	StationLayout **layouts;
5060
e942a3137724 (svn r7113) -Codechange: [NewStations] Add support for copying custom station layouts
peter1138
parents: 4893
diff changeset
    84
	bool copied_layouts;
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    85
9003
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
    86
	uint8  anim_frames;
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
    87
	uint8  anim_status;
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
    88
	uint8  anim_speed;
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
    89
	uint16 anim_triggers;
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
    90
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    91
	/**
6148
5247b66aad19 (svn r8891) -Codechange: Remove remains of global cargo scheme. All cargo mapping is now dealt with only in NewGRF code, on load where possible.
peter1138
parents: 5587
diff changeset
    92
	 * NUM_CARGO real cargo plus three pseudo cargo sprite groups.
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    93
	 * Used for obtaining the sprite offset of custom sprites, and for
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    94
	 * evaluating callbacks.
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    95
	 */
6148
5247b66aad19 (svn r8891) -Codechange: Remove remains of global cargo scheme. All cargo mapping is now dealt with only in NewGRF code, on load where possible.
peter1138
parents: 5587
diff changeset
    96
	const struct SpriteGroup *spritegroup[NUM_CARGO + 3];
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
    97
};
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    98
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
    99
/**
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
   100
 * Struct containing information relating to station classes.
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
   101
 */
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   102
struct StationClass {
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
   103
	uint32 id;          ///< ID of this class, e.g. 'DFLT', 'WAYP', etc.
3594
3c4e4feea80a (svn r4484) - Newstations: Use StringIDs instead of char*s to reference our custom names.
peter1138
parents: 3587
diff changeset
   104
	StringID name;      ///< Name of this class.
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
   105
	uint stations;      ///< Number of stations in this class.
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
   106
	StationSpec **spec; ///< Array of station specifications.
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   107
};
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
   108
6247
7d81e3a5d803 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6148
diff changeset
   109
void ResetStationClasses();
3900
2c84ed52709d (svn r4987) Feature: Merged YAPF into trunk. Thanks to devs for continuous support and users for testing.
KUDr
parents: 3866
diff changeset
   110
StationClassID AllocateStationClass(uint32 cls);
3642
8da309b5fd2b (svn r4551) - NewGRF: add string handling for newstations.
peter1138
parents: 3594
diff changeset
   111
void SetStationClassName(StationClassID sclass, StringID name);
8da309b5fd2b (svn r4551) - NewGRF: add string handling for newstations.
peter1138
parents: 3594
diff changeset
   112
StringID GetStationClassName(StationClassID sclass);
9714
5d785e184f2d (svn r13830) -Feature: show additional NewGRF info in the Tile Info window for stations, houses and industries
smatz
parents: 9003
diff changeset
   113
const StationSpec *GetStationSpec(TileIndex t);
3642
8da309b5fd2b (svn r4551) - NewGRF: add string handling for newstations.
peter1138
parents: 3594
diff changeset
   114
6247
7d81e3a5d803 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 6148
diff changeset
   115
uint GetNumStationClasses();
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
   116
uint GetNumCustomStations(StationClassID sclass);
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
   117
3676
680dfa6336a1 (svn r4593) CodeChange : Renamed spec (when using StationSpec) to statspec.
belugas
parents: 3642
diff changeset
   118
void SetCustomStationSpec(StationSpec *statspec);
680dfa6336a1 (svn r4593) CodeChange : Renamed spec (when using StationSpec) to statspec.
belugas
parents: 3642
diff changeset
   119
const StationSpec *GetCustomStationSpec(StationClassID sclass, uint station);
3765
a4ddbff73f9f (svn r4757) - Newstations: add saveload support for custom station speclists
peter1138
parents: 3764
diff changeset
   120
const StationSpec *GetCustomStationSpecByGrf(uint32 grfid, byte localidx);
2625
19bf7f695537 (svn r3167) - NewGRF: Start moving custom station code to separate files.
peter1138
parents:
diff changeset
   121
3769
7d3b35126fc1 (svn r4761) - Newstations: support platform information in variable 10 (callback parameter 1) when building a station
peter1138
parents: 3767
diff changeset
   122
/* Evaluate a tile's position within a station, and return the result a bitstuffed format. */
7d3b35126fc1 (svn r4761) - Newstations: support platform information in variable 10 (callback parameter 1) when building a station
peter1138
parents: 3767
diff changeset
   123
uint32 GetPlatformInfo(Axis axis, byte tile, int platforms, int length, int x, int y, bool centred);
7d3b35126fc1 (svn r4761) - Newstations: support platform information in variable 10 (callback parameter 1) when building a station
peter1138
parents: 3767
diff changeset
   124
2967
77b04531d7a0 (svn r3530) - NewGRF: Move station resolver to newgrf_station
peter1138
parents: 2963
diff changeset
   125
/* Get sprite offset for a given custom station and station structure (may be
3751
ce6408fdb788 (svn r4739) - Newstations: remove cargo type parameter of GetCustomStationRelocation() as we can determine it internally
peter1138
parents: 3743
diff changeset
   126
 * NULL - that means we are in a build dialog). The station structure is used
ce6408fdb788 (svn r4739) - Newstations: remove cargo type parameter of GetCustomStationRelocation() as we can determine it internally
peter1138
parents: 3743
diff changeset
   127
 * for variational sprite groups. */
ce6408fdb788 (svn r4739) - Newstations: remove cargo type parameter of GetCustomStationRelocation() as we can determine it internally
peter1138
parents: 3743
diff changeset
   128
SpriteID GetCustomStationRelocation(const StationSpec *statspec, const Station *st, TileIndex tile);
3775
0fb5118536c3 (svn r4767) - Newstations: fix loading / use of custom ground sprites
peter1138
parents: 3769
diff changeset
   129
SpriteID GetCustomStationGroundRelocation(const StationSpec *statspec, const Station *st, TileIndex tile);
7327
d810677fb909 (svn r10690) -Codechange: use the enum that describes all callback IDs in favor of "just" using an untyped integer.
rubidium
parents: 6451
diff changeset
   130
uint16 GetStationCallback(CallbackID callback, uint32 param1, uint32 param2, const StationSpec *statspec, const Station *st, TileIndex tile);
2967
77b04531d7a0 (svn r3530) - NewGRF: Move station resolver to newgrf_station
peter1138
parents: 2963
diff changeset
   131
3587
c434d5c3dcaa (svn r4473) - Newstations:
peter1138
parents: 3570
diff changeset
   132
/* Allocate a StationSpec to a Station. This is called once per build operation. */
3676
680dfa6336a1 (svn r4593) CodeChange : Renamed spec (when using StationSpec) to statspec.
belugas
parents: 3642
diff changeset
   133
int AllocateSpecToStation(const StationSpec *statspec, Station *st, bool exec);
3587
c434d5c3dcaa (svn r4473) - Newstations:
peter1138
parents: 3570
diff changeset
   134
c434d5c3dcaa (svn r4473) - Newstations:
peter1138
parents: 3570
diff changeset
   135
/* Deallocate a StationSpec from a Station. Called when removing a single station tile. */
4190
2acef650361f (svn r5632) Replace a boolean variable in DeallocateSpecFromStation() by a return
tron
parents: 3900
diff changeset
   136
void DeallocateSpecFromStation(Station* st, byte specindex);
3587
c434d5c3dcaa (svn r4473) - Newstations:
peter1138
parents: 3570
diff changeset
   137
3764
f017ce73e96b (svn r4755) - Newstations: add a gui station tile drawing routine and use it in place of the existing one for waypoints.
peter1138
parents: 3752
diff changeset
   138
/* Draw representation of a station tile for GUI purposes. */
f017ce73e96b (svn r4755) - Newstations: add a gui station tile drawing routine and use it in place of the existing one for waypoints.
peter1138
parents: 3752
diff changeset
   139
bool DrawStationTile(int x, int y, RailType railtype, Axis axis, StationClassID sclass, uint station);
f017ce73e96b (svn r4755) - Newstations: add a gui station tile drawing routine and use it in place of the existing one for waypoints.
peter1138
parents: 3752
diff changeset
   140
9003
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
   141
enum StatAnimTrigger {
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
   142
	STAT_ANIM_BUILT,
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
   143
	STAT_ANIM_NEW_CARGO,
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
   144
	STAT_ANIM_CARGO_TAKEN,
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
   145
	STAT_ANIM_TRAIN_ARRIVES,
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
   146
	STAT_ANIM_TRAIN_DEPARTS,
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
   147
	STAT_ANIM_TRAIN_LOADS,
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
   148
	STAT_ANIM_250_TICKS,
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
   149
};
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
   150
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
   151
void AnimateStationTile(TileIndex tile);
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
   152
void StationAnimationTrigger(const Station *st, TileIndex tile, StatAnimTrigger trigger, CargoID cargo_type = CT_INVALID);
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
   153
void StationUpdateAnimTriggers(Station *st);
7972fa66d9c9 (svn r12798) -Feature: Add some support for NewGRF station animation. (Thanks to mart3p for samples and fixes)
peter1138
parents: 8787
diff changeset
   154
2963
f28ce0549513 (svn r3525) - Rename station_newgrf.[ch] to newgrf_station.[ch], and update project files.
peter1138
parents: 2625
diff changeset
   155
#endif /* NEWGRF_STATION_H */