(svn r8534) -Feature/Codechange: Provide aircraft with vertical separation depending on their altitude and velocity

This commit is contained in:
celestar 2007-02-02 15:04:59 +00:00
parent 904088f2f9
commit 6f01ba5ad9

View File

@ -898,14 +898,32 @@ static bool UpdateAircraftSpeed(Vehicle *v)
return t < v->progress; return t < v->progress;
} }
// get Aircraft running altitude /**
* Gets the cruise altitude of an aircraft.
* The cruise altitude is determined by the velocity of the vehicle
* and the direction it is moving
* @param v The vehicle. Should be an aircraft
* @returns Altitude in pixel units
*/
static byte GetAircraftFlyingAltitude(const Vehicle *v) static byte GetAircraftFlyingAltitude(const Vehicle *v)
{ {
switch (v->max_speed) { /* Make sure Aircraft fly no lower so that they don't conduct
case 37: return 162; * CFITs (controlled flight into terrain)
case 74: return 171; */
default: return 180; byte base_altitude = 150;
/* Make sure eastbound and westbound planes do not "crash" into each
* other by providing them with vertical seperation
*/
switch (v->direction) {
case DIR_N: case DIR_NE: case DIR_E: case DIR_SE: base_altitude += 15; break;
default: break;
} }
/* Make faster planes fly higher so that they can overtake slower ones */
base_altitude += min(30 * (v->max_speed / 37), 90);
return base_altitude;
} }
static bool AircraftController(Vehicle *v) static bool AircraftController(Vehicle *v)