roadveh_cmd.cpp File Reference

Handling of road vehicles. More...

#include "stdafx.h"
#include "roadveh.h"
#include "command_func.h"
#include "news_func.h"
#include "pathfinder/npf/npf_func.h"
#include "station_base.h"
#include "company_func.h"
#include "vehicle_gui.h"
#include "articulated_vehicles.h"
#include "newgrf_sound.h"
#include "pathfinder/yapf/yapf.h"
#include "strings_func.h"
#include "tunnelbridge_map.h"
#include "window_func.h"
#include "date_func.h"
#include "vehicle_func.h"
#include "sound_func.h"
#include "ai/ai.hpp"
#include "depot_map.h"
#include "effectvehicle_func.h"
#include "roadstop_base.h"
#include "spritecache.h"
#include "core/random_func.hpp"
#include "company_base.h"
#include "core/backup_type.hpp"
#include "table/strings.h"
#include "table/roadveh_movement.h"

Go to the source code of this file.

Data Structures

struct  RoadVehFindData
struct  OvertakeData
struct  RoadDriveEntry

Defines

#define MKIT(a, b, c, d)   ((a & 0xFF) << 24) | ((b & 0xFF) << 16) | ((c & 0xFF) << 8) | ((d & 0xFF) << 0)
#define return_track(x)   { best_track = (Trackdir)x; goto found_best_track; }

Functions

static SpriteID GetRoadVehIcon (EngineID engine)
void DrawRoadVehEngine (int left, int right, int preferred_x, int y, EngineID engine, PaletteID pal)
 Draw a road vehicle engine.
static uint GetRoadVehLength (const RoadVehicle *v)
 Get length of a road vehicle.
void RoadVehUpdateCache (RoadVehicle *v)
 Update the cache of a road vehicle.
CommandCost CmdBuildRoadVehicle (TileIndex tile, DoCommandFlag flags, const Engine *e, uint16 data, Vehicle **ret)
 Build a road vehicle.
