OpenTTD Source  13.2.1
waypoint_cmd.cpp File Reference
#include "stdafx.h"
#include "command_func.h"
#include "landscape.h"
#include "bridge_map.h"
#include "town.h"
#include "waypoint_base.h"
#include "pathfinder/yapf/yapf_cache.h"
#include "strings_func.h"
#include "viewport_func.h"
#include "viewport_kdtree.h"
#include "window_func.h"
#include "date_func.h"
#include "vehicle_func.h"
#include "string_func.h"
#include "company_func.h"
#include "newgrf_station.h"
#include "company_base.h"
#include "water.h"
#include "company_gui.h"
#include "waypoint_cmd.h"
#include "landscape_cmd.h"
#include "table/strings.h"
#include "safeguards.h"

Go to the source code of this file.

Functions

static WaypointFindDeletedWaypointCloseTo (TileIndex tile, StringID str, CompanyID cid)
 Find a deleted waypoint close to a tile. More...
 
Axis GetAxisForNewWaypoint (TileIndex tile)
 Get the axis for a new waypoint. More...
 
CommandCost ClearTile_Station (TileIndex tile, DoCommandFlag flags)
 Clear a single tile of a station. More...
 
static CommandCost IsValidTileForWaypoint (TileIndex tile, Axis axis, StationID *waypoint)
 Check whether the given tile is suitable for a waypoint. More...
 
void GetStationLayout (byte *layout, uint numtracks, uint plat_len, const StationSpec *statspec)
 Create the station layout for the given number of tracks and platform length. More...
 
CommandCost FindJoiningWaypoint (StationID existing_station, StationID station_to_join, bool adjacent, TileArea ta, Waypoint **wp)
 Find a nearby waypoint that joins this waypoint. More...
 
CommandCost CanExpandRailStation (const BaseStation *st, TileArea &new_ta, Axis axis)
 Check whether we can expand the rail part of the given station. More...
 
CommandCost CmdBuildRailWaypoint (DoCommandFlag flags, TileIndex start_tile, Axis axis, byte width, byte height, StationClassID spec_class, byte spec_index, StationID station_to_join, bool adjacent)
 Convert existing rail to waypoint. More...
 
CommandCost CmdBuildBuoy (DoCommandFlag flags, TileIndex tile)
 Build a buoy. More...
 
CommandCost RemoveBuoy (TileIndex tile, DoCommandFlag flags)
 Remove a buoy. More...
 
static bool IsUniqueWaypointName (const std::string &name)
 Check whether the name is unique amongst the waypoints. More...
 
CommandCost CmdRenameWaypoint (DoCommandFlag flags, StationID waypoint_id, const std::string &text)
 Rename a waypoint. More...
 

Detailed Description

Command Handling for waypoints.

Definition in file waypoint_cmd.cpp.

Function Documentation

◆ CanExpandRailStation()

CommandCost CanExpandRailStation ( const BaseStation st,
TileArea new_ta,
Axis  axis 
)

Check whether we can expand the rail part of the given station.

Parameters
stthe station to expand
new_tathe current (and if all is fine new) tile area of the rail part of the station
axisthe axis of the newly build rail
Returns
Succeeded or failed command.

Definition at line 1077 of file station_cmd.cpp.

References BaseStation::train_station.

◆ ClearTile_Station()

CommandCost ClearTile_Station ( TileIndex  tile,
DoCommandFlag  flags 
)

Clear a single tile of a station.

Parameters
tileThe tile to clear.
flagsThe DoCommand flags related to the "command".
Returns
The cost, or error of clearing.

Definition at line 4254 of file station_cmd.cpp.

References DC_AUTO, and GetStationType().

Referenced by CheckFlatLandRailStation(), CheckFlatLandRoadStop(), and IsValidTileForWaypoint().

◆ CmdBuildBuoy()

CommandCost CmdBuildBuoy ( DoCommandFlag  flags,
TileIndex  tile 
)

Build a buoy.

Parameters
flagsoperation to perform
tiletile where to place the buoy
Returns
the cost of this operation or an error

Definition at line 291 of file waypoint_cmd.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_station_pool >::CanAllocateItem(), EXPENSES_CONSTRUCTION, FindDeletedWaypointCloseTo(), HasTileWaterGround(), IsBridgeAbove(), IsTileFlat(), OWNER_NONE, and return_cmd_error.

◆ CmdBuildRailWaypoint()

CommandCost CmdBuildRailWaypoint ( DoCommandFlag  flags,
TileIndex  start_tile,
Axis  axis,
byte  width,
byte  height,
StationClassID  spec_class,
byte  spec_index,
StationID  station_to_join,
bool  adjacent 
)

Convert existing rail to waypoint.

Eg build a waypoint station over piece of rail

