Changeset - r12979:cc9fc96bd354
[Not reviewed]
master
0 3 0
yexo - 15 years ago 2009-09-09 00:03:35
yexo@openttd.org
(svn r17483) -Fix (r17405): when an aircraft starts flying in circles make it turn in the correct direction first before continuing
3 files changed with 12 insertions and 4 deletions:
0 comments (0 inline, 0 general)
src/aircraft.h
Show inline comments
 
@@ -92,6 +92,7 @@ struct Aircraft : public SpecializedVehi
 
	StationID targetairport;
 
	byte state;
 
	DirectionByte last_direction;
 
	byte number_consecutive_turns;
 

	
 
	/** We don't want GCC to zero our struct! It already is zeroed and has an index! */
 
	Aircraft() : SpecializedVehicle<Aircraft, VEH_AIRCRAFT>() {}
src/aircraft_cmd.cpp
Show inline comments
 
@@ -1071,9 +1071,14 @@ static bool AircraftController(Aircraft 
 
			/* Turn. Do it slowly if in the air. */
 
			Direction newdir = GetDirectionTowards(v, x + amd->x, y + amd->y);
 
			if (newdir != v->direction) {
 
				if (amd->flag & AMED_SLOWTURN) {
 
				if (amd->flag & AMED_SLOWTURN && v->number_consecutive_turns < 8) {
 
					if (v->load_unload_time_rem == 0 || newdir == v->last_direction) {
 
						v->load_unload_time_rem = 1 << (_settings_game.vehicle.plane_speed - 1);
 
						if (newdir == v->last_direction) {
 
							v->number_consecutive_turns = 0;
 
						} else {
 
							v->number_consecutive_turns++;
 
						}
 
						v->load_unload_time_rem = 2 * _settings_game.vehicle.plane_speed;
 
						v->last_direction = v->direction;
 
						v->direction = newdir;
 
					}
 
@@ -1094,6 +1099,7 @@ static bool AircraftController(Aircraft 
 
					gp.new_tile = gp.old_tile = v->tile;
 
				}
 
			} else {
 
				v->number_consecutive_turns = 0;
 
				/* Move vehicle. */
 
				gp = GetNewVehiclePos(v);
 
			}
src/saveload/vehicle_sl.cpp
Show inline comments
 
@@ -592,9 +592,10 @@ const SaveLoad *GetVehicleDescription(Ve
 

	
 
		 SLE_CONDVAR(Aircraft, previous_pos,          SLE_UINT8,                    2, SL_MAX_VERSION),
 
		 SLE_CONDVAR(Aircraft, last_direction,        SLE_UINT8,                    2, SL_MAX_VERSION),
 
		 SLE_CONDVAR(Aircraft, number_consecutive_turns, SLE_UINT8,                 2, SL_MAX_VERSION),
 

	
 
		/* reserve extra space in savegame here. (currently 14 bytes) */
 
		SLE_CONDNULL(14,                                                           2, SL_MAX_VERSION),
 
		/* reserve extra space in savegame here. (currently 13 bytes) */
 
		SLE_CONDNULL(13,                                                           2, SL_MAX_VERSION),
 

	
 
		     SLE_END()
 
	};
0 comments (0 inline, 0 general)