(svn r3786) More work for DirDiff
authortron
Wed, 08 Mar 2006 08:16:31 +0000
changeset 3160 14b27357d353
parent 3159 b4a664574e8f
child 3161 c0c237a63373
(svn r3786) More work for DirDiff
aircraft_cmd.c
disaster_cmd.c
roadveh_cmd.c
train_cmd.c
--- a/aircraft_cmd.c	Wed Mar 08 07:50:26 2006 +0000
+++ b/aircraft_cmd.c	Wed Mar 08 08:16:31 2006 +0000
@@ -947,9 +947,6 @@
 	return false;
 }
 
-static const int8 _crashed_aircraft_moddir[4] = {
-	-1,0,0,1
-};
 
 static void HandleCrashedAircraft(Vehicle *v)
 {
@@ -973,7 +970,11 @@
 
 	if (v->u.air.crashed_counter < 650) {
 		if (CHANCE16R(1,32,r)) {
-			v->direction = (v->direction + _crashed_aircraft_moddir[GB(r, 16, 2)]) & 7;
+			static const DirDiff delta[] = {
+				DIRDIFF_45LEFT, DIRDIFF_SAME, DIRDIFF_SAME, DIRDIFF_45RIGHT
+			};
+
+			v->direction = ChangeDir(v->direction, delta[GB(r, 16, 2)]);
 			SetAircraftPosition(v, v->x_pos, v->y_pos, v->z_pos);
 			r = Random();
 			CreateEffectVehicleRel(v,
--- a/disaster_cmd.c	Wed Mar 08 07:50:26 2006 +0000
+++ b/disaster_cmd.c	Wed Mar 08 08:16:31 2006 +0000
@@ -665,7 +665,7 @@
 		return;
 	}
 
-	v->direction = (v->direction + (GB(Random(), 0, 1) ? 2 : -2)) & 7;
+	v->direction = ChangeDir(v->direction, GB(Random(), 0, 1) ? DIRDIFF_90RIGHT : DIRDIFF_90LEFT);
 }
 
 
--- a/roadveh_cmd.c	Wed Mar 08 07:50:26 2006 +0000
+++ b/roadveh_cmd.c	Wed Mar 08 08:16:31 2006 +0000
@@ -494,9 +494,13 @@
 
 static void RoadVehSetRandomDirection(Vehicle *v)
 {
-	static const int8 _turn_prob[4] = { -1, 0, 0, 1 };
+	static const DirDiff delta[] = {
+		DIRDIFF_45LEFT, DIRDIFF_SAME, DIRDIFF_SAME, DIRDIFF_45RIGHT
+	};
+
 	uint32 r = Random();
-	v->direction = (v->direction + _turn_prob[r & 3]) & 7;
+
+	v->direction = ChangeDir(v->direction, delta[r & 3]);
 	BeginVehicleMove(v);
 	UpdateRoadVehDeltaXY(v);
 	v->cur_image = GetRoadVehImage(v, v->direction);
--- a/train_cmd.c	Wed Mar 08 07:50:26 2006 +0000
+++ b/train_cmd.c	Wed Mar 08 08:16:31 2006 +0000
@@ -3015,12 +3015,15 @@
 
 static void ChangeTrainDirRandomly(Vehicle *v)
 {
-	static const int8 _random_dir_change[4] = { -1, 0, 0, 1 };
+	static const DirDiff delta[] = {
+		DIRDIFF_45LEFT, DIRDIFF_SAME, DIRDIFF_SAME, DIRDIFF_45RIGHT
+	};
 
 	do {
 		//I need to buffer the train direction
-		if (!(v->u.rail.track & 0x40))
-			v->direction = (v->direction + _random_dir_change[GB(Random(), 0, 2)]) & 7;
+		if (!(v->u.rail.track & 0x40)) {
+			v->direction = ChangeDir(v->direction, delta[GB(Random(), 0, 2)]);
+		}
 		if (!(v->vehstatus & VS_HIDDEN)) {
 			BeginVehicleMove(v);
 			UpdateTrainDeltaXY(v, v->direction);