--- a/src/ship_cmd.cpp Sun Feb 25 09:47:46 2007 +0000
+++ b/src/ship_cmd.cpp Sun Feb 25 10:25:25 2007 +0000
@@ -692,7 +692,8 @@
BeginVehicleMove(v);
- if (GetNewVehiclePos(v, &gp)) {
+ GetNewVehiclePos(v, &gp);
+ if (gp.old_tile == gp.new_tile) {
/* Staying in tile */
if (IsShipInDepot(v)) {
gp.x = v->x_pos;
--- a/src/train_cmd.cpp Sun Feb 25 09:47:46 2007 +0000
+++ b/src/train_cmd.cpp Sun Feb 25 10:25:25 2007 +0000
@@ -2887,9 +2887,10 @@
BeginVehicleMove(v);
GetNewVehiclePosResult gp;
+ GetNewVehiclePos(v, &gp);
if (v->u.rail.track != TRACK_BIT_WORMHOLE) {
/* Not inside tunnel */
- if (GetNewVehiclePos(v, &gp)) {
+ if (gp.old_tile == gp.new_tile) {
/* Staying in the old tile */
if (v->u.rail.track == TRACK_BIT_DEPOT) {
/* Inside depot */
@@ -3039,8 +3040,6 @@
}
} else {
/* In tunnel or on a bridge */
- GetNewVehiclePos(v, &gp);
-
if (!(v->vehstatus & VS_HIDDEN)) {
v->cur_speed =
min(v->cur_speed, GetBridge(GetBridgeType(v->tile))->speed);
--- a/src/vehicle.cpp Sun Feb 25 09:47:46 2007 +0000
+++ b/src/vehicle.cpp Sun Feb 25 10:25:25 2007 +0000
@@ -2692,7 +2692,7 @@
}
/* returns true if staying in the same tile */
-bool GetNewVehiclePos(const Vehicle *v, GetNewVehiclePosResult *gp)
+void GetNewVehiclePos(const Vehicle *v, GetNewVehiclePosResult *gp)
{
static const int8 _delta_coord[16] = {
-1,-1,-1, 0, 1, 1, 1, 0, /* x */
@@ -2706,7 +2706,6 @@
gp->y = y;
gp->old_tile = v->tile;
gp->new_tile = TileVirtXY(x, y);
- return gp->old_tile == gp->new_tile;
}
static const Direction _new_direction_table[] = {
--- a/src/vehicle.h Sun Feb 25 09:47:46 2007 +0000
+++ b/src/vehicle.h Sun Feb 25 10:25:25 2007 +0000
@@ -427,7 +427,7 @@
Trackdir GetVehicleTrackdir(const Vehicle* v);
/* returns true if staying in the same tile */
-bool GetNewVehiclePos(const Vehicle *v, GetNewVehiclePosResult *gp);
+void GetNewVehiclePos(const Vehicle *v, GetNewVehiclePosResult *gp);
Direction GetDirectionTowards(const Vehicle* v, int x, int y);
#define BEGIN_ENUM_WAGONS(v) do {