diff options
author | Darkvater <darkvater@openttd.org> | 2006-04-15 20:07:42 +0000 |
---|---|---|
committer | Darkvater <darkvater@openttd.org> | 2006-04-15 20:07:42 +0000 |
commit | d63fad7a7b7e0ff6bc6c32f119042a0317961255 (patch) | |
tree | e8d20cb7ee880010ebaa9d3fe99190d489a7abb4 /train_cmd.c | |
parent | f69fcf400e242d119498c0a4b99d7ec6d69d07b0 (diff) | |
download | openttd-d63fad7a7b7e0ff6bc6c32f119042a0317961255.tar.xz |
(svn r4435) - Fix: an assertion triggered when trying to remove a bridge with the remove-tool (r4348 surfaced this). In CmdRemoveRoad tiletype was not checked for ownership. Intorudce IsLevelCrossingTile() which checks if a tile is a crossing without knowing the type. Suggested by peter1138 and Tron.
Diffstat (limited to 'train_cmd.c')
-rw-r--r-- | train_cmd.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/train_cmd.c b/train_cmd.c index 05cd05aa4..c85fe7ee0 100644 --- a/train_cmd.c +++ b/train_cmd.c @@ -92,7 +92,7 @@ void TrainPowerChanged(Vehicle* v) if (IsBridgeTile(u->tile) && IsBridgeMiddle(u->tile) && DiagDirToAxis(DirToDiagDir(u->direction)) == GetBridgeAxis(u->tile)) { if (!HasPowerOnRail(u->u.rail.railtype, GetRailTypeOnBridge(u->tile))) engine_has_power = false; if (!HasPowerOnRail(v->u.rail.railtype, GetRailTypeOnBridge(u->tile))) wagon_has_power = false; - } else if (IsTileType(u->tile, MP_STREET) && IsLevelCrossing(u->tile)) { + } else if (IsLevelCrossingTile(u->tile)) { if (!HasPowerOnRail(u->u.rail.railtype, GetRailTypeCrossing(u->tile))) engine_has_power = false; if (!HasPowerOnRail(v->u.rail.railtype, GetRailTypeCrossing(u->tile))) wagon_has_power = false; } else { @@ -1529,8 +1529,7 @@ static void *TestTrainOnCrossing(Vehicle *v, void *data) static void DisableTrainCrossing(TileIndex tile) { - if (IsTileType(tile, MP_STREET) && - IsLevelCrossing(tile) && + if (IsLevelCrossingTile(tile) && VehicleFromPos(tile, &tile, TestTrainOnCrossing) == NULL && // empty? IsCrossingBarred(tile)) { UnbarCrossing(tile); @@ -3235,7 +3234,7 @@ static bool TrainCheckIfLineEnds(Vehicle *v) } if ((ts &= (ts >> 16)) == 0) { // make a rail/road crossing red - if (IsTileType(tile, MP_STREET) && IsLevelCrossing(tile)) { + if (IsLevelCrossingTile(tile)) { if (!IsCrossingBarred(tile)) { BarCrossing(tile); SndPlayVehicleFx(SND_0E_LEVEL_CROSSING, v); |