Functions for dealing with station classes and custom stations. More...
#include "stdafx.h"
#include "debug.h"
#include "station_base.h"
#include "waypoint_base.h"
#include "roadstop_base.h"
#include "newgrf_cargo.h"
#include "newgrf_station.h"
#include "newgrf_spritegroup.h"
#include "newgrf_sound.h"
#include "newgrf_railtype.h"
#include "town.h"
#include "newgrf_town.h"
#include "company_func.h"
#include "tunnelbridge_map.h"
#include "newgrf.h"
#include "newgrf_animation_base.h"
#include "newgrf_class_func.h"
Go to the source code of this file.
Data Structures | |
struct | ETileArea |
struct | StationAnimationBase |
Helper class for animation control. More... | |
Enumerations | |
enum | TriggerArea { TA_TILE, TA_PLATFORM, TA_WHOLE } |
Functions | |
uint32 | GetPlatformInfo (Axis axis, byte tile, int platforms, int length, int x, int y, bool centred) |
Evaluate a tile's position within a station, and return the result in a bit-stuffed format. | |
static TileIndex | FindRailStationEnd (TileIndex tile, TileIndexDiff delta, bool check_type, bool check_axis) |
Find the end of a railway station, from the tile, in the direction of delta. | |
static uint32 | GetPlatformInfoHelper (TileIndex tile, bool check_type, bool check_axis, bool centred) |
static uint32 | GetRailContinuationInfo (TileIndex tile) |
static uint32 | StationGetRandomBits (const ResolverObject *object) |
static uint32 | StationGetTriggers (const ResolverObject *object) |
static void | StationSetTriggers (const ResolverObject *object, int triggers) |
static uint32 | StationGetVariable (const ResolverObject *object, byte variable, byte parameter, bool *available) |
static const SpriteGroup * | StationResolveReal (const ResolverObject *object, const RealSpriteGroup *group) |
static void | NewStationResolver (ResolverObject *res, const StationSpec *statspec, const BaseStation *st, TileIndex tile) |
static const SpriteGroup * | ResolveStation (ResolverObject *object) |
SpriteID | GetCustomStationRelocation (const StationSpec *statspec, const BaseStation *st, TileIndex tile) |
SpriteID | GetCustomStationGroundRelocation (const StationSpec *statspec, const BaseStation *st, TileIndex tile) |
SpriteID | GetCustomStationFoundationRelocation (const StationSpec *statspec, const BaseStation *st, TileIndex tile) |
uint16 | GetStationCallback (CallbackID callback, uint32 param1, uint32 param2, const StationSpec *statspec, const BaseStation *st, TileIndex tile) |
int | AllocateSpecToStation (const StationSpec *statspec, BaseStation *st, bool exec) |
Allocate a StationSpec to a Station. | |
void | DeallocateSpecFromStation (BaseStation *st, byte specindex) |
Deallocate a StationSpec from a Station. | |
bool | DrawStationTile (int x, int y, RailType railtype, Axis axis, StationClassID sclass, uint station) |
Draw representation of a station tile for GUI purposes. | |
const StationSpec * | GetStationSpec (TileIndex t) |
bool | IsStationTileBlocked (TileIndex tile) |
Check whether a rail station tile is NOT traversable. | |
bool | IsStationTileElectrifiable (TileIndex tile) |
Check if a rail station tile can be electrified. | |
void | AnimateStationTile (TileIndex tile) |
void | TriggerStationAnimation (const BaseStation *st, TileIndex tile, StationAnimationTrigger trigger, CargoID cargo_type) |
void | StationUpdateAnimTriggers (BaseStation *st) |
Update the cached animation trigger bitmask for a station. | |
void | GetStationResolver (ResolverObject *ro, uint index) |
Resolve a station's spec and such so we can get a variable. | |
Variables | |
static const uint | MAX_SPECLIST = 255 |
struct { | |
uint32 v40 | |
uint32 v41 | |
uint32 v45 | |
uint32 v46 | |
uint32 v47 | |
uint32 v49 | |
uint8 valid | |
Bits indicating what variable is valid (for each bit, 0 is invalid, 1 is valid). | |
} | _svc |
Station variable cache This caches 'expensive' station variable lookups which iterate over several tiles that may be called multiple times per Resolve(). |
Functions for dealing with station classes and custom stations.
Definition in file newgrf_station.cpp.
int AllocateSpecToStation | ( | const StationSpec * | statspec, | |
BaseStation * | st, | |||
bool | exec | |||
) |
Allocate a StationSpec to a Station.
This is called once per build operation.
statspec | StationSpec to allocate. | |
st | Station to allocate it to. | |
exec | Whether to actually allocate the spec. |
Definition at line 649 of file newgrf_station.cpp.
References StationSpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, StationSpecList::grfid, GRFFilePropsBase< Tcnt >::local_id, StationSpecList::localidx, BaseStation::num_specs, ReallocT(), and BaseStation::speclist.
Referenced by CmdBuildRailStation(), CmdBuildRailWaypoint(), and MoveWaypointsToBaseStations().
void DeallocateSpecFromStation | ( | BaseStation * | st, | |
byte | specindex | |||
) |
Deallocate a StationSpec from a Station.
Called when removing a single station tile.
st | Station to work with. | |
specindex | Index of the custom station within the Station's spec list. |
Definition at line 700 of file newgrf_station.cpp.
References BaseStation::cached_anim_triggers, GetCustomStationSpecIndex(), StationSpecList::grfid, INVALID_TILE, StationSpecList::localidx, BaseStation::num_specs, ReallocT(), BaseStation::speclist, StationUpdateAnimTriggers(), TILE_AREA_LOOP, and BaseStation::TileBelongsToRailStation().
Referenced by CmdBuildRailStation(), CmdBuildRailWaypoint(), and RemoveFromRailBaseStation().
bool DrawStationTile | ( | int | x, | |
int | y, | |||
RailType | railtype, | |||
Axis | axis, | |||
StationClassID | sclass, | |||
uint | station | |||
) |
Draw representation of a station tile for GUI purposes.
x | Position x of image. | |
y | Position y of image. | |
axis | Axis. | |
railtype | Rail type. | |
sclass,station | Type of station. | |
station | station ID |
Definition at line 746 of file newgrf_station.cpp.
References _local_company, CALLBACK_FAILED, StationSpec::callback_mask, CBID_STATION_SPRITE_LAYOUT, CBM_STATION_SPRITE_LAYOUT, RailtypeInfo::custom_ground_offset, DrawRailTileSeqInGUI(), DrawSprite(), GetRailTypeInfo(), DrawTileSprites::ground, GroundSpritePaletteTransform(), HasBit(), INVALID_TILE, PalSpriteID::pal, StationSpec::renderdata, PalSpriteID::sprite, SPRITE_MODIFIER_CUSTOM_SPRITE, StationSpec::tiles, and RailtypeInfo::total_offset.
Referenced by DrawWaypointSprite(), and BuildRailStationWindow::DrawWidget().
static TileIndex FindRailStationEnd | ( | TileIndex | tile, | |
TileIndexDiff | delta, | |||
bool | check_type, | |||
bool | check_axis | |||
) | [static] |
Find the end of a railway station, from the tile, in the direction of delta.
tile | Start tile. | |
delta | Movement direction. | |
check_type | Stop when the custom station type changes. | |
check_axis | Stop when the station direction changes. |
Definition at line 145 of file newgrf_station.cpp.
References AXIS_X, GetCustomStationSpecIndex(), GetRailStationAxis(), GetStationIndex(), HasStationRail(), IsTileType(), MP_STATION, and TILE_ADD.
uint32 GetPlatformInfo | ( | Axis | axis, | |
byte | tile, | |||
int | platforms, | |||
int | length, | |||
int | x, | |||
int | y, | |||
bool | centred | |||
) |
Evaluate a tile's position within a station, and return the result in a bit-stuffed format.
if not centered: .TNLcCpP, if centered: .TNL..CP
if centered, C/P start from the centre and c/p are not available.
Definition at line 104 of file newgrf_station.cpp.
References AXIS_X, min(), SB(), and Swap().
Referenced by CmdBuildRailStation().
void GetStationResolver | ( | ResolverObject * | ro, | |
uint | index | |||
) |
Resolve a station's spec and such so we can get a variable.
ro | The resolver object to fill. | |
index | The station to get the data from. |
Definition at line 897 of file newgrf_station.cpp.
References SpecializedStation< Station, false >::GetByTile().
Referenced by NIHStation::Resolve().
bool IsStationTileBlocked | ( | TileIndex | tile | ) |
Check whether a rail station tile is NOT traversable.
tile | Tile to test. |
Definition at line 803 of file newgrf_station.cpp.
References StationSpec::blocked, GetStationGfx(), and HasBit().
Referenced by ExploreSegment(), IsCompatibleTrainStationTile(), AIRail::IsRailTile(), and RemoveFromRailBaseStation().
bool IsStationTileElectrifiable | ( | TileIndex | tile | ) |
Check if a rail station tile can be electrified.
tile | Tile to test. |
Definition at line 816 of file newgrf_station.cpp.
References GetStationGfx(), HasBit(), StationSpec::pylons, and StationSpec::wires.
Referenced by GetRailTrackBitsUniversal().
void StationUpdateAnimTriggers | ( | BaseStation * | st | ) |
Update the cached animation trigger bitmask for a station.
st | Station to update. |
Definition at line 880 of file newgrf_station.cpp.
References BaseStation::cached_anim_triggers, BaseStation::num_specs, BaseStation::speclist, and AnimationInfo::triggers.
Referenced by DeallocateSpecFromStation().