OpenTTD Source  20241121-master-g67a0fccfad
roadveh.h File Reference

Road vehicle states. More...

#include "ground_vehicle.hpp"
#include "engine_base.h"
#include "cargotype.h"
#include "track_func.h"
#include "road.h"
#include "road_map.h"
#include "newgrf_engine.h"

Go to the source code of this file.

Data Structures

struct  RoadVehPathElement
 Element of the RoadVehPathCache. More...
 
struct  RoadVehicle
 Buses, trucks and trams belong to this class. More...
 

Typedefs

using RoadVehPathCache = std::vector< RoadVehPathElement >
 

Enumerations

enum  RoadVehicleStates {
  RVSB_IN_DEPOT = 0xFE , RVSB_WORMHOLE = 0xFF , RVS_USING_SECOND_BAY = 1 , RVS_ENTERED_STOP = 2 ,
  RVS_DRIVE_SIDE = 4 , RVS_IN_ROAD_STOP = 5 , RVS_IN_DT_ROAD_STOP = 6 , RVSB_IN_ROAD_STOP = 1 << RVS_IN_ROAD_STOP ,
  RVSB_IN_ROAD_STOP_END = RVSB_IN_ROAD_STOP + TRACKDIR_END , RVSB_IN_DT_ROAD_STOP = 1 << RVS_IN_DT_ROAD_STOP , RVSB_IN_DT_ROAD_STOP_END = RVSB_IN_DT_ROAD_STOP + TRACKDIR_END , RVSB_DRIVE_SIDE = 1 << RVS_DRIVE_SIDE ,
  RVSB_TRACKDIR_MASK = 0x0F , RVSB_ROAD_STOP_TRACKDIR_MASK = 0x09
}
 Road vehicle states. More...
 

Functions

void RoadVehUpdateCache (RoadVehicle *v, bool same_length=false)
 Update the cache of a road vehicle. More...
 
void GetRoadVehSpriteSize (EngineID engine, uint &width, uint &height, int &xoffs, int &yoffs, EngineImageType image_type)
 Get the size of the sprite of a road vehicle sprite heading west (used for lists). More...
 

Variables

static const uint RDE_NEXT_TILE = 0x80
 State information about the Road Vehicle controller. More...
 
static const uint RDE_TURNED = 0x40
 We just finished turning.
 
static const uint RVC_DEFAULT_START_FRAME = 0
 
static const uint RVC_TURN_AROUND_START_FRAME = 1
 
static const uint RVC_DEPOT_START_FRAME = 6
 
static const uint RVC_START_FRAME_AFTER_LONG_TRAM = 21
 
static const uint RVC_TURN_AROUND_START_FRAME_SHORT_TRAM = 16
 
static const uint RVC_DRIVE_THROUGH_STOP_FRAME = 11
 
static const uint RVC_DEPOT_STOP_FRAME = 11
 
static const uint8_t RV_OVERTAKE_TIMEOUT = 35
 The number of ticks a vehicle has for overtaking.
 

Detailed Description

Road vehicle states.

Definition in file roadveh.h.

Enumeration Type Documentation

◆ RoadVehicleStates

Road vehicle states.

Enumerator
RVSB_IN_DEPOT 

The vehicle is in a depot.

RVSB_WORMHOLE 

The vehicle is in a tunnel and/or bridge.

RVS_USING_SECOND_BAY 

Only used while in a road stop.

RVS_ENTERED_STOP 

Only set when a vehicle has entered the stop.

RVS_DRIVE_SIDE 

Only used when retrieving move data.

RVS_IN_ROAD_STOP 

The vehicle is in a road stop.

RVS_IN_DT_ROAD_STOP 

The vehicle is in a drive-through road stop.

RVSB_IN_ROAD_STOP 

The vehicle is in a road stop.

RVSB_IN_DT_ROAD_STOP 

The vehicle is in a drive-through road stop.

RVSB_DRIVE_SIDE 

The vehicle is at the opposite side of the road.

RVSB_TRACKDIR_MASK 

The mask used to extract track dirs.

RVSB_ROAD_STOP_TRACKDIR_MASK 

Only bits 0 and 3 are used to encode the trackdir for road stops.

Definition at line 24 of file roadveh.h.

Function Documentation

◆ GetRoadVehSpriteSize()

void GetRoadVehSpriteSize ( EngineID  engine,
uint &  width,
uint &  height,
int &  xoffs,
int &  yoffs,
EngineImageType  image_type 
)

Get the size of the sprite of a road vehicle sprite heading west (used for lists).

Parameters
engineThe engine to get the sprite from.
[out]widthThe width of the sprite.
[out]heightThe height of the sprite.
[out]xoffsNumber of pixels to shift the sprite to the right.
[out]yoffsNumber of pixels to shift the sprite downwards.
image_typeContext the sprite is used in.

Definition at line 171 of file roadveh_cmd.cpp.

◆ RoadVehUpdateCache()

void RoadVehUpdateCache ( RoadVehicle v,
bool  same_length 
)

Update the cache of a road vehicle.

Parameters
vRoad vehicle needing an update of its cache.
same_lengthshould length of vehicles stay the same?
Precondition
v must be first road vehicle.

Definition at line 218 of file roadveh_cmd.cpp.

References GroundVehicleCache::cached_total_length, Vehicle::engine_type, GroundVehicle< T, Type >::gcache, GetRoadVehLength(), INVALID_ENGINE, Vehicle::InvalidateNewGRFCacheOfChain(), Vehicle::IsFrontEngine(), SpecializedVehicle< T, Type >::Next(), BaseVehicle::type, VEH_ROAD, and VehicleLengthChanged().

Variable Documentation

◆ RDE_NEXT_TILE

const uint RDE_NEXT_TILE = 0x80
static

State information about the Road Vehicle controller.

We should enter the next tile

Definition at line 61 of file roadveh.h.