# waypoint_cmd.cpp File Reference

Command Handling for waypoints. More...

`#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 "functions.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 "table/strings.h"`

Go to the source code of this file.

## Functions

static void | MakeDefaultWaypointName (Waypoint *wp)
| Set the default name for a waypoint.
static Waypoint * | FindDeletedWaypointCloseTo (TileIndex tile, StringID str, CompanyID cid)
| Find a deleted waypoint close to a tile.
Axis | GetAxisForNewWaypoint (TileIndex tile)
| Get the axis for a new waypoint.
CommandCost | ClearTile_Station (TileIndex tile, DoCommandFlag flags)
static CommandCost | IsValidTileForWaypoint (TileIndex tile, Axis axis, StationID *waypoint)
| Check whether the given tile is suitable for a waypoint.
void | GetStationLayout (byte *layout, int numtracks, int plat_len, const StationSpec *statspec)
CommandCost | FindJoiningWaypoint (StationID existing_station, StationID station_to_join, bool adjacent, TileArea ta, Waypoint **wp)
| Find a nearby waypoint that joins this waypoint.
bool | CanExpandRailStation (const BaseStation *st, TileArea &new_ta, Axis axis)
| Check whether we can expand the rail part of the given station.
CommandCost | CmdBuildRailWaypoint (TileIndex start_tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
| Convert existing rail to waypoint.
CommandCost | CmdBuildBuoy (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
| Build a buoy.
CommandCost | RemoveBuoy (TileIndex tile, DoCommandFlag flags)
| Remove a buoy.
static bool | IsUniqueWaypointName (const char *name)
CommandCost | CmdRenameWaypoint (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
| Rename a waypoint.

## Detailed Description

Command Handling for waypoints.

Definition in file waypoint_cmd.cpp.

## Function Documentation

bool CanExpandRailStation | ( | const BaseStation * | st,
|  | TileArea & | new_ta,
|  | Axis | axis |
| ) |  |  |

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

Parameters:

  | st | the station to expand
  | new_ta | the current (and if all is fine new) tile area of the rail part of the station
  | axis | the axis of the newly build rail

Returns:
  true if we are allowed to extend

Definition at line 782 of file station_cmd.cpp.

References _settings_game, GetRailStationAxis(), TileArea::h, max(), min(), StationSettings::nonuniform_stations, GameSettings::station, StationSettings::station_spread, TileArea::tile, TILE_LOOP, BaseStation::TileBelongsToRailStation(), TileDiffXY(), TileX(), TileXY(), TileY(), BaseStation::train_station, and TileArea::w.

Referenced by CmdBuildRailStation(), and CmdBuildRailWaypoint().

CommandCost CmdBuildBuoy | ( | TileIndex | tile,
|  | DoCommandFlag | flags,
|  | uint32 | p1,
|  | uint32 | p2,
|  | const char * | text |
| ) |  |  |

Build a buoy.

Parameters:

  | tile | tile where to place the bouy
  | flags | operation to perform
  | p1 | unused
  | p2 | unused
  | text | unused

Returns:
  the cost of this operation or an error

Definition at line 334 of file waypoint_cmd.cpp.

References _date, BaseStation::build_date, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_station_pool >::CanAllocateItem(), DC_EXEC, EXPENSES_CONSTRUCTION, FACIL_DOCK, BaseStation::facilities, FindDeletedWaypointCloseTo(), GetTileSlope(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::index, InvalidateWindowData(), IsBridgeAbove(), MakeBuoy(), MakeDefaultWaypointName(), MayHaveBridgeAbove(), BaseStation::owner, OWNER_NONE, BaseStation::rect, return_cmd_error, SLOPE_FLAT, BaseStation::string_id, BaseStation::town, Waypoint::UpdateVirtCoord(), and BaseStation::xy.

CommandCost CmdBuildRailWaypoint | ( | TileIndex | start_tile,
|  | DoCommandFlag | flags,
|  | uint32 | p1,
|  | uint32 | p2,
|  | const char * | text |
| ) |  |  |

Convert existing rail to waypoint.

Eg build a waypoint station over piece of rail

Parameters:

  | start_tile | northern most tile where waypoint will be built
  | flags | type of operation

  p1

  various bitstuffed elements
  - p1 = (bit 4) - orientation (Axis)
  - p1 = (bit 8-15) - width of waypoint
  - p1 = (bit 16-23) - height of waypoint
  - p1 = (bit 24) - allow waypoints directly adjacent to other waypoints.

  p2

  various bitstuffed elements
  - p2 = (bit 0- 7) - custom station class
  - p2 = (bit 8-15) - custom station id

  | text | unused

Returns:
  the cost of this operation or an error

Definition at line 214 of file waypoint_cmd.cpp.

References _date, _settings_game, AllocaM, AllocateSpecToStation(), AXIS_X, AxisToDiagDir(), AxisToTrack(), BaseStation::build_date, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_station_pool >::CanAllocateItem(), CanExpandRailStation(), CMD_ERROR, DC_EXEC, DeallocateSpecFromStation(), BaseStation::delete_ctr, StationSettings::distant_join_stations, EXPENSES_CONSTRUCTION, FACIL_TRAIN, BaseStation::facilities, CommandCost::Failed(), FindDeletedWaypointCloseTo(), FindJoiningWaypoint(), GB(), GetCustomStationSpec(), GetCustomStationSpecIndex(), GetNumCustomStations(), GetRailReservationTrackBits(), GetRailType(), GetTileOwner(), HasBit(), HasStationReservation(), HasStationTileRail(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_TILE, BaseStation::IsInUse(), IsTileType(), SpecializedStation< Waypoint, true >::IsValidID(), IsValidTileForWaypoint(), MakeDefaultWaypointName(), MakeRailWaypoint(), MarkTileDirtyByTile(), MP_RAILWAY, StationSettings::nonuniform_stations, OtherAxis(), BaseStation::owner, BaseStation::rect, return_cmd_error, SetCustomStationSpecIndex(), SetRailStationReservation(), STAT_CLASS_WAYP, GameSettings::station, StationSettings::station_spread, BaseStation::string_id, TileArea::tile, TileOffsByDiagDir(), BaseStation::town, BaseStation::train_station, Waypoint::UpdateVirtCoord(), BaseStation::xy, and YapfNotifyTrackLayoutChange().

CommandCost CmdRenameWaypoint | ( | TileIndex | tile,
|  | DoCommandFlag | flags,
|  | uint32 | p1,
|  | uint32 | p2,
|  | const char * | text |
| ) |  |  |

Rename a waypoint.

Parameters:

  | tile | unused
  | flags | type of operation
  | p1 | id of waypoint
  | p2 | unused
  | text | the new name or an empty string when resetting to the default

Returns:
  the cost of this operation or an error

Definition at line 432 of file waypoint_cmd.cpp.

References CheckOwnership(), CMD_ERROR, DC_EXEC, SpecializedStation< Waypoint, true >::GetIfValid(), MakeDefaultWaypointName(), MAX_LENGTH_STATION_NAME_BYTES, BaseStation::name, BaseStation::owner, OWNER_NONE, return_cmd_error, StrEmpty(), and Waypoint::UpdateVirtCoord().

static Waypoint* FindDeletedWaypointCloseTo | ( | TileIndex | tile,
|  | StringID | str,
|  | CompanyID | cid |
| ) |  |  | `[static]`

Find a deleted waypoint close to a tile.

Parameters:

  | tile | to search from
  | str | the string to get the 'type' of
  | cid | previous owner of the waypoint

Returns:
  the deleted nearby waypoint

Definition at line 111 of file waypoint_cmd.cpp.

References DistanceManhattan(), BaseStation::IsInUse(), BaseStation::owner, BaseStation::string_id, and BaseStation::xy.

Referenced by CmdBuildBuoy(), and CmdBuildRailWaypoint().

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_waypoint | an existing waypoint we build over
  | waypoint_to_join | the waypoint to join to
  | adjacent | whether adjacent waypoints are allowed
  | ta | the area of the newly build waypoint
  | wp | 'return' pointer for the found waypoint

Returns:
  command cost with the error or 'okay'

Definition at line 951 of file station_cmd.cpp.

Referenced by CmdBuildRailWaypoint().

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:

  | tile | the tile to look at.

Returns:
  the axis for the to-be-build waypoint.

Definition at line 137 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 IsValidTileForWaypoint().

static CommandCost IsValidTileForWaypoint | ( | TileIndex | tile,
|  | Axis | axis,
|  | StationID * | waypoint |
| ) |  |  | `[static]`

Check whether the given tile is suitable for a waypoint.

Parameters:

  | tile | the tile to check for suitability
  | axis | the axis of the waypoint
  | waypoint | Waypoint 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 160 of file waypoint_cmd.cpp.

References _settings_game, ConstructionSettings::build_on_slopes, CheckOwnership(), CMD_ERROR, GameSettings::construction, DC_AUTO, GetAxisForNewWaypoint(), GetStationIndex(), GetTileOwner(), GetTileSlope(), IsBridgeAbove(), IsRailWaypoint(), IsSteepSlope(), IsTileType(), MayHaveBridgeAbove(), MP_STATION, return_cmd_error, and SLOPE_FLAT.

Referenced by CmdBuildRailWaypoint().

static void MakeDefaultWaypointName | ( | Waypoint * | wp | ) | `[static]`

Set the default name for a waypoint.

Parameters:

  | wp | Waypoint to work on

Definition at line 49 of file waypoint_cmd.cpp.

References SpecializedStation< Waypoint, true >::GetIfValid(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_station_pool >::GetPoolSize(), HasBit(), BaseStation::name, SetBit(), BaseStation::string_id, BaseStation::town, Waypoint::town_cn, and BaseStation::xy.

Referenced by CmdBuildBuoy(), CmdBuildRailWaypoint(), and CmdRenameWaypoint().

CommandCost RemoveBuoy | ( | TileIndex | tile,
|  | DoCommandFlag | flags |
| ) |  |  |

Remove a buoy.

Parameters:

  | tile | TileIndex been queried
  | flags | operation to perform

Precondition:
  IsBuoyTile(tile)

Returns:
  cost or failure of operation

Definition at line 380 of file waypoint_cmd.cpp.

References CMD_ERROR, DC_BANKRUPT, DC_EXEC, BaseStation::delete_ctr, EXPENSES_CONSTRUCTION, FACIL_DOCK, BaseStation::facilities, SpecializedStation< Waypoint, true >::GetByTile(), GetTileOwner(), HasStationInUse(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_COMPANY, INVALID_STRING_ID, InvalidateWindowData(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), MarkTileDirtyByTile(), BaseStation::rect, return_cmd_error, and Waypoint::UpdateVirtCoord().