OpenTTD Source 20241224-master-gf74b0cf984
|
Commands related to road tiles. More...
#include "stdafx.h"
#include "road.h"
#include "road_internal.h"
#include "viewport_func.h"
#include "command_func.h"
#include "company_func.h"
#include "pathfinder/yapf/yapf_cache.h"
#include "depot_base.h"
#include "newgrf.h"
#include "autoslope.h"
#include "tunnelbridge_map.h"
#include "strings_func.h"
#include "vehicle_func.h"
#include "sound_func.h"
#include "tunnelbridge.h"
#include "cheat_type.h"
#include "effectvehicle_func.h"
#include "effectvehicle_base.h"
#include "elrail_func.h"
#include "roadveh.h"
#include "train.h"
#include "town.h"
#include "company_base.h"
#include "core/random_func.hpp"
#include "core/container_func.hpp"
#include "newgrf_debug.h"
#include "newgrf_railtype.h"
#include "newgrf_roadtype.h"
#include "timer/timer_game_calendar.h"
#include "genworld.h"
#include "company_gui.h"
#include "road_func.h"
#include "road_cmd.h"
#include "landscape_cmd.h"
#include "rail_cmd.h"
#include "table/strings.h"
#include "table/roadtypes.h"
#include "safeguards.h"
#include "table/road_land.h"
Go to the source code of this file.
Data Structures | |
struct | DrawRoadTileStruct |
Typedefs | |
typedef std::vector< RoadVehicle * > | RoadVehicleList |
Helper type for lists/vectors of road vehicles. | |
Functions | |
void | ResetRoadTypes () |
Reset all road type information to its default values. | |
void | ResolveRoadTypeGUISprites (RoadTypeInfo *rti) |
static bool | CompareRoadTypes (const RoadType &first, const RoadType &second) |
Compare roadtypes based on their sorting order. | |
void | InitRoadTypes () |
Resolve sprites of custom road types. | |
RoadType | AllocateRoadType (RoadTypeLabel label, RoadTramType rtt) |
Allocate a new road type label. | |
bool | RoadVehiclesAreBuilt () |
Verify whether a road vehicle is available. | |
void | UpdateCompanyRoadInfrastructure (RoadType rt, Owner o, int count) |
Update road infrastructure counts for a company. | |
static Foundation | GetRoadFoundation (Slope tileh, RoadBits bits) |
Get the foundationtype of a RoadBits Slope combination. | |
CommandCost | CheckAllowRemoveRoad (TileIndex tile, RoadBits remove, Owner owner, RoadTramType rtt, DoCommandFlag flags, bool town_check) |
Is it allowed to remove the given road bits from the given tile? | |
static CommandCost | RemoveRoad (TileIndex tile, DoCommandFlag flags, RoadBits pieces, RoadTramType rtt, bool town_check) |
Delete a piece of road. | |
static CommandCost | CheckRoadSlope (Slope tileh, RoadBits *pieces, RoadBits existing, RoadBits other) |
Calculate the costs for roads on slopes Aside modify the RoadBits to fit on the slopes. | |
CommandCost | CmdBuildRoad (DoCommandFlag flags, TileIndex tile, RoadBits pieces, RoadType rt, DisallowedRoadDirections toggle_drd, TownID town_id) |
Build a piece of road. | |
static bool | CanConnectToRoad (TileIndex tile, RoadType rt, DiagDirection dir) |
Checks whether a road or tram connection can be found when building a new road or tram. | |
CommandCost | CmdBuildLongRoad (DoCommandFlag flags, TileIndex end_tile, TileIndex start_tile, RoadType rt, Axis axis, DisallowedRoadDirections drd, bool start_half, bool end_half, bool is_ai) |
Build a long piece of road. | |
std::tuple< CommandCost, Money > | CmdRemoveLongRoad (DoCommandFlag flags, TileIndex end_tile, TileIndex start_tile, RoadType rt, Axis axis, bool start_half, bool end_half) |
Remove a long piece of road. | |
CommandCost | CmdBuildRoadDepot (DoCommandFlag flags, TileIndex tile, RoadType rt, DiagDirection dir) |
Build a road depot. | |
static CommandCost | RemoveRoadDepot (TileIndex tile, DoCommandFlag flags) |
static CommandCost | ClearTile_Road (TileIndex tile, DoCommandFlag flags) |
static uint | GetRoadSpriteOffset (Slope slope, RoadBits bits) |
Get the sprite offset within a spritegroup. | |
static bool | DrawRoadAsSnowDesert (bool snow_or_desert, Roadside roadside) |
Should the road be drawn as a unpaved snow/desert road? By default, roads are always drawn as unpaved if they are on desert or above the snow line, but NewGRFs can override this for desert. | |
void | DrawRoadTypeCatenary (const TileInfo *ti, RoadType rt, RoadBits rb) |
Draws the catenary for the RoadType of the given tile. | |
void | DrawRoadCatenary (const TileInfo *ti) |
Draws the catenary for the given tile. | |
static void | DrawRoadDetail (SpriteID img, const TileInfo *ti, int dx, int dy, int h, bool transparent) |
Draws details on/around the road. | |
void | DrawRoadOverlays (const TileInfo *ti, PaletteID pal, const RoadTypeInfo *road_rti, const RoadTypeInfo *tram_rti, uint road_offset, uint tram_offset, bool draw_underlay) |
Draw road underlay and overlay sprites. | |
static SpriteID | GetRoadGroundSprite (const TileInfo *ti, Roadside roadside, const RoadTypeInfo *rti, uint offset, bool snow_or_desert, PaletteID *pal) |
Get ground sprite to draw for a road tile. | |
void | DrawRoadGroundSprites (const TileInfo *ti, RoadBits road, RoadBits tram, const RoadTypeInfo *road_rti, const RoadTypeInfo *tram_rti, Roadside roadside, bool snow_or_desert) |
Draw road ground sprites. | |
static void | DrawRoadBits (TileInfo *ti) |
Draw ground sprite and road pieces. | |
static void | DrawTile_Road (TileInfo *ti) |
Tile callback function for rendering a road tile to the screen. | |
void | DrawRoadDepotSprite (int x, int y, DiagDirection dir, RoadType rt) |
Draw the road depot sprite. | |
void | UpdateNearestTownForRoadTiles (bool invalidate) |
Updates cached nearest town for all road tiles. | |
static int | GetSlopePixelZ_Road (TileIndex tile, uint x, uint y, bool) |
static Foundation | GetFoundation_Road (TileIndex tile, Slope tileh) |
static void | TileLoop_Road (TileIndex tile) |
static bool | ClickTile_Road (TileIndex tile) |
static TrackStatus | GetTileTrackStatus_Road (TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side) |
static void | GetTileDesc_Road (TileIndex tile, TileDesc *td) |
static VehicleEnterTileStatus | VehicleEnter_Road (Vehicle *v, TileIndex tile, int, int) |
static void | ChangeTileOwner_Road (TileIndex tile, Owner old_owner, Owner new_owner) |
static CommandCost | TerraformTile_Road (TileIndex tile, DoCommandFlag flags, int z_new, Slope tileh_new) |
static Vehicle * | UpdateRoadVehPowerProc (Vehicle *v, void *data) |
Update power of road vehicle under which is the roadtype being converted. | |
static bool | CanConvertUnownedRoadType (Owner owner, RoadTramType rtt) |
Checks the tile and returns whether the current player is allowed to convert the roadtype to another roadtype without taking ownership. | |
static void | ConvertRoadTypeOwner (TileIndex tile, uint num_pieces, Owner owner, RoadType from_type, RoadType to_type) |
Convert the ownership of the RoadType of the tile if applicable. | |
CommandCost | CmdConvertRoad (DoCommandFlag flags, TileIndex tile, TileIndex area_start, RoadType to_type) |
Convert one road subtype to another. | |
Variables | |
RoadTypeInfo | _roadtypes [ROADTYPE_END] |
std::vector< RoadType > | _sorted_roadtypes |
RoadTypes | _roadtypes_hidden_mask |
RoadTypes | _roadtypes_type |
Bitmap of road/tram types. | |
static const RoadBits | _invalid_tileh_slopes_road [2][15] |
Invalid RoadBits on slopes. | |
const uint8_t | _road_sloped_sprites [14] |
static const Roadside | _town_road_types [][2] |
static const Roadside | _town_road_types_2 [][2] |
static const TrackBits | _road_trackbits [16] |
static const StringID | _road_tile_strings [] |
static const uint8_t | _roadveh_enter_depot_dir [4] |
Given the direction the road depot is pointing, this is the direction the vehicle should be travelling in in order to enter the depot. | |
const TileTypeProcs | _tile_type_road_procs |
Tile callback functions for road tiles. | |
Commands related to road tiles.
Definition in file road_cmd.cpp.
typedef std::vector<RoadVehicle *> RoadVehicleList |
Helper type for lists/vectors of road vehicles.
Definition at line 52 of file road_cmd.cpp.
RoadType AllocateRoadType | ( | RoadTypeLabel | label, |
RoadTramType | rtt | ||
) |
Allocate a new road type label.
Definition at line 134 of file road_cmd.cpp.
References _original_roadtypes, _roadtypes_type, RoadTypeInfo::alternate_labels, ClrBit(), RoadTypeInfo::flags, RoadTypeInfo::introduces_roadtypes, RoadTypeInfo::introduction_date, TimerGameConst< struct Calendar >::INVALID_DATE, INVALID_ROADTYPE, RoadTypeInfo::label, RoadTypeInfo::powered_roadtypes, ROADTYPE_BEGIN, ROADTYPE_END, ROADTYPE_ROAD, ROADTYPE_TRAM, ROTFB_NONE, SetBit(), and RoadTypeInfo::sorting_order.
|
static |
Checks whether a road or tram connection can be found when building a new road or tram.
tile | Tile at which the road being built will end. |
rt | Roadtype of the road being built. |
dir | Direction that the road is following. |
Definition at line 950 of file road_cmd.cpp.
References DiagDirToRoadBits(), GetAnyRoadBits(), HasPowerOnRoad(), INVALID_ROADTYPE, IsValidTile(), MayHaveRoad(), ReverseDiagDir(), and TileOffsByDiagDir().
Referenced by CmdBuildLongRoad().
|
static |
Checks the tile and returns whether the current player is allowed to convert the roadtype to another roadtype without taking ownership.
owner | the tile owner. |
rtt | Road/tram type. |
Definition at line 2394 of file road_cmd.cpp.
References OWNER_NONE, and OWNER_TOWN.
Referenced by CmdConvertRoad().
Definition at line 2284 of file road_cmd.cpp.
CommandCost CheckAllowRemoveRoad | ( | TileIndex | tile, |
RoadBits | remove, | ||
Owner | owner, | ||
RoadTramType | rtt, | ||
DoCommandFlag | flags, | ||
bool | town_check | ||
) |
Is it allowed to remove the given road bits from the given tile?
tile | the tile to remove the road from |
remove | the roadbits that are going to be removed |
owner | the actual owner of the roadbits of the tile |
rt | the road type to remove the bits from |
flags | command flags |
town_check | Shall the town rating checked/affected |
Definition at line 262 of file road_cmd.cpp.
References _cheats, _current_company, _settings_game, ChangeTownRating(), CheckforTownRating(), CheckOwnership(), ClosestTownFromTile(), GameSettings::construction, ConstructionSettings::extra_dynamite, CommandCost::Failed(), GetAnyRoadBits(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), KillFirstBit(), Cheats::magic_bulldozer, OWNER_NONE, OWNER_TOWN, OWNER_WATER, RATING_ROAD_DOWN_STEP_EDGE, RATING_ROAD_DOWN_STEP_INNER, RATING_ROAD_MINIMUM, ROAD_NE, ROAD_NONE, ROAD_NW, ROAD_REMOVE, ROAD_SE, ROAD_SW, SetDParam(), TileAddXY(), and Cheat::value.
Referenced by CanRemoveRoadWithStop(), and RemoveRoad().
|
static |
Calculate the costs for roads on slopes Aside modify the RoadBits to fit on the slopes.
tileh | The current slope |
pieces | The RoadBits we want to add |
existing | The existent RoadBits of the current type |
other | The other existent RoadBits |
Definition at line 545 of file road_cmd.cpp.
References _invalid_tileh_slopes_road, _settings_game, ConstructionSettings::build_on_slopes, CLRBITS, CMD_ERROR, GameSettings::construction, EXPENSES_CONSTRUCTION, FOUNDATION_NONE, GetHighestSlopeCorner(), GetRoadFoundation(), HasExactlyOneBit(), IsSlopeWithOneCornerRaised(), IsSteepSlope(), IsStraightRoad(), MirrorRoadBits(), ROAD_NONE, SLOPE_FLAT, and SlopeWithOneCornerRaised().
Referenced by CmdBuildRoad().
|
static |
Definition at line 1234 of file road_cmd.cpp.
|
static |
Definition at line 2080 of file road_cmd.cpp.
CommandCost CmdBuildLongRoad | ( | DoCommandFlag | flags, |
TileIndex | end_tile, | ||
TileIndex | start_tile, | ||
RoadType | rt, | ||
Axis | axis, | ||
DisallowedRoadDirections | drd, | ||
bool | start_half, | ||
bool | end_half, | ||
bool | is_ai | ||
) |
Build a long piece of road.
flags | operation to perform |
end_tile | end tile of drag |
start_tile | start tile of drag |
rt | road type |
axis | direction |
drd | set road direction |
start_half | start tile starts in the 2nd half of tile (p2 & 1). Only used if is_ai is set or if we are building a single tile |
end_half | end tile starts in the 2nd half of tile (p2 & 2). Only used if is_ai is set or if we are building a single tile |
is_ai | defines two different behaviors for this command:
|
Definition at line 979 of file road_cmd.cpp.
References CommandCost::AddCost(), AXIS_X, AXIS_Y, AxisToDiagDir(), AxisToRoadBits(), CanConnectToRoad(), CMD_ERROR, DiagDirToRoadBits(), DRD_BOTH, DRD_NORTHBOUND, DRD_SOUTHBOUND, EXPENSES_CONSTRUCTION, CommandCost::Failed(), CommandCost::GetErrorMessage(), GetTunnelBridgeDirection(), IsBridge(), IsTileType(), IsValidAxis(), IsValidDisallowedRoadDirections(), MP_TUNNELBRIDGE, ReverseDiagDir(), Map::Size(), TileOffsByDiagDir(), TileX(), TileY(), and ValParamRoadType().
CommandCost CmdBuildRoad | ( | DoCommandFlag | flags, |
TileIndex | tile, | ||
RoadBits | pieces, | ||
RoadType | rt, | ||
DisallowedRoadDirections | toggle_drd, | ||
TownID | town_id | ||
) |
Build a piece of road.
flags | operation to perform |
tile | tile where to build road |
pieces | road pieces to build (RoadBits) |
rt | road type |
toggle_drd | disallowed directions to toggle |
town_id | the town that is building the road (0 if not applicable) |
Definition at line 610 of file road_cmd.cpp.
References _current_company, _settings_game, CommandCost::AddCost(), AXIS_X, AXIS_Y, AxisToRoadBits(), AxisToTrack(), ConstructionSettings::build_on_slopes, Town::cache, CalcClosestTownFromTile(), CheckOwnership(), CheckRoadSlope(), CheckTileOwnership(), CMD_ERROR, ComplementRoadBits(), GameSettings::construction, CountBits(), ConstructionSettings::crossing_with_competitor, DC_EXEC, DiagDirToRoadBits(), DirtyCompanyInfrastructureWindows(), DistanceSquare(), DRD_NONE, EnsureNoVehicleOnGround(), EXPENSES_CONSTRUCTION, CommandCost::Failed(), GetAnyRoadBits(), CommandCost::GetCost(), GetCrossingRoadAxis(), GetCrossingRoadBits(), GetDisallowedRoadDirections(), GetDriveThroughStopAxis(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), GetOtherTunnelBridgeEnd(), GetRailReservationTrackBits(), GetRailTileType(), GetRailType(), GetRoadBits(), GetRoadFoundation(), GetRoadOwner(), GetRoadTileType(), GetTileOwner(), GetTileSlope(), GetTileType(), GetTrackBits(), GetTunnelBridgeDirection(), GetTunnelBridgeLength(), GetTunnelBridgeTransportType(), HasBit(), HasExactlyOneBit(), HasPowerOnRoad(), HasRoadWorks(), HasTileRoadType(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Company::infrastructure, INVALID_ROADTYPE, IsBridge(), IsDriveThroughStopTile(), IsNormalRoad(), IsNormalRoadTile(), IsSteepSlope(), IsStraightRoad(), IsTileType(), IsValidDisallowedRoadDirections(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::IsValidID(), IsValidRoadBits(), LEVELCROSSING_TRACKBIT_FACTOR, MakeRoadCrossing(), MakeRoadNormal(), MarkBridgeDirty(), MarkDirtyAdjacentLevelCrossingTiles(), MarkTileDirtyByTile(), MirrorRoadBits(), MP_RAILWAY, MP_ROAD, MP_STATION, MP_TUNNELBRIDGE, OtherAxis(), OWNER_DEITY, OWNER_NONE, OWNER_TOWN, CompanyInfrastructure::rail, RAIL_TILE_NORMAL, RailNoLevelCrossings(), ROAD_NONE, ROAD_TILE_CROSSING, ROAD_TILE_DEPOT, ROAD_TILE_NORMAL, ROAD_X, ROAD_Y, RoadBuildCost(), RoadNoLevelCrossing(), SetCrossingReservation(), SetDisallowedRoadDirections(), SetRoadBits(), SetRoadOwner(), SetRoadType(), SetTownIndex(), TownCache::squared_town_zone_radius, TRACK_BIT_X, TRACK_BIT_Y, TRANSPORT_ROAD, TUNNELBRIDGE_TRACKBIT_FACTOR, TunnelBridgeIsFree(), UpdateCompanyRoadInfrastructure(), UpdateLevelCrossing(), VALID_LEVEL_CROSSING_SLOPES, ValParamRoadType(), Town::xy, and YapfNotifyTrackLayoutChange().
CommandCost CmdBuildRoadDepot | ( | DoCommandFlag | flags, |
TileIndex | tile, | ||
RoadType | rt, | ||
DiagDirection | dir | ||
) |
Build a road depot.
tile | tile where to build the depot |
flags | operation to perform |
rt | road type |
dir | entrance direction |
Definition at line 1149 of file road_cmd.cpp.
References _current_company, _settings_game, CommandCost::AddCost(), Depot::build_date, ConstructionSettings::build_on_slopes, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_depot_pool >::CanAllocateItem(), CanBuildDepotByTileh(), CheckTileOwnership(), CMD_ERROR, GameSettings::construction, TimerGameCalendar::date, DC_EXEC, EnsureNoVehicleOnGround(), EXPENSES_CONSTRUCTION, CommandCost::Failed(), GetRoadDepotDirection(), GetTileSlope(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, IsBridgeAbove(), IsRoadDepotTile(), IsValidDiagDirection(), MakeDefaultName(), MakeRoadDepot(), MarkTileDirtyByTile(), ROAD_DEPOT_TRACKBIT_FACTOR, SetRoadDepotExitDirection(), SLOPE_FLAT, UpdateCompanyRoadInfrastructure(), and ValParamRoadType().
CommandCost CmdConvertRoad | ( | DoCommandFlag | flags, |
TileIndex | tile, | ||
TileIndex | area_start, | ||
RoadType | to_type | ||
) |
Convert one road subtype to another.
Not meant to convert from road to tram.
flags | operation to perform |
tile | end tile of road conversion drag |
area_start | start tile of drag |
to_type | new roadtype to convert to. |
Definition at line 2442 of file road_cmd.cpp.
References _current_company, _settings_game, CommandCost::AddCost(), CanConvertUnownedRoadType(), CheckforTownRating(), CheckOwnership(), ClosestTownFromTile(), CMD_ERROR, ConvertRoadTypeOwner(), CountBits(), DC_EXEC, DC_NONE, EconomySettings::dist_local_authority, GameSettings::economy, EnsureNoVehicleOnGround(), EXPENSES_CONSTRUCTION, CommandCost::Failed(), FindVehicleOnPos(), GetAnyRoadBits(), GetOtherTunnelBridgeEnd(), GetRoadOwner(), GetTileType(), GetTunnelBridgeLength(), GetTunnelBridgeTransportType(), HasPowerOnRoad(), INVALID_ROADTYPE, INVALID_TILE, InvalidateWindowData(), IsAnyRoadStop(), IsBayRoadStopTile(), IsBridge(), IsLevelCrossing(), IsRoadDepot(), IsRoadDepotTile(), CommandCost::MakeError(), MarkBridgeDirty(), MarkTileDirtyByTile(), MayHaveRoad(), MP_ROAD, MP_STATION, MP_TUNNELBRIDGE, OWNER_TOWN, ROAD_DEPOT_TRACKBIT_FACTOR, ROAD_REMOVE, ROAD_STOP_TRACKBIT_FACTOR, RoadConvertCost(), RoadNoLevelCrossing(), SetDParamsForOwnedBy(), SetRoadType(), SetTunnelBridgeOwner(), Map::Size(), TRANSPORT_ROAD, TUNNELBRIDGE_REMOVE, TUNNELBRIDGE_TRACKBIT_FACTOR, TunnelBridgeIsFree(), UpdateRoadVehPowerProc(), ValParamRoadType(), WC_BUILD_VEHICLE, and WC_VEHICLE_DEPOT.
std::tuple< CommandCost, Money > CmdRemoveLongRoad | ( | DoCommandFlag | flags, |
TileIndex | end_tile, | ||
TileIndex | start_tile, | ||
RoadType | rt, | ||
Axis | axis, | ||
bool | start_half, | ||
bool | end_half | ||
) |
Remove a long piece of road.
flags | operation to perform |
end_tile | end tile of drag |
start_tile | start tile of drag |
rt | road type |
axis | direction |
start_half | start tile starts in the 2nd half of tile |
end_half | end tile starts in the 2nd half of tile (p2 & 2) |
Definition at line 1075 of file road_cmd.cpp.
References CommandCost::AddCost(), AXIS_X, AXIS_Y, AxisToRoadBits(), CMD_ERROR, DC_EXEC, EXPENSES_CONSTRUCTION, GetAvailableMoneyForCommand(), CommandCost::GetCost(), CommandCost::GetErrorMessage(), IsValidAxis(), RemoveRoad(), ROAD_NE, ROAD_NW, ROAD_SE, ROAD_SW, Map::Size(), CommandCost::Succeeded(), TileOffsByAxis(), TileX(), TileY(), and ValParamRoadType().
Compare roadtypes based on their sorting order.
first | The roadtype to compare to. |
second | The roadtype to compare. |
Definition at line 103 of file road_cmd.cpp.
References GetRoadTypeInfo(), and RoadTypeInfo::sorting_order.
Referenced by InitRoadTypes().
|
static |
Convert the ownership of the RoadType of the tile if applicable.
tile | the tile of which convert ownership |
num_pieces | the count of the roadbits to assign to the new owner |
owner | the current owner of the RoadType |
from_type | the old road type |
to_type | the new road type |
Definition at line 2407 of file road_cmd.cpp.
References _current_company, DirtyCompanyInfrastructureWindows(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Company::infrastructure, MAX_COMPANIES, OWNER_NONE, CompanyInfrastructure::road, SetRoadOwner(), and UpdateCompanyRoadInfrastructure().
Referenced by CmdConvertRoad().
|
static |
Should the road be drawn as a unpaved snow/desert road? By default, roads are always drawn as unpaved if they are on desert or above the snow line, but NewGRFs can override this for desert.
snow_or_desert | Is snowy or desert tile |
roadside | What sort of road this is |
Definition at line 1366 of file road_cmd.cpp.
References _settings_game, GameSettings::game_creation, HasGrfMiscBit(), GameCreationSettings::landscape, ROADSIDE_BARREN, ROADSIDE_GRASS, and ROADSIDE_GRASS_ROAD_WORKS.
Referenced by DrawTile_Road(), and GetRoadGroundSprite().
|
static |
Draw ground sprite and road pieces.
ti | TileInfo |
Definition at line 1623 of file road_cmd.cpp.
References _display_opt, DO_FULL_DETAIL, DrawFoundation(), DrawGroundSprite(), DrawGroundSpriteAt(), DrawRoadCatenary(), DrawRoadDetail(), DrawRoadGroundSprites(), DRD_NONE, GetBridgeHeight(), GetCustomRoadSprite(), GetDisallowedRoadDirections(), GetNorthernBridgeEnd(), GetPartialPixelZ(), GetRoadBits(), GetRoadFoundation(), GetRoadside(), GetRoadTypeInfo(), GetTileMaxZ(), HasAtMostOneBit(), HasBit(), HasRoadWorks(), INVALID_ROADTYPE, IsBridgeAbove(), IsInvisibilitySet(), IsOnSnow(), IsTransparencySet(), ROAD_X, ROADSIDE_STREET_LIGHTS, ROADSIDE_TREES, ROTSG_ONEWAY, SLOPE_FLAT, SLOPE_NE, SLOPE_NW, SLOPE_SE, SLOPE_SW, SPR_ONEWAY_BASE, TileInfo::tile, TileInfo::tileh, TO_HOUSES, TO_TREES, and ZOOM_LVL_DETAIL.
Referenced by DrawTile_Road().
void DrawRoadCatenary | ( | const TileInfo * | ti | ) |
Draws the catenary for the given tile.
ti | information about the tile (slopes, height etc) |
Definition at line 1451 of file road_cmd.cpp.
References AXIS_X, AXIS_Y, DiagDirToRoadBits(), DrawRoadTypeCatenary(), GetBayRoadStopDir(), GetCrossingRailAxis(), GetDriveThroughStopAxis(), GetRoadBits(), HasRoadCatenaryDrawn(), INVALID_ROADTYPE, IsAnyRoadStop(), IsDriveThroughStopTile(), IsLevelCrossing(), IsNormalRoad(), IsTileType(), MP_ROAD, MP_STATION, ROAD_NONE, ROAD_X, ROAD_Y, and TileInfo::tile.
Referenced by DrawRoadBits(), and DrawTile_Road().
void DrawRoadDepotSprite | ( | int | x, |
int | y, | ||
DiagDirection | dir, | ||
RoadType | rt | ||
) |
Draw the road depot sprite.
x | The x offset to draw at. |
y | The y offset to draw at. |
dir | The direction the depot must be facing. |
rt | The road type of the depot to draw. |
Definition at line 1875 of file road_cmd.cpp.
References _loaded_newgrf_features, _local_company, DiagDirToRoadBits(), DrawRailTileSeqInGUI(), DrawSprite(), RoadTypeInfo::flags, GetCustomRoadSprite(), GetRoadSpriteOffset(), GetRoadTypeInfo(), DrawTileSprites::ground, HasBit(), INVALID_TILE, ROTF_CATENARY, ROTSG_DEPOT, ROTSG_OVERLAY, SLOPE_FLAT, PalSpriteID::sprite, GRFLoadedFeatures::tram, and TRAMWAY_REPLACE_DEPOT_WITH_TRACK.
Referenced by BuildRoadDepotWindow::DrawWidget().
|
static |
Draws details on/around the road.
img | the sprite to draw |
ti | the tile to draw on |
dx | the offset from the top of the BB of the tile |
dy | the offset from the top of the BB of the tile |
h | the height of the sprite to draw |
transparent | whether the sprite should be transparent (used for roadside trees) |
Definition at line 1497 of file road_cmd.cpp.
References AddSortableSpriteToDraw(), GetSlopePixelZ(), SLOPE_FLAT, TileInfo::tileh, TileInfo::x, TileInfo::y, and TileInfo::z.
Referenced by DrawRoadBits().
void DrawRoadGroundSprites | ( | const TileInfo * | ti, |
RoadBits | road, | ||
RoadBits | tram, | ||
const RoadTypeInfo * | road_rti, | ||
const RoadTypeInfo * | tram_rti, | ||
Roadside | roadside, | ||
bool | snow_or_desert | ||
) |
Draw road ground sprites.
ti | TileInfo |
road | Road bits |
tram | Tram bits |
road_rti | Road road type information |
tram_rti | Tram road type information |
roadside | Roadside type |
snow_or_desert | Whether to draw snow/desert ground sprites |
Definition at line 1605 of file road_cmd.cpp.
References DrawGroundSprite(), DrawRoadOverlays(), GetRoadGroundSprite(), GetRoadSpriteOffset(), ROAD_NONE, and TileInfo::tileh.
Referenced by DrawRoadBits().
void DrawRoadOverlays | ( | const TileInfo * | ti, |
PaletteID | pal, | ||
const RoadTypeInfo * | road_rti, | ||
const RoadTypeInfo * | tram_rti, | ||
uint | road_offset, | ||
uint | tram_offset, | ||
bool | draw_underlay | ||
) |
Draw road underlay and overlay sprites.
ti | TileInfo |
road_rti | Road road type information |
tram_rti | Tram road type information |
road_offset | Road sprite offset (based on road bits) |
tram_offset | Tram sprite offset (based on road bits) |
draw_underlay | Whether to draw underlays |
Definition at line 1515 of file road_cmd.cpp.
References DrawGroundSprite(), GetCustomRoadSprite(), ROTSG_GROUND, ROTSG_OVERLAY, and TileInfo::tile.
Referenced by DrawRoadGroundSprites(), DrawTile_Road(), and DrawTile_TunnelBridge().
Draws the catenary for the RoadType of the given tile.
ti | information about the tile (slopes, height etc) |
rt | road type to draw catenary for |
rb | the roadbits for the tram |
< big number compared to sprite size
Definition at line 1379 of file road_cmd.cpp.
References AddSortableSpriteToDraw(), BB_HEIGHT_UNDER_BRIDGE, CountBits(), DIAGDIR_BEGIN, DIAGDIR_END, DiagDirToRoadBits(), GetBridgeHeight(), GetCustomRoadSprite(), GetNorthernBridgeEnd(), GetRoadOwner(), GetRoadSpriteOffset(), GetRoadTypeInfo(), GetSlopePixelZInCorner(), GetTileMaxZ(), HasRoadCatenary(), INVALID_ROADTYPE, IsBridgeAbove(), IsTransparencySet(), MayHaveRoad(), OWNER_NONE, OWNER_TOWN, ROAD_NONE, ROTSG_CATENARY_BACK, ROTSG_CATENARY_FRONT, SLOPE_FLAT, SPR_TRAMWAY_BASE, TileInfo::tile, TILE_HEIGHT, TileAddByDiagDir(), TileInfo::tileh, TO_CATENARY, TileInfo::x, TileInfo::y, and TileInfo::z.
Referenced by DrawRoadCatenary().
|
static |
Tile callback function for rendering a road tile to the screen.
Definition at line 1704 of file road_cmd.cpp.
References _loaded_newgrf_features, _settings_client, AXIS_Y, AxisToDiagDir(), RailTypeInfo::base_sprites, RailTypeInfo::crossing, DIAGDIR_NE, DIAGDIR_NW, DIAGDIR_SE, DIAGDIR_SW, DiagDirToRoadBits(), DrawBridgeMiddle(), DrawFoundation(), DrawGroundSprite(), DrawRailCatenary(), DrawRailTileSeq(), DrawRoadAsSnowDesert(), DrawRoadBits(), DrawRoadCatenary(), DrawRoadOverlays(), RoadTypeInfo::flags, FOUNDATION_LEVELED, GetCrossingRailAxis(), GetCrossingRoadAxis(), GetCustomRailSprite(), GetCustomRoadSprite(), GetRailType(), GetRailTypeInfo(), GetRoadDepotDirection(), GetRoadside(), GetRoadSpriteOffset(), GetRoadTileType(), GetRoadTypeInfo(), GetTileOwner(), DrawTileSprites::ground, ClientSettings::gui, HasBit(), HasCrossingReservation(), HasRailCatenaryDrawn(), INVALID_ROADTYPE, IsCrossingBarred(), IsLevelCrossingTile(), IsOnSnow(), PALETTE_CRASH, PALETTE_TO_BARE_LAND, ReverseDiagDir(), ROAD_TILE_CROSSING, ROAD_TILE_DEPOT, ROAD_TILE_NORMAL, ROADSIDE_BARREN, ROADSIDE_GRASS, ROTF_CATENARY, ROTSG_DEPOT, ROTSG_OVERLAY, RTSG_CROSSING, SetBit(), GUISettings::show_track_reservation, RailTypeInfo::single_x, RailTypeInfo::single_y, Map::Size(), SLOPE_FLAT, PalSpriteID::sprite, TileInfo::tile, TileAddByDiagDir(), TileInfo::tileh, TO_BUILDINGS, TO_CATENARY, GRFLoadedFeatures::tram, and TRAMWAY_REPLACE_DEPOT_WITH_TRACK.
|
static |
Definition at line 1949 of file road_cmd.cpp.
|
static |
Get the foundationtype of a RoadBits Slope combination.
tileh | The Slope part |
bits | The RoadBits part |
Definition at line 1301 of file road_cmd.cpp.
References _invalid_tileh_slopes_road, FOUNDATION_INCLINED_X, FOUNDATION_INCLINED_Y, FOUNDATION_LEVELED, FOUNDATION_NONE, GetHighestSlopeCorner(), IsSlopeWithOneCornerRaised(), IsSteepSlope(), ROAD_NONE, ROAD_X, SLOPE_FLAT, and SlopeWithOneCornerRaised().
Referenced by CheckRoadSlope(), CmdBuildRoad(), DrawRoadBits(), and RemoveRoad().
|
static |
Get ground sprite to draw for a road tile.
ti | TileInof | |
roadside | Road side type | |
rti | Road type info | |
offset | Road sprite offset | |
snow_or_desert | Whether to get snow/desert ground sprite | |
[out] | pal | Palette to draw. |
Definition at line 1562 of file road_cmd.cpp.
References DrawRoadAsSnowDesert(), PALETTE_TO_BARE_LAND, ROADSIDE_BARREN, ROADSIDE_GRASS, ROADSIDE_GRASS_ROAD_WORKS, SlopeToSpriteOffset(), and TileInfo::tileh.
Referenced by DrawRoadGroundSprites().
Get the sprite offset within a spritegroup.
slope | Slope |
bits | Roadbits |
Definition at line 1336 of file road_cmd.cpp.
References SLOPE_FLAT, SLOPE_NE, SLOPE_NW, SLOPE_SE, and SLOPE_SW.
Referenced by DrawRoadDepotSprite(), DrawRoadGroundSprites(), DrawRoadTypeCatenary(), and DrawTile_Road().
|
static |
Definition at line 1934 of file road_cmd.cpp.
Definition at line 2183 of file road_cmd.cpp.
|
static |
Definition at line 2108 of file road_cmd.cpp.
void InitRoadTypes | ( | ) |
Resolve sprites of custom road types.
Definition at line 114 of file road_cmd.cpp.
References CompareRoadTypes(), RoadTypeInfo::flags, HasBit(), ROADTYPE_BEGIN, ROADTYPE_END, ROTF_HIDDEN, and SetBit().
Referenced by AfterLoadGRFs().
|
static |
Delete a piece of road.
tile | tile where to remove road from |
flags | operation to perform |
pieces | roadbits to remove |
rt | roadtype to remove |
town_check | should we check if the town allows removal? |
Definition at line 325 of file road_cmd.cpp.
References _current_company, _invalid_tileh_slopes_road, _settings_game, CommandCost::AddCost(), AxisToRoadBits(), ConstructionSettings::build_on_slopes, CalcClosestTownFromTile(), CheckAllowRemoveRoad(), CMD_ERROR, ComplementRoadBits(), GameSettings::construction, CountBits(), DC_EXEC, DiagDirToAxis(), DirtyCompanyInfrastructureWindows(), DRD_NONE, EnsureNoVehicleOnGround(), EXPENSES_CONSTRUCTION, CommandCost::Failed(), FOUNDATION_NONE, GetCrossingRailBits(), GetCrossingRailTrack(), GetCrossingRoadAxis(), GetCrossingRoadBits(), GetHighestSlopeCorner(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), GetOtherTunnelBridgeEnd(), GetRailType(), GetRoadBits(), GetRoadFoundation(), GetRoadOwner(), GetRoadTileType(), GetTileOwner(), GetTileSlope(), GetTileType(), GetTunnelBridgeDirection(), GetTunnelBridgeLength(), GetTunnelBridgeTransportType(), HasCrossingReservation(), HasRoadWorks(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Company::infrastructure, INVALID_ROADTYPE, IsBridge(), IsDriveThroughStopTile(), IsRoadOwner(), IsSteepSlope(), IsStraightRoad(), IsTileOwner(), IsTileType(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::Iterate(), LEVELCROSSING_TRACKBIT_FACTOR, MarkBridgeDirty(), MarkTileDirtyByTile(), MayHaveRoad(), MirrorRoadBits(), MP_ROAD, MP_STATION, MP_TUNNELBRIDGE, OWNER_TOWN, OWNER_WATER, CompanyInfrastructure::rail, ROAD_NONE, ROAD_TILE_CROSSING, ROAD_TILE_DEPOT, ROAD_TILE_NORMAL, RoadClearCost(), SetDisallowedRoadDirections(), SetRoadBits(), SetRoadType(), SetTileOwner(), SetTownIndex(), SetTrackReservation(), SLOPE_ELEVATED, SLOPE_FLAT, SlopeWithOneCornerRaised(), TileVirtXY(), TRANSPORT_ROAD, TUNNELBRIDGE_TRACKBIT_FACTOR, TunnelBridgeIsFree(), UpdateAdjacentLevelCrossingTilesOnLevelCrossingRemoval(), UpdateCompanyRoadInfrastructure(), and YapfNotifyTrackLayoutChange().
Referenced by CmdRemoveLongRoad().
|
static |
Definition at line 1207 of file road_cmd.cpp.
void ResetRoadTypes | ( | ) |
Reset all road type information to its default values.
Definition at line 67 of file road_cmd.cpp.
References _original_roadtypes, _roadtypes_type, lengthof, ROADTYPES_NONE, and ROADTYPES_TRAM.
Referenced by ResetNewGRFData().
void ResolveRoadTypeGUISprites | ( | RoadTypeInfo * | rti | ) |
Definition at line 78 of file road_cmd.cpp.
bool RoadVehiclesAreBuilt | ( | ) |
Verify whether a road vehicle is available.
true
if at least one road vehicle is available, false
if not Definition at line 179 of file road_cmd.cpp.
References SpecializedVehicle< T, Type >::Iterate().
Referenced by CheckRoadSide().
|
static |
Definition at line 2338 of file road_cmd.cpp.
|
static |
Definition at line 1979 of file road_cmd.cpp.
Update road infrastructure counts for a company.
rt | Road type to update count of. |
o | Owner of road piece. |
count | Number of road pieces to adjust. |
Definition at line 190 of file road_cmd.cpp.
References DirtyCompanyInfrastructureWindows(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Company::infrastructure, INVALID_ROADTYPE, and CompanyInfrastructure::road.
Referenced by CmdBuildRoad(), CmdBuildRoadDepot(), CmdBuildRoadStop(), CmdBuildRoadWaypoint(), ConvertRoadTypeOwner(), DoClearBridge(), DoClearTunnel(), RemoveGenericRoadStop(), RemoveRoad(), RemoveRoadStop(), and RemoveRoadWaypointStop().
void UpdateNearestTownForRoadTiles | ( | bool | invalidate | ) |
Updates cached nearest town for all road tiles.
invalidate | are we just invalidating cached data? |
Definition at line 1918 of file road_cmd.cpp.
References _generating_world, CalcClosestTownFromTile(), HasTownOwnedRoad(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, IsRoadDepot(), IsTileType(), Map::Iterate(), MP_ROAD, and SetTownIndex().
Referenced by AfterLoadGame(), CmdFoundTown(), FoundTownWindow::OnClick(), and Town::PostDestructor().
Update power of road vehicle under which is the roadtype being converted.
Definition at line 2378 of file road_cmd.cpp.
References SpecializedVehicle< T, Type >::From(), include(), BaseVehicle::type, and VEH_ROAD.
Referenced by CmdConvertRoad().
|
static |
Definition at line 2257 of file road_cmd.cpp.
|
static |
Invalid RoadBits on slopes.
Definition at line 202 of file road_cmd.cpp.
Referenced by CheckRoadSlope(), GetRoadFoundation(), and RemoveRoad().
const uint8_t _road_sloped_sprites[14] |
Definition at line 1323 of file road_cmd.cpp.
|
static |
Definition at line 2172 of file road_cmd.cpp.
|
static |
Definition at line 2089 of file road_cmd.cpp.
RoadTypeInfo _roadtypes[ROADTYPE_END] |
Definition at line 54 of file road_cmd.cpp.
RoadTypes _roadtypes_hidden_mask |
Definition at line 56 of file road_cmd.cpp.
RoadTypes _roadtypes_type |
Bitmap of road/tram types.
Bit if set if a roadtype is tram.
Definition at line 62 of file road_cmd.cpp.
Referenced by AllocateRoadType(), ScenarioEditorToolbarWindow::OnPaint(), ResetRoadTypes(), and BuildRoadToolbarWindow::RoadTramToolbarGlobalHotkeys().
|
static |
Given the direction the road depot is pointing, this is the direction the vehicle should be travelling in in order to enter the depot.
Definition at line 2253 of file road_cmd.cpp.
std::vector<RoadType> _sorted_roadtypes |
Definition at line 55 of file road_cmd.cpp.
|
extern |
Tile callback functions for road tiles.
Definition at line 50 of file landscape.cpp.
|
static |
Definition at line 1958 of file road_cmd.cpp.
|
static |
Definition at line 1968 of file road_cmd.cpp.