Allow value of "PBS entry signal" conditional to be a rail depot.

This commit is contained in:
Jonathan G Rennison
2016-07-18 00:47:52 +01:00
parent 58817c26e0
commit 3d6cbb76b4
3 changed files with 24 additions and 12 deletions

View File

@@ -221,10 +221,14 @@ private:
TileIndex tile = v->tile;
Trackdir trackdir = v->GetVehicleTrackdir();
CFollowTrackRail ft(v);
TileIndex candidate_tile = INVALID_TILE;
if (IsRailDepotTile(v->tile)) {
candidate_tile = v->tile;
}
CFollowTrackRail ft(v);
for (;;) {
if (IsTileType(tile, MP_RAILWAY) && HasSignalOnTrackdir(tile, trackdir)) {
if (HasPbsSignalOnTrackdir(tile, trackdir)) {

View File

@@ -409,6 +409,10 @@ Train *GetTrainForReservation(TileIndex tile, Track track)
*/
TileIndex VehiclePosTraceRestrictPreviousSignalCallback(const Train *v, const void *)
{
if (IsRailDepotTile(v->tile)) {
return v->tile;
}
// scan forwards from vehicle position, for the case that train is waiting at/approaching PBS signal
TileIndex tile = v->tile;

View File

@@ -1413,6 +1413,14 @@ public:
TraceRestrictItem item = GetSelected();
if (GetTraceRestrictTypeProperties(item).value_type != TRVT_TILE_INDEX) return;
if (!IsTileOwner(tile, _local_company)) {
ShowErrorMessage(error_message, STR_ERROR_AREA_IS_OWNED_BY_ANOTHER, WL_INFO);
return;
}
if (IsRailDepotTile(tile)) {
// OK
} else {
if (!IsPlainRailTile(tile)) {
ShowErrorMessage(error_message, STR_ERROR_THERE_IS_NO_RAILROAD_TRACK, WL_INFO);
return;
@@ -1422,10 +1430,6 @@ public:
ShowErrorMessage(error_message, STR_ERROR_THERE_ARE_NO_SIGNALS, WL_INFO);
return;
}
if (!IsTileOwner(tile, _local_company)) {
ShowErrorMessage(error_message, STR_ERROR_AREA_IS_OWNED_BY_ANOTHER, WL_INFO);
return;
}
TraceRestrictDoCommandP(this->tile, this->track, TRDCT_MODIFY_DUAL_ITEM, this->selected_instruction - 1, tile, STR_TRACE_RESTRICT_ERROR_CAN_T_MODIFY_ITEM);