1
0
Fork 0

(svn r17762) -Fix [FS#3259]: don't let aircraft drive a while over the grass when landing at high altitude airports

release/1.0
rubidium 2009-10-11 12:35:16 +00:00
parent 321139782d
commit 8f090ec4a8
1 changed files with 9 additions and 7 deletions

View File

@ -1133,19 +1133,21 @@ static bool AircraftController(Aircraft *v)
continue; continue;
} }
uint curz = GetSlopeZ(x, y) + 1; uint curz = GetSlopeZ(x + amd->x, y + amd->y) + 1;
if (curz > z) { /* We're not flying below our destination, right? */
z++; assert(curz <= z);
} else { int t = max(1U, dist - 4);
int t = max(1U, dist - 4); int delta = z - curz;
/* Only start lowering when we're sufficiently close for a 1:1 glide */
if (delta >= t) {
z -= ((z - curz) + t - 1) / t; z -= ((z - curz) + t - 1) / t;
if (z < curz) z = curz;
} }
if (z < curz) z = curz;
} }
/* We've landed. Decrase speed when we're reaching end of runway. */ /* We've landed. Decrease speed when we're reaching end of runway. */
if (amd->flag & AMED_BRAKE) { if (amd->flag & AMED_BRAKE) {
uint curz = GetSlopeZ(x, y) + 1; uint curz = GetSlopeZ(x, y) + 1;