static FindDepotData FindClosestRoadDepot (const RoadVehicle *v, int max_distance)
CommandCost CmdTurnRoadVeh (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
 Turn a roadvehicle around.
static void DeleteLastRoadVeh (RoadVehicle *v)
 Delete last vehicle of a chain road vehicles.
static void RoadVehSetRandomDirection (RoadVehicle *v)
static bool RoadVehIsCrashed (RoadVehicle *v)
 Road vehicle chain has crashed.
static VehicleEnumCheckRoadVehCrashTrain (Vehicle *v, void *data)
 Check routine whether a road and a train vehicle have collided.
static void RoadVehCrash (RoadVehicle *v)
static bool RoadVehCheckTrainCrash (RoadVehicle *v)
static void StartRoadVehSound (const RoadVehicle *v)
static VehicleEnumCheckRoadVehClose (Vehicle *v, void *data)
static RoadVehicleRoadVehFindCloseTo (RoadVehicle *v, int x, int y, Direction dir, bool update_blocked_ctr=true)
static void RoadVehArrivesAt (const RoadVehicle *v, Station *st)
 A road vehicle arrives at a station.
static Direction RoadVehGetNewDirection (const RoadVehicle *v, int x, int y)
static Direction RoadVehGetSlidingDirection (const RoadVehicle *v, int x, int y)
static VehicleEnumFindVehBlockingOvertake (Vehicle *v, void *data)
static bool CheckRoadBlockedForOvertaking (OvertakeData *od)
 Check if overtaking is possible on a piece of track.
static void RoadVehCheckOvertake (RoadVehicle *v, RoadVehicle *u)
static void RoadZPosAffectSpeed (RoadVehicle *v, byte old_z)
static int PickRandomBit (uint bits)
static Trackdir RoadFindPathToDest (RoadVehicle *v, TileIndex tile, DiagDirection enterdir)
 Returns direction to for a road vehicle to take or INVALID_TRACKDIR if the direction is currently blocked.
static bool RoadVehLeaveDepot (RoadVehicle *v, bool first)
static Trackdir FollowPreviousRoadVehicle (const RoadVehicle *v, const RoadVehicle *prev, TileIndex tile, DiagDirection entry_dir, bool already_reversed)
static bool CanBuildTramTrackOnTile (CompanyID c, TileIndex t, RoadBits r)
 Can a tram track build without destruction on the given tile?
static bool IndividualRoadVehicleController (RoadVehicle *v, const RoadVehicle *prev)
static bool RoadVehController (RoadVehicle *v)
static void CheckIfRoadVehNeedsService (RoadVehicle *v)

Variables

static const uint16 _roadveh_images [63]
static const uint16 _roadveh_full_adder [63]
static const TrackdirBits _road_enter_dir_to_reachable_trackdirs [DIAGDIR_END]
 'Convert' the DiagDirection where a road vehicle enters to the trackdirs it can drive onto
static const Trackdir _road_reverse_table [DIAGDIR_END]
static const Trackdir _roadveh_depot_exit_trackdir [DIAGDIR_END]
 Converts the exit direction of a depot to trackdir the vehicle is going to drive to.

Detailed Description

Handling of road vehicles.

Definition in file roadveh_cmd.cpp.


Function Documentation

static bool CanBuildTramTrackOnTile ( CompanyID  c,
TileIndex  t,
RoadBits  r 
) [static]

Can a tram track build without destruction on the given tile?

Parameters:
c the company that would be building the tram tracks
t the tile to build on.
r the road bits needed.
Returns:
true when a track track can be build on 't'

Definition at line 1052 of file roadveh_cmd.cpp.

References _current_company, CMD_BUILD_ROAD, DC_NONE, DoCommand(), Backup< T >::Restore(), ROADTYPE_TRAM, and CommandCost::Succeeded().

static bool CheckRoadBlockedForOvertaking ( OvertakeData od  )  [static]

Check if overtaking is possible on a piece of track.

Parameters:
od Information about the tile and the involved vehicles
Returns:
true if we have to abort overtaking

Definition at line 740 of file roadveh_cmd.cpp.

References GetTileTrackStatus(), HasBit(), HasVehicleOnPos(), TRACK_BIT_CROSS, TRACKDIR_BIT_NONE, TrackdirBitsToTrackBits(), TrackStatusToRedSignals(), TrackStatusToTrackdirBits(), and TRANSPORT_ROAD.

CommandCost CmdBuildRoadVehicle ( TileIndex  tile,
DoCommandFlag  flags,
const Engine e,
uint16  data,
Vehicle **  ret 
)

Build a road vehicle.

Parameters:
tile tile of the depot where road vehicle is built.
flags type of operation.
e the engine to build.
data unused.
ret[out] the vehicle that has been built.
Returns:
the cost of this operation or an error.

Definition at line 225 of file roadveh_cmd.cpp.

References _cur_year, _current_company, _date, _settings_game, AddArticulatedParts(), Vehicle::build_year, GroundVehicleCache::cached_veh_length, Vehicle::cargo_cap, Vehicle::cargo_type, GroundVehicle< T, Type >::CargoChanged(), CheckConsistencyOfArticulatedVehicle(), Vehicle::cur_image, Vehicle::date_of_last_service, DC_EXEC, DiagDirToDir(), Vehicle::direction, EF_ROAD_TRAM, ENGINE_EXCLUSIVE_PREVIEW, Vehicle::engine_type, GroundVehicleCache::first_engine, Engine::flags, GroundVehicle< T, Type >::gcache, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), Engine::GetDefaultCargoType(), Engine::GetLifeLengthInDays(), GetRoadDepotDirection(), GetVehicleCapacity(), HasBit(), HasTileRoadType(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, INVALID_ENGINE, Vehicle::InvalidateNewGRFCache(), Vehicle::InvalidateNewGRFCacheOfChain(), Vehicle::last_station_visited, Vehicle::max_age, EngineInfo::misc_flags, SpecializedVehicle< T, Type >::Next(), Vehicle::owner, Vehicle::random_bits, Engine::reliability, Vehicle::reliability, Engine::reliability_spd_dec, Vehicle::reliability_spd_dec, return_cmd_error, ROADTYPE_ROAD, ROADTYPE_TRAM, RoadTypeToRoadTypes(), VehicleSettings::roadveh_acceleration_model, RoadVehUpdateCache(), RVSB_IN_DEPOT, Vehicle::service_interval, SetBit(), GroundVehicle< T, Type >::SetFrontEngine(), Vehicle::spritenum, RoadVehicle::state, Vehicle::tile, TILE_SIZE, TileX(), TileY(), GameSettings::vehicle, Vehicle::vehicle_flags, VEHICLE_LENGTH, VehicleMove(), VehicleRandomBits(), Vehicle::vehstatus, VF_BUILT_AS_PROTOTYPE, VS_DEFPAL, VS_HIDDEN, VS_STOPPED, Vehicle::x_pos, Vehicle::y_pos, and Vehicle::z_pos.

Referenced by CmdBuildVehicle().

CommandCost CmdTurnRoadVeh ( TileIndex  tile,
DoCommandFlag  flags,
uint32  p1,
uint32  p2,
const char *  text 
)
static void DeleteLastRoadVeh ( RoadVehicle v  )  [static]

Delete last vehicle of a chain road vehicles.

Parameters:
v First roadvehicle.

Definition at line 427 of file roadveh_cmd.cpp.

References RoadStop::GetByTile(), GetRoadStopType(), IsInsideMM(), RoadStop::Leave(), SpecializedVehicle< T, Type >::Next(), RVSB_IN_ROAD_STOP, Vehicle::SetNext(), RoadVehicle::state, and Vehicle::tile.

Referenced by RoadVehIsCrashed().

void DrawRoadVehEngine ( int  left,
int  right,
int  preferred_x,
int  y,
EngineID  engine,
PaletteID  pal 
)

Draw a road vehicle engine.

Parameters:
left Left edge to draw within.
right Right edge to draw within.
preferred_x Preferred position of the engine.
y Vertical position of the engine.
engine Engine to draw
pal Palette to use.

Definition at line 149 of file roadveh_cmd.cpp.

References Clamp(), DrawSprite(), ST_NORMAL, Sprite::width, and Sprite::x_offs.

Referenced by DrawVehicleEngine().

static Vehicle* EnumCheckRoadVehCrashTrain ( Vehicle v,
void *  data 
) [static]

Check routine whether a road and a train vehicle have collided.

Parameters:
v Train vehicle to test.
data Road vehicle to test.
Returns:
Train vehicle if the vehicles collided, else NULL.

Definition at line 480 of file roadveh_cmd.cpp.

References abs(), BaseVehicle::type, VEH_TRAIN, Vehicle::x_pos, Vehicle::y_pos, and Vehicle::z_pos.

static uint GetRoadVehLength ( const RoadVehicle v  )  [static]

Get length of a road vehicle.

Parameters:
v Road vehicle to query length.
Returns:
Length of the given road vehicle.

Definition at line 162 of file roadveh_cmd.cpp.

References CALLBACK_FAILED, CBID_VEHICLE_LENGTH, Clamp(), Vehicle::engine_type, GetVehicleCallback(), and VEHICLE_LENGTH.

Referenced by RoadVehUpdateCache().

static Trackdir RoadFindPathToDest ( RoadVehicle v,
TileIndex  tile,
DiagDirection  enterdir 
) [static]
static void RoadVehArrivesAt ( const RoadVehicle v,
Station st 
) [static]

A road vehicle arrives at a station.

If it is the first time, create a news item.

Parameters:
v Road vehicle that arrived.
st Station where the road vehicle arrived.

Definition at line 644 of file roadveh_cmd.cpp.

References _local_company, AddVehicleNewsItem(), HVOT_BUS, HVOT_TRUCK, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, RoadVehicle::IsBus(), AI::NewEvent(), NS_ARRIVAL_COMPANY, NS_ARRIVAL_OTHER, Vehicle::owner, ROADTYPE_ROAD, and SetDParam().

static bool RoadVehIsCrashed ( RoadVehicle v  )  [static]

Road vehicle chain has crashed.

Parameters:
v First roadvehicle.
Returns:
whether the chain still exists.

Definition at line 458 of file roadveh_cmd.cpp.

References RoadVehicle::crashed_ctr, CreateEffectVehicleRel(), DeleteLastRoadVeh(), SpecializedVehicle< T, Type >::Next(), and Vehicle::tick_counter.

void RoadVehUpdateCache ( RoadVehicle v  ) 

Variable Documentation

Initial value:

'Convert' the DiagDirection where a road vehicle enters to the trackdirs it can drive onto

Definition at line 63 of file roadveh_cmd.cpp.

Referenced by RoadFindPathToDest().

const Trackdir _road_reverse_table[DIAGDIR_END] [static]
Initial value:

Definition at line 70 of file roadveh_cmd.cpp.

const Trackdir _roadveh_depot_exit_trackdir[DIAGDIR_END] [static]
Initial value:

Converts the exit direction of a depot to trackdir the vehicle is going to drive to.

Definition at line 75 of file roadveh_cmd.cpp.

const uint16 _roadveh_full_adder[63] [static]
Initial value:
 {
   0,  88,   0,   0,   0,   0,  48,  48,
  48,  48,   0,   0,  64,  64,   0,  16,
  16,   0,  88,   0,   0,   0,   0,  48,
  48,  48,  48,   0,   0,  64,  64,   0,
  16,  16,   0,  88,   0,   0,   0,   0,
  48,  48,  48,  48,   0,   0,  64,  64,
   0,  16,  16,   0,   8,   8,   8,   8,
   0,   0,   0,   8,   8,   8,   8
}

Definition at line 51 of file roadveh_cmd.cpp.

const uint16 _roadveh_images[63] [static]
Initial value:
 {
  0xCD4, 0xCDC, 0xCE4, 0xCEC, 0xCF4, 0xCFC, 0xD0C, 0xD14,
  0xD24, 0xD1C, 0xD2C, 0xD04, 0xD1C, 0xD24, 0xD6C, 0xD74,
  0xD7C, 0xC14, 0xC1C, 0xC24, 0xC2C, 0xC34, 0xC3C, 0xC4C,
  0xC54, 0xC64, 0xC5C, 0xC6C, 0xC44, 0xC5C, 0xC64, 0xCAC,
  0xCB4, 0xCBC, 0xD94, 0xD9C, 0xDA4, 0xDAC, 0xDB4, 0xDBC,
  0xDCC, 0xDD4, 0xDE4, 0xDDC, 0xDEC, 0xDC4, 0xDDC, 0xDE4,
  0xE2C, 0xE34, 0xE3C, 0xC14, 0xC1C, 0xC2C, 0xC3C, 0xC4C,
  0xC5C, 0xC64, 0xC6C, 0xC74, 0xC84, 0xC94, 0xCA4
}

Definition at line 40 of file roadveh_cmd.cpp.


Generated on Sun May 8 07:30:30 2011 for OpenTTD by  doxygen 1.6.1