road_cmd.cpp File Reference

#include "stdafx.h"
#include "openttd.h"
#include "bridge_map.h"
#include "bridge.h"
#include "cmd_helper.h"
#include "rail_map.h"
#include "road_map.h"
#include "road_internal.h"
#include "sprite.h"
#include "tile_cmd.h"
#include "landscape.h"
#include "town_map.h"
#include "viewport_func.h"
#include "command_func.h"
#include "town.h"
#include "yapf/yapf.h"
#include "depot.h"
#include "newgrf.h"
#include "station_map.h"
#include "tunnel_map.h"
#include "variables.h"
#include "autoslope.h"
#include "transparency.h"
#include "tunnelbridge_map.h"
#include "window_func.h"
#include "strings_func.h"
#include "vehicle_func.h"
#include "vehicle_base.h"
#include "sound_func.h"
#include "road_func.h"
#include "tunnelbridge.h"
#include "table/sprites.h"
#include "table/strings.h"
#include "table/road_land.h"

Go to the source code of this file.

Data Structures

struct  DrawRoadTileStruct

Defines

#define M(x)   (1 << (x))

Functions

Foundation GetRoadFoundation (Slope tileh, RoadBits bits)
bool CheckAllowRemoveRoad (TileIndex tile, RoadBits remove, Owner owner, bool *edge_road, RoadType rt)
 Is it allowed to remove the given road bits from the given tile?
static bool CheckAllowRemoveRoad (TileIndex tile, RoadBits remove, bool *edge_road, RoadType rt)
static CommandCost RemoveRoad (TileIndex tile, uint32 flags, RoadBits pieces, RoadType rt, bool crossing_check, bool town_check=true)
 Delete a piece of road.
