train_cmd.c
changeset 5252 6823da581c30
parent 5215 439d5ca71311
child 5256 90226d8da8fb
--- a/train_cmd.c	Tue Dec 05 17:53:33 2006 +0000
+++ b/train_cmd.c	Tue Dec 05 20:22:14 2006 +0000
@@ -34,7 +34,7 @@
 #include "date.h"
 
 static bool TrainCheckIfLineEnds(Vehicle *v);
-static void TrainController(Vehicle *v);
+static void TrainController(Vehicle *v, bool update_image);
 
 static const byte _vehicle_initial_x_fract[4] = {10, 8, 4,  8};
 static const byte _vehicle_initial_y_fract[4] = { 8, 4, 8, 10};
@@ -1662,7 +1662,7 @@
 			tempnext = last->next;
 			last->next = NULL;
 
-			for (i = 0; i < differential; i++) TrainController(first);
+			for (i = 0; i < differential; i++) TrainController(first, false);
 
 			last->next = tempnext;
 		}
@@ -3007,7 +3007,7 @@
 	return NULL;
 }
 
-static void TrainController(Vehicle *v)
+static void TrainController(Vehicle *v, bool update_image)
 {
 	Vehicle *prev;
 	GetNewVehiclePosResult gp;
@@ -3168,7 +3168,7 @@
 		/* update image of train, as well as delta XY */
 		newdir = GetNewVehicleDirection(v, gp.x, gp.y);
 		UpdateTrainDeltaXY(v, newdir);
-		v->cur_image = GetTrainImage(v, newdir);
+		if (update_image) v->cur_image = GetTrainImage(v, newdir);
 
 		v->x_pos = gp.x;
 		v->y_pos = gp.y;
@@ -3520,7 +3520,7 @@
 		TrainCheckIfLineEnds(v);
 
 		do {
-			TrainController(v);
+			TrainController(v, true);
 			CheckTrainCollision(v);
 			if (v->cur_speed <= 0x100)
 				break;