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_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, uint32 parameter, bool *available) |
| static const SpriteGroup * | StationResolveReal (const ResolverObject *object, const RealSpriteGroup *group) |
| void | StationStorePSA (ResolverObject *object, uint pos, int32 value) |
| Store a value into the persistent storage of the object's parent. | |
| static void | NewStationResolver (ResolverObject *res, const StationSpec *statspec, BaseStation *st, TileIndex tile) |
| static const SpriteGroup * | ResolveStation (ResolverObject *object) |
| SpriteID | GetCustomStationRelocation (const StationSpec *statspec, BaseStation *st, TileIndex tile, uint32 var10) |
| Resolve sprites for drawing a station tile. | |
| SpriteID | GetCustomStationFoundationRelocation (const StationSpec *statspec, BaseStation *st, TileIndex tile, uint layout, uint edge_info) |
| Resolve the sprites for custom station foundations. | |
| uint16 | GetStationCallback (CallbackID callback, uint32 param1, uint32 param2, const StationSpec *statspec, BaseStation *st, TileIndex tile) |
| CommandCost | PerformStationTileSlopeCheck (TileIndex north_tile, TileIndex cur_tile, const StationSpec *statspec, Axis axis, byte plat_len, byte numtracks) |
| Check the slope of a tile of a new station. | |
| 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 | CanStationTileHavePylons (TileIndex tile) |
| Check if a rail station tile shall have pylons when electrified. | |
| bool | CanStationTileHaveWires (TileIndex tile) |
| Check if a rail station tile shall have wires when electrified. | |
| uint16 | GetAnimStationCallback (CallbackID callback, uint32 param1, uint32 param2, const StationSpec *statspec, BaseStation *st, TileIndex tile, int extra_data) |
| Wrapper for animation control, see GetStationCallback. | |
| void | AnimateStationTile (TileIndex tile) |
| void | TriggerStationAnimation (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 709 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().
| bool CanStationTileHavePylons | ( | TileIndex | tile | ) |
Check if a rail station tile shall have pylons when electrified.
| tile | Tile to test. |
Definition at line 902 of file newgrf_station.cpp.
References GetStationGfx(), HasBit(), and StationSpec::pylons.
Referenced by DrawCatenaryRailway().
| bool CanStationTileHaveWires | ( | TileIndex | tile | ) |
Check if a rail station tile shall have wires when electrified.
| tile | Tile to test. |
Definition at line 916 of file newgrf_station.cpp.
References GetStationGfx(), HasBit(), and StationSpec::wires.
Referenced by DrawCatenaryRailway().
| 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 760 of file newgrf_station.cpp.
References BaseStation::cached_anim_triggers, free(), 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 806 of file newgrf_station.cpp.
References _local_company, CALLBACK_FAILED, StationSpec::callback_mask, CBID_STATION_SPRITE_LAYOUT, CBM_STATION_SPRITE_LAYOUT, DrawRailTileSeqInGUI(), DrawSprite(), RailtypeInfo::fallback_railtype, StationSpec::flags, FOR_EACH_SET_BIT, GetCustomStationRelocation(), NewGRFSpriteLayout::GetLayout(), GetRailTypeInfo(), RailtypeInfo::GetRailtypeSpriteOffset(), DrawTileSprites::ground, GroundSpritePaletteTransform(), HasBit(), INVALID_TILE, NewGRFSpriteLayout::NeedsPreprocessing(), PalSpriteID::pal, NewGRFSpriteLayout::PrepareLayout(), NewGRFSpriteLayout::ProcessRegisters(), StationSpec::renderdata, DrawTileSprites::seq, PalSpriteID::sprite, SPRITE_MODIFIER_CUSTOM_SPRITE, SSF_SEPARATE_GROUND, and StationSpec::tiles.
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 141 of file newgrf_station.cpp.
References GetCustomStationSpecIndex(), GetRailStationAxis(), GetStationIndex(), HasStationRail(), IsTileType(), MP_STATION, and TILE_ADD.
| uint16 GetAnimStationCallback | ( | CallbackID | callback, | |
| uint32 | param1, | |||
| uint32 | param2, | |||
| const StationSpec * | statspec, | |||
| BaseStation * | st, | |||
| TileIndex | tile, | |||
| int | extra_data | |||
| ) |
Wrapper for animation control, see GetStationCallback.
Definition at line 923 of file newgrf_station.cpp.
| SpriteID GetCustomStationFoundationRelocation | ( | const StationSpec * | statspec, | |
| BaseStation * | st, | |||
| TileIndex | tile, | |||
| uint | layout, | |||
| uint | edge_info | |||
| ) |
Resolve the sprites for custom station foundations.
| statspec | Station spec | |
| st | Station | |
| tile | Station tile being drawn | |
| layout | Spritelayout as returned by previous callback | |
| edge_info | Information about northern tile edges; whether they need foundations or merge into adjacent tile's foundations. |
Definition at line 635 of file newgrf_station.cpp.
References ClearRegister(), and GetRegister().
| SpriteID GetCustomStationRelocation | ( | const StationSpec * | statspec, | |
| BaseStation * | st, | |||
| TileIndex | tile, | |||
| uint32 | var10 | |||
| ) |
Resolve sprites for drawing a station tile.
| statspec | Station spec | |
| st | Station (NULL in GUI) | |
| tile | Station tile being drawn (INVALID_TILE in GUI) | |
| var10 | Value to put in variable 10; normally 0; 1 when resolving the groundsprite and SSF_SEPARATE_GROUND is set. |
Definition at line 613 of file newgrf_station.cpp.
Referenced by DrawStationTile().
| 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 103 of file newgrf_station.cpp.
References AXIS_X, Clamp(), 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 1000 of file newgrf_station.cpp.
References SpecializedStation< Station, false >::GetByTile().
| bool IsStationTileBlocked | ( | TileIndex | tile | ) |
Check whether a rail station tile is NOT traversable.
| tile | Tile to test. |
Definition at line 889 of file newgrf_station.cpp.
References StationSpec::blocked, GetStationGfx(), and HasBit().
Referenced by AfterLoadCompanyStats(), CmdBuildRailStation(), CmdConvertRail(), ExploreSegment(), IsCompatibleTrainStationTile(), RemoveFromRailBaseStation(), and RemoveRailStation().
| CommandCost PerformStationTileSlopeCheck | ( | TileIndex | north_tile, | |
| TileIndex | cur_tile, | |||
| const StationSpec * | statspec, | |||
| Axis | axis, | |||
| byte | plat_len, | |||
| byte | numtracks | |||
| ) |
Check the slope of a tile of a new station.
| north_tile | Norther tile of the station rect. | |
| cur_tile | Tile to check. | |
| statspec | Station spec. | |
| axis | Axis of the new station. | |
| plat_len | Platform length. | |
| numtracks | Number of platforms. |
Definition at line 677 of file newgrf_station.cpp.
References AXIS_Y, CALLBACK_FAILED, GetErrorMessageFromLocationCallbackResult(), GetTileSlope(), StationSpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, HasBit(), SLOPE_EW, TileX(), TileY(), and ToggleBit().
Referenced by CheckFlatLandRailStation().
| void StationStorePSA | ( | ResolverObject * | object, | |
| uint | pos, | |||
| int32 | value | |||
| ) |
Store a value into the persistent storage of the object's parent.
| object | Object that we want to query. | |
| pos | Position in the persistent storage to use. | |
| value | Value to store. |
Definition at line 536 of file newgrf_station.cpp.
References ResolverObject::grffile, ResolverObject::scope, BaseStation::town, TownStorePSA(), and VSG_SCOPE_PARENT.
| void StationUpdateAnimTriggers | ( | BaseStation * | st | ) |
Update the cached animation trigger bitmask for a station.
| st | Station to update. |
Definition at line 983 of file newgrf_station.cpp.
References BaseStation::cached_anim_triggers, BaseStation::num_specs, BaseStation::speclist, and AnimationInfo::triggers.
Referenced by DeallocateSpecFromStation().
1.7.1