Parameters
flagstype of operation
start_tilenorthern most tile where waypoint will be built
axisorientation (Axis)
widthwidth of waypoint
heightheight of waypoint
spec_classcustom station class
spec_indexcustom station id
station_to_joinstation ID to join (NEW_STATION if build new one)
adjacentallow waypoints directly adjacent to other waypoints.
Returns
the cost of this operation or an error

Definition at line 175 of file waypoint_cmd.cpp.

References _settings_game, AXIS_X, CMD_ERROR, NewGRFClass< Tspec, Tid, Tmax >::Get(), IsValidAxis(), STAT_CLASS_WAYP, GameSettings::station, and StationSettings::station_spread.

◆ CmdRenameWaypoint()

CommandCost CmdRenameWaypoint ( DoCommandFlag  flags,
StationID  waypoint_id,
const std::string &  text 
)

Rename a waypoint.

Parameters
flagstype of operation
waypoint_idid of waypoint
textthe new name or an empty string when resetting to the default
Returns
the cost of this operation or an error

Definition at line 400 of file waypoint_cmd.cpp.

References CheckOwnership(), CMD_ERROR, DC_EXEC, CommandCost::Failed(), SpecializedStation< Waypoint, true >::GetIfValid(), IsUniqueWaypointName(), MAX_LENGTH_STATION_NAME_CHARS, BaseStation::name, BaseStation::owner, OWNER_NONE, return_cmd_error, Waypoint::UpdateVirtCoord(), and Utf8StringLength().

◆ FindDeletedWaypointCloseTo()

static Waypoint* FindDeletedWaypointCloseTo ( TileIndex  tile,
StringID  str,
CompanyID  cid 
)
static

Find a deleted waypoint close to a tile.

Parameters
tileto search from
strthe string to get the 'type' of
cidprevious owner of the waypoint
Returns
the deleted nearby waypoint

Definition at line 72 of file waypoint_cmd.cpp.

References DistanceManhattan(), and SpecializedStation< Waypoint, true >::Iterate().

Referenced by CmdBuildBuoy().

◆ FindJoiningWaypoint()

CommandCost FindJoiningWaypoint ( StationID  existing_waypoint,
StationID  waypoint_to_join,
bool  adjacent,
TileArea  ta,
Waypoint **  wp 
)

Find a nearby waypoint that joins this waypoint.

Parameters
existing_waypointan existing waypoint we build over
waypoint_to_jointhe waypoint to join to
adjacentwhether adjacent waypoints are allowed
tathe area of the newly build waypoint
wp'return' pointer for the found waypoint
Returns
command cost with the error or 'okay'

Definition at line 1217 of file station_cmd.cpp.

◆ GetAxisForNewWaypoint()

Axis GetAxisForNewWaypoint ( TileIndex  tile)

Get the axis for a new waypoint.

This means that if it is a valid tile to build a waypoint on it returns a valid Axis, otherwise an invalid one.

Parameters
tilethe tile to look at.
Returns
the axis for the to-be-build waypoint.

Definition at line 98 of file waypoint_cmd.cpp.

References AXIS_X, AXIS_Y, GetRailStationAxis(), GetRailTileType(), GetTrackBits(), INVALID_AXIS, IsRailWaypointTile(), IsTileType(), MP_RAILWAY, RAIL_TILE_NORMAL, TRACK_BIT_X, and TRACK_BIT_Y.

Referenced by PlaceRail_Waypoint().

◆ GetStationLayout()

void GetStationLayout ( byte *  layout,
uint  numtracks,
uint  plat_len,
const StationSpec statspec 
)

Create the station layout for the given number of tracks and platform length.

Parameters
layoutThe layout to write to.
numtracksThe number of tracks to write.
plat_lenThe length of the platforms.
statspecThe specification of the station to (possibly) get the layout from.

Definition at line 1122 of file station_cmd.cpp.

References StationSpec::layouts.

◆ IsUniqueWaypointName()

static bool IsUniqueWaypointName ( const std::string &  name)
static

Check whether the name is unique amongst the waypoints.

Parameters
nameThe name to check.
Returns
True iff the name is unique.

Definition at line 384 of file waypoint_cmd.cpp.

References SpecializedStation< Waypoint, true >::Iterate().

Referenced by CmdRenameWaypoint().

◆ IsValidTileForWaypoint()

static CommandCost IsValidTileForWaypoint ( TileIndex  tile,
Axis  axis,
StationID *  waypoint 
)
static

Check whether the given tile is suitable for a waypoint.

Parameters
tilethe tile to check for suitability
axisthe axis of the waypoint
waypointWaypoint the waypoint to check for is already joined to. If we find another waypoint it can join to it will throw an error.

Definition at line 121 of file waypoint_cmd.cpp.

References ClearTile_Station(), DC_AUTO, GetStationIndex(), IsRailWaypoint(), IsTileType(), and MP_STATION.

◆ RemoveBuoy()