CommandCost CmdRemoveRoad (TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 Delete a piece of road.
static CommandCost CheckRoadSlope (Slope tileh, RoadBits *pieces, RoadBits existing)
 Calculate the costs for roads on slopes Aside modify the RoadBits to fit on the slopes.
CommandCost CmdBuildRoad (TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 Build a piece of road.
CommandCost CmdBuildLongRoad (TileIndex end_tile, uint32 flags, uint32 p1, uint32 p2)
 Build a long piece of road.
CommandCost CmdRemoveLongRoad (TileIndex end_tile, uint32 flags, uint32 p1, uint32 p2)
 Remove a long piece of road.
CommandCost CmdBuildRoadDepot (TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 Build a road depot.
static CommandCost RemoveRoadDepot (TileIndex tile, uint32 flags)
static CommandCost ClearTile_Road (TileIndex tile, byte flags)
static bool AlwaysDrawUnpavedRoads (TileIndex tile, Roadside roadside)
 Whether to draw unpaved roads regardless of the town zone.
void DrawTramCatenary (TileInfo *ti, RoadBits tram)
 Draws the catenary for the given tile.
static void DrawRoadDetail (SpriteID img, TileInfo *ti, int dx, int dy, int h)
 Draws details on/around the road.
static void DrawRoadBits (TileInfo *ti)
 Draw ground sprite and road pieces.
static void DrawTile_Road (TileInfo *ti)
void DrawRoadDepotSprite (int x, int y, DiagDirection dir, RoadType rt)
static uint GetSlopeZ_Road (TileIndex tile, uint x, uint y)
static Foundation GetFoundation_Road (TileIndex tile, Slope tileh)
static void GetAcceptedCargo_Road (TileIndex tile, AcceptedCargo ac)
static void AnimateTile_Road (TileIndex tile)
static void TileLoop_Road (TileIndex tile)
static void 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 x, int y)
static void ChangeTileOwner_Road (TileIndex tile, PlayerID old_player, PlayerID new_player)
static CommandCost TerraformTile_Road (TileIndex tile, uint32 flags, uint z_new, Slope tileh_new)

Variables

static const uint32 VALID_LEVEL_CROSSING_SLOPES = (M(SLOPE_SEN) | M(SLOPE_ENW) | M(SLOPE_NWS) | M(SLOPE_NS) | M(SLOPE_WSE) | M(SLOPE_EW) | M(SLOPE_FLAT))
static const RoadBits _valid_tileh_slopes_road [][15]
const byte _road_sloped_sprites [14]
static const Roadside _town_road_types [][2]
static const Roadside _town_road_types_2 [][2]
static const byte _road_trackbits [16]
static const StringID _road_tile_strings []
static const byte _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


Detailed Description

Definition in file road_cmd.cpp.


Function Documentation

static bool AlwaysDrawUnpavedRoads ( TileIndex  tile,
Roadside  roadside 
) [static]

Whether to draw unpaved roads regardless of the town zone.

By default, OpenTTD always draws roads as unpaved if they are on a desert tile or above the snowline. Newgrf files, however, can set a bit that allows paved roads to be built on desert tiles as they would be on grassy tiles.

Parameters:
tile The tile the road is on
roadside What sort of road this is
Returns:
True if the road should be drawn unpaved regardless of the roadside.

Definition at line 955 of file road_cmd.cpp.

Referenced by DrawRoadBits().

bool CheckAllowRemoveRoad ( TileIndex  tile,
RoadBits  remove,
Owner  owner,
bool *  edge_road,
RoadType  rt 
)

Is it allowed to remove the given road bits from the given tile?

Parameters:
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
edge_road are the removed bits from a town?
rt the road type to remove the bits from
Returns:
true when it is allowed to remove the road bits

Definition at line 47 of file road_cmd.cpp.

References GetAnyRoadBits(), OWNER_NONE, OWNER_TOWN, OWNER_WATER, ROAD_NE, ROAD_NONE, ROAD_NW, ROAD_SE, ROAD_SW, ROADTYPE_ROAD, and TILE_ADDXY.

Referenced by CanRemoveRoadWithStop(), and RemoveRoad().

static CommandCost CheckRoadSlope ( Slope  tileh,
RoadBits pieces,
RoadBits  existing 
) [static]

Calculate the costs for roads on slopes Aside modify the RoadBits to fit on the slopes.

Note:
The RoadBits are modified too!
Parameters:
tileh The current slope
pieces The RoadBits we want to add
existing The existent RoadBits
Returns:
The costs for these RoadBits on this slope

Definition at line 361 of file road_cmd.cpp.

References CMD_ERROR, CountBits(), IsSlopeWithOneCornerRaised(), IsSteepSlope(), MirrorRoadBits(), ROAD_NONE, ROAD_X, ROAD_Y, and SLOPE_FLAT.

Referenced by CmdBuildRoad().

CommandCost CmdBuildLongRoad ( TileIndex  end_tile,
uint32  flags,
uint32  p1,
uint32  p2 
)

Build a long piece of road.

Parameters:
end_tile end tile of drag
flags operation to perform
p1 start tile of drag
p2 various bitstuffed elements
  • p2 = (bit 0) - start tile starts in the 2nd half of tile (p2 & 1)
  • p2 = (bit 1) - end tile starts in the 2nd half of tile (p2 & 2)
  • p2 = (bit 2) - direction: 0 = along x-axis, 1 = along y-axis (p2 & 4)
  • p2 = (bit 3 + 4) - road type
  • p2 = (bit 5) - set road direction

Definition at line 649 of file road_cmd.cpp.

References CommandCost::AddCost(), CMD_BUILD_ROAD, CMD_ERROR, CmdFailed(), DIAGDIR_SE, DIAGDIR_SW, DoCommand(), DRD_BOTH, DRD_NONE, DRD_NORTHBOUND, DRD_SOUTHBOUND, GB(), GetTunnelBridgeDirection(), HasBit(), IsBridge(), IsInsideMM(), IsTileType(), IsValidRoadType(), MapSize(), MP_TUNNELBRIDGE, ROAD_NE, ROAD_NW, ROAD_SE, ROAD_SW, ROAD_X, ROAD_Y, TileDiffXY(), TileX(), and TileY().

CommandCost CmdBuildRoad ( TileIndex  tile,
uint32  flags,
uint32  p1,
uint32  p2 
)

CommandCost CmdBuildRoadDepot ( TileIndex  tile,
uint32  flags,
uint32  p1,
uint32  p2 
)

Build a road depot.

Parameters:
tile tile where to build the depot
flags operation to perform
p1 bit 0..1 entrance direction (DiagDirection) bit 2..3 road type
p2 unused
Todo:
When checking for the tile slope, distingush between "Flat land required" and "land sloped in wrong direction"

Definition at line 802 of file road_cmd.cpp.

References CommandCost::AddCost(), CanBuildDepotByTileh(), CMD_ERROR, CMD_LANDSCAPE_CLEAR, CmdFailed(), DC_EXEC, DoCommand(), GB(), IsBridgeAbove(), IsSteepSlope(), IsValidRoadType(), MarkTileDirtyByTile(), MayHaveBridgeAbove(), return_cmd_error, and SLOPE_FLAT.

CommandCost CmdRemoveLongRoad ( TileIndex  end_tile,
uint32  flags,
uint32  p1,
uint32  p2 
)

Remove a long piece of road.

Parameters:
end_tile end tile of drag
flags operation to perform
p1 start tile of drag
p2 various bitstuffed elements
  • p2 = (bit 0) - start tile starts in the 2nd half of tile (p2 & 1)
  • p2 = (bit 1) - end tile starts in the 2nd half of tile (p2 & 2)
  • p2 = (bit 2) - direction: 0 = along x-axis, 1 = along y-axis (p2 & 4)
  • p2 = (bit 3 + 4) - road type

Definition at line 735 of file road_cmd.cpp.

References CommandCost::AddCost(), CMD_ERROR, CMD_REMOVE_LONG_ROAD, CmdSucceeded(), DC_EXEC, DoCommand(), GB(), GetAvailableMoneyForCommand(), CommandCost::GetCost(), HasBit(), IsInsideMM(), IsValidRoadType(), MapSize(), RemoveRoad(), ROAD_NE, ROAD_NW, ROAD_SE, ROAD_SW, ROAD_X, ROAD_Y, TileDiffXY(), TileX(), and TileY().

CommandCost CmdRemoveRoad ( TileIndex  tile,
uint32  flags,
uint32  p1,
uint32  p2 
)

Delete a piece of road.

Parameters:
tile tile where to remove road from
flags operation to perform
p1 bit 0..3 road pieces to remove (RoadBits) bit 4..5 road type
p2 unused

Definition at line 271 of file road_cmd.cpp.

References CMD_ERROR, GB(), IsValidRoadType(), and RemoveRoad().

static void DrawRoadBits ( TileInfo *  ti  )  [static]

static void DrawRoadDetail ( SpriteID  img,
TileInfo *  ti,
int  dx,
int  dy,
int  h 
) [static]

Draws details on/around the road.

Parameters:
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

Definition at line 999 of file road_cmd.cpp.

References AddSortableSpriteToDraw(), and SLOPE_FLAT.

Referenced by DrawRoadBits().

void DrawTramCatenary ( TileInfo *  ti,
RoadBits  tram 
)

Draws the catenary for the given tile.

Draw the catenary for tram road bits.

Parameters:
ti information about the tile (slopes, height etc)
tram the roadbits for the tram

Definition at line 967 of file road_cmd.cpp.

References AddSortableSpriteToDraw(), BB_HEIGHT_UNDER_BRIDGE, GetBridgeHeight(), GetNorthernBridgeEnd(), IsBridgeAbove(), IsTransparencySet(), MayHaveBridgeAbove(), SLOPE_FLAT, TILE_HEIGHT, and TO_CATENARY.

Referenced by DrawRoadBits().

static CommandCost RemoveRoad ( TileIndex  tile,
uint32  flags,
RoadBits  pieces,
RoadType  rt,
bool  crossing_check,
bool  town_check = true 
) [static]


Variable Documentation

const byte _road_sloped_sprites[14]

Initial value:

 {
  0,  0,  2,  0,
  0,  1,  0,  0,
  3,  0,  0,  0,
  0,  0
}

Definition at line 938 of file road_cmd.cpp.

const StringID _road_tile_strings[] [static]

Initial value:

 {
  STR_1814_ROAD,
  STR_1814_ROAD,
  STR_1814_ROAD,
  STR_1815_ROAD_WITH_STREETLIGHTS,
  STR_1814_ROAD,
  STR_1816_TREE_LINED_ROAD,
  STR_1814_ROAD,
  STR_1814_ROAD,
}

Definition at line 1394 of file road_cmd.cpp.

const byte _road_trackbits[16] [static]

Initial value:

 {
  0x0, 0x0, 0x0, 0x10, 0x0, 0x2, 0x8, 0x1A, 0x0, 0x4, 0x1, 0x15, 0x20, 0x26, 0x29, 0x3F,
}

Definition at line 1338 of file road_cmd.cpp.

const byte _roadveh_enter_depot_dir[4] [static]

Initial value:

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 1419 of file road_cmd.cpp.

const TileTypeProcs _tile_type_road_procs

Initial value:

 {
  DrawTile_Road,           
  GetSlopeZ_Road,          
  ClearTile_Road,          
  GetAcceptedCargo_Road,   
  GetTileDesc_Road,        
  GetTileTrackStatus_Road, 
  ClickTile_Road,          
  AnimateTile_Road,        
  TileLoop_Road,           
  ChangeTileOwner_Road,    
  NULL,                    
  VehicleEnter_Road,       
  GetFoundation_Road,      
  TerraformTile_Road,      
}

const Roadside _town_road_types[][2] [static]

Initial value:

 {
  { ROADSIDE_GRASS,         ROADSIDE_GRASS },
  { ROADSIDE_PAVED,         ROADSIDE_PAVED },
  { ROADSIDE_PAVED,         ROADSIDE_PAVED },
  { ROADSIDE_TREES,         ROADSIDE_TREES },
  { ROADSIDE_STREET_LIGHTS, ROADSIDE_PAVED }
}

Definition at line 1231 of file road_cmd.cpp.

const Roadside _town_road_types_2[][2] [static]

Initial value:

 {
  { ROADSIDE_GRASS,         ROADSIDE_GRASS },
  { ROADSIDE_PAVED,         ROADSIDE_PAVED },
  { ROADSIDE_STREET_LIGHTS, ROADSIDE_PAVED },
  { ROADSIDE_STREET_LIGHTS, ROADSIDE_PAVED },
  { ROADSIDE_STREET_LIGHTS, ROADSIDE_PAVED }
}

Definition at line 1239 of file road_cmd.cpp.


Generated on Mon Sep 22 20:34:25 2008 for openttd by  doxygen 1.5.6