|
@@ -10,13 +10,13 @@
|
|
|
#include "road_map.h"
|
|
|
#include "roadveh.h"
|
|
|
#include "station_map.h"
|
|
|
#include "timetable.h"
|
|
|
#include "engine.h"
|
|
|
#include "command_func.h"
|
|
|
#include "station.h"
|
|
|
#include "station_base.h"
|
|
|
#include "news_func.h"
|
|
|
#include "pathfind.h"
|
|
|
#include "npf.h"
|
|
|
#include "player_func.h"
|
|
|
#include "player_base.h"
|
|
|
#include "depot.h"
|
|
@@ -1168,13 +1168,13 @@ static Trackdir RoadFindPathToDest(Vehic
|
|
|
|
|
|
if (!IsTileOwner(tile, v->owner) || GetRoadStopDir(tile) == enterdir || RoadVehHasArticPart(v)) {
|
|
|
/* different station owner or wrong orientation or the vehicle has articulated parts */
|
|
|
trackdirs = TRACKDIR_BIT_NONE;
|
|
|
} else {
|
|
|
/* Our station */
|
|
|
RoadStop::Type rstype = IsCargoInClass(v->cargo_type, CC_PASSENGERS) ? RoadStop::BUS : RoadStop::TRUCK;
|
|
|
RoadStopType rstype = IsCargoInClass(v->cargo_type, CC_PASSENGERS) ? ROADSTOP_BUS : ROADSTOP_TRUCK;
|
|
|
|
|
|
if (GetRoadStopType(tile) != rstype) {
|
|
|
/* Wrong station type */
|
|
|
trackdirs = TRACKDIR_BIT_NONE;
|
|
|
} else {
|
|
|
/* Proper station type, check if there is free loading bay */
|
|
@@ -1804,13 +1804,13 @@ again:
|
|
|
* (the station test and stop type test ensure that other vehicles, using the road stop as
|
|
|
* a through route, do not stop) */
|
|
|
if (IsRoadVehFront(v) && ((IsInsideMM(v->u.road.state, RVSB_IN_ROAD_STOP, RVSB_IN_ROAD_STOP_END) &&
|
|
|
_road_veh_data_1[v->u.road.state - RVSB_IN_ROAD_STOP + (_opt.road_side << RVS_DRIVE_SIDE)] == v->u.road.frame) ||
|
|
|
(IsInsideMM(v->u.road.state, RVSB_IN_DT_ROAD_STOP, RVSB_IN_DT_ROAD_STOP_END) &&
|
|
|
v->current_order.dest == GetStationIndex(v->tile) &&
|
|
|
GetRoadStopType(v->tile) == (IsCargoInClass(v->cargo_type, CC_PASSENGERS) ? RoadStop::BUS : RoadStop::TRUCK) &&
|
|
|
GetRoadStopType(v->tile) == (IsCargoInClass(v->cargo_type, CC_PASSENGERS) ? ROADSTOP_BUS : ROADSTOP_TRUCK) &&
|
|
|
v->u.road.frame == RVC_DRIVE_THROUGH_STOP_FRAME))) {
|
|
|
|
|
|
RoadStop *rs = GetRoadStopByTile(v->tile, GetRoadStopType(v->tile));
|
|
|
Station* st = GetStationByTile(v->tile);
|
|
|
|
|
|
/* Vehicle is at the stop position (at a bay) in a road stop.
|
|
@@ -1819,13 +1819,13 @@ again:
|
|
|
if (v->current_order.type != OT_LEAVESTATION &&
|
|
|
v->current_order.type != OT_GOTO_DEPOT) {
|
|
|
/* Vehicle has arrived at a bay in a road stop */
|
|
|
|
|
|
if (IsDriveThroughStopTile(v->tile)) {
|
|
|
TileIndex next_tile = TILE_ADD(v->tile, TileOffsByDir(v->direction));
|
|
|
RoadStop::Type type = IsCargoInClass(v->cargo_type, CC_PASSENGERS) ? RoadStop::BUS : RoadStop::TRUCK;
|
|
|
RoadStopType type = IsCargoInClass(v->cargo_type, CC_PASSENGERS) ? ROADSTOP_BUS : ROADSTOP_TRUCK;
|
|
|
|
|
|
/* Check if next inline bay is free */
|
|
|
if (IsDriveThroughStopTile(next_tile) && (GetRoadStopType(next_tile) == type)) {
|
|
|
RoadStop *rs_n = GetRoadStopByTile(next_tile, type);
|
|
|
|
|
|
if (rs_n->IsFreeBay(HasBit(v->u.road.state, RVS_USING_SECOND_BAY))) {
|