diff options
author | peter1138 <peter1138@openttd.org> | 2007-07-30 08:49:41 +0000 |
---|---|---|
committer | peter1138 <peter1138@openttd.org> | 2007-07-30 08:49:41 +0000 |
commit | 92061aba4ea4cb190ae94d98a2ecc1df52f90d45 (patch) | |
tree | 3a919447e032e1fc18a1e2e780c0d9f53dec26d5 /src/train_cmd.cpp | |
parent | 7fb3f54584fd9dd3266997cd12bd1853c18ad5bb (diff) | |
download | openttd-92061aba4ea4cb190ae94d98a2ecc1df52f90d45.tar.xz |
(svn r10734) -Fix [FS#1030]: Revert r10513) and add special cases for collision detection on bridges/tunnels.
Diffstat (limited to 'src/train_cmd.cpp')
-rw-r--r-- | src/train_cmd.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 69ed022e8..047725269 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -2760,7 +2760,16 @@ static void CheckTrainCollision(Vehicle *v) tcc.num = 0; /* find colliding vehicles */ - VehicleFromPosXY(v->x_pos, v->y_pos, &tcc, FindTrainCollideEnum); + if (v->u.rail.track == TRACK_BIT_WORMHOLE) { + VehicleFromPos(v->tile, &tcc, FindTrainCollideEnum); + if (IsBridgeTile(v->tile)) { + VehicleFromPos(GetOtherBridgeEnd(v->tile), &tcc, FindTrainCollideEnum); + } else { + VehicleFromPos(GetOtherTunnelEnd(v->tile), &tcc, FindTrainCollideEnum); + } + } else { + VehicleFromPosXY(v->x_pos, v->y_pos, &tcc, FindTrainCollideEnum); + } /* any dead -> no crash */ if (tcc.num == 0) return; |