OpenTTD Source 20241224-master-gf74b0cf984
|
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"
#include "timer/timer_game_calendar.h"
#include "safeguards.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_t | GetPlatformInfo (Axis axis, uint8_t 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_t | GetPlatformInfoHelper (TileIndex tile, bool check_type, bool check_axis, bool centred) |
static uint32_t | GetRailContinuationInfo (TileIndex tile) |
SpriteID | GetCustomStationRelocation (const StationSpec *statspec, BaseStation *st, TileIndex tile, uint32_t 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_t | GetStationCallback (CallbackID callback, uint32_t param1, uint32_t param2, const StationSpec *statspec, BaseStation *st, TileIndex tile) |
CommandCost | PerformStationTileSlopeCheck (TileIndex north_tile, TileIndex cur_tile, const StationSpec *statspec, Axis axis, uint8_t plat_len, uint8_t 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, uint8_t 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) |
uint16_t | GetAnimStationCallback (CallbackID callback, uint32_t param1, uint32_t param2, const StationSpec *statspec, BaseStation *st, TileIndex tile, int) |
Wrapper for animation control, see GetStationCallback. | |
void | AnimateStationTile (TileIndex tile) |
void | TriggerStationAnimation (BaseStation *st, TileIndex trigger_tile, StationAnimationTrigger trigger, CargoID cargo_type) |
void | TriggerStationRandomisation (Station *st, TileIndex trigger_tile, StationRandomTrigger trigger, CargoID cargo_type) |
Trigger station randomisation. | |
void | StationUpdateCachedTriggers (BaseStation *st) |
Update the cached animation trigger bitmask for a station. | |
Variables | ||
static const uint | NUM_STATIONSSPECS_PER_STATION = 255 | |
Maximum number of parts per station. | ||
struct { | ||
uint32_t v40 | ||
uint32_t v41 | ||
uint32_t v45 | ||
uint32_t v46 | ||
uint32_t v47 | ||
uint32_t v49 | ||
uint8_t valid | ||
Bits indicating what variable is valid (for each bit, 0 is invalid, 1 is valid). More... | ||
} | _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.
enum TriggerArea |
Definition at line 52 of 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 685 of file newgrf_station.cpp.
References StationSpec::grf_prop, GRFFilePropsBase< Tcnt >::grfid, GRFFilePropsBase< Tcnt >::local_id, NUM_STATIONSSPECS_PER_STATION, BaseStation::speclist, and StationUpdateCachedTriggers().
Referenced by CmdBuildRailStation(), CmdBuildRailWaypoint(), and MoveWaypointsToBaseStations().
void AnimateStationTile | ( | TileIndex | tile | ) |
Definition at line 870 of file newgrf_station.cpp.
void DeallocateSpecFromStation | ( | BaseStation * | st, |
uint8_t | 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 727 of file newgrf_station.cpp.
References BaseStation::cached_anim_triggers, BaseStation::cached_cargo_triggers, GetCustomStationSpecIndex(), INVALID_TILE, BaseStation::speclist, StationUpdateCachedTriggers(), 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 775 of file newgrf_station.cpp.
References _local_company, CALLBACK_FAILED, StationSpec::callback_mask, CBID_STATION_DRAW_TILE_LAYOUT, CBM_STATION_DRAW_TILE_LAYOUT, DrawRailTileSeqInGUI(), DrawSprite(), RailTypeInfo::fallback_railtype, StationSpec::flags, NewGRFClass< Tspec, Tindex, Tmax >::Get(), GetCustomRailSprite(), GetCustomStationRelocation(), NewGRFSpriteLayout::GetLayout(), GetRailTypeInfo(), RailTypeInfo::GetRailtypeSpriteOffset(), NewGRFClass< Tspec, Tindex, Tmax >::GetSpec(), GetStationTileLayout(), DrawTileSprites::ground, GroundSpritePaletteTransform(), HasBit(), INVALID_TILE, NewGRFSpriteLayout::NeedsPreprocessing(), PalSpriteID::pal, NewGRFSpriteLayout::PrepareLayout(), NewGRFSpriteLayout::ProcessRegisters(), StationSpec::renderdata, RTSG_GROUND, DrawTileSprites::seq, SplitGroundSpriteForOverlay(), PalSpriteID::sprite, SPRITE_MODIFIER_CUSTOM_SPRITE, and SSF_SEPARATE_GROUND.
Referenced by StationPickerCallbacks::DrawType(), DrawWaypointSprite(), and BuildRailStationWindow::DrawWidget().
|
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 142 of file newgrf_station.cpp.
References AXIS_X, GetCustomStationSpecIndex(), GetRailStationAxis(), GetStationIndex(), HasStationRail(), IsTileType(), MP_STATION, and TileAdd().
uint16_t GetAnimStationCallback | ( | CallbackID | callback, |
uint32_t | param1, | ||
uint32_t | param2, | ||
const StationSpec * | statspec, | ||
BaseStation * | st, | ||
TileIndex | tile, | ||
int | |||
) |
Wrapper for animation control, see GetStationCallback.
Definition at line 856 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 628 of file newgrf_station.cpp.
References CBID_NO_CALLBACK, GetRegister(), and SpriteGroup::Resolve().
SpriteID GetCustomStationRelocation | ( | const StationSpec * | statspec, |
BaseStation * | st, | ||
TileIndex | tile, | ||
uint32_t | var10 | ||
) |
Resolve sprites for drawing a station tile.
statspec | Station spec |
st | Station (nullptr 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 611 of file newgrf_station.cpp.
References CBID_NO_CALLBACK, and SpriteGroup::Resolve().
Referenced by DrawStationTile().
uint32_t GetPlatformInfo | ( | Axis | axis, |
uint8_t | 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, Clamp(), SB(), and Swap().
Referenced by CmdBuildRailStation().
|
static |
Definition at line 165 of file newgrf_station.cpp.
|
static |
Definition at line 181 of file newgrf_station.cpp.
uint16_t GetStationCallback | ( | CallbackID | callback, |
uint32_t | param1, | ||
uint32_t | param2, | ||
const StationSpec * | statspec, | ||
BaseStation * | st, | ||
TileIndex | tile | ||
) |
Definition at line 641 of file newgrf_station.cpp.
const StationSpec * GetStationSpec | ( | TileIndex | t | ) |
Definition at line 846 of file newgrf_station.cpp.
CommandCost PerformStationTileSlopeCheck | ( | TileIndex | north_tile, |
TileIndex | cur_tile, | ||
const StationSpec * | statspec, | ||
Axis | axis, | ||
uint8_t | plat_len, | ||
uint8_t | 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 657 of file newgrf_station.cpp.
References AXIS_Y, CALLBACK_FAILED, CBID_STATION_LAND_SLOPE_CHECK, GetErrorMessageFromLocationCallbackResult(), GetTileSlope(), StationSpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, HasBit(), SLOPE_EW, TileX(), TileY(), and ToggleBit().
Referenced by CheckFlatLandRailStation().
void StationUpdateCachedTriggers | ( | BaseStation * | st | ) |
Update the cached animation trigger bitmask for a station.
st | Station to update. |
Definition at line 994 of file newgrf_station.cpp.
References BaseStation::cached_anim_triggers, and BaseStation::cached_cargo_triggers.
Referenced by AllocateSpecToStation(), and DeallocateSpecFromStation().
void TriggerStationAnimation | ( | BaseStation * | st, |
TileIndex | trigger_tile, | ||
StationAnimationTrigger | trigger, | ||
CargoID | cargo_type | ||
) |
Definition at line 878 of file newgrf_station.cpp.
void TriggerStationRandomisation | ( | Station * | st, |
TileIndex | trigger_tile, | ||
StationRandomTrigger | trigger, | ||
CargoID | cargo_type | ||
) |
Trigger station randomisation.
st | station being triggered |
trigger_tile | specific tile of platform to trigger |
trigger | trigger type |
cargo_type | cargo type causing trigger |
Definition at line 919 of file newgrf_station.cpp.
References BaseStation::cached_cargo_triggers, StationSpec::cargo_triggers, CBID_RANDOM_TRIGGER, BaseStation::GetByTile(), GetEmptyMask(), GetStationTileRandomBits(), HasBit(), IsValidCargoID(), MarkTileDirtyByTile(), BaseStation::random_bits, SpriteGroup::Resolve(), SetBit(), SetStationTileRandomBits(), SRT_CARGO_TAKEN, Station::TileBelongsToRailStation(), and BaseStation::waiting_triggers.
Referenced by Vehicle::LeaveStation(), LoadUnloadVehicle(), CYapfReserveTrack< Types >::ReserveRailStationPlatform(), TrainEnterStation(), and TryReserveRailTrack().
|
static |
Maximum number of parts per station.
Definition at line 50 of file newgrf_station.cpp.
Referenced by AllocateSpecToStation().
uint32_t v40 |
Definition at line 241 of file newgrf_station.cpp.
uint32_t v41 |
Definition at line 242 of file newgrf_station.cpp.
uint32_t v45 |
Definition at line 243 of file newgrf_station.cpp.
uint32_t v46 |
Definition at line 244 of file newgrf_station.cpp.
uint32_t v47 |
Definition at line 245 of file newgrf_station.cpp.
uint32_t v49 |
Definition at line 246 of file newgrf_station.cpp.
uint8_t valid |
Bits indicating what variable is valid (for each bit, 0
is invalid, 1
is valid).
Definition at line 247 of file newgrf_station.cpp.
Referenced by CYapfBaseT< Types >::AddNewNode(), Packet::PrepareToRead(), Window::SetWidgetHighlight(), ScriptDebugWindow::UpdateAIButtonsState(), and ScriptDebugWindow::UpdateGSButtonState().