mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-09 07:29:44 +00:00
(svn r17405) -Fix (r100): aircraft shouldn't be allowed to make turns bigger then 45 degrees while in flight
This commit is contained in:
parent
dcf3719ca1
commit
16e3083ff7
@ -91,6 +91,7 @@ struct Aircraft : public SpecializedVehicle<Aircraft, VEH_AIRCRAFT> {
|
||||
byte previous_pos;
|
||||
StationID targetairport;
|
||||
byte state;
|
||||
DirectionByte last_direction;
|
||||
|
||||
/** We don't want GCC to zero our struct! It already is zeroed and has an index! */
|
||||
Aircraft() : SpecializedVehicle<Aircraft, VEH_AIRCRAFT>() {}
|
||||
|
@ -1048,6 +1048,8 @@ static bool AircraftController(Aircraft *v)
|
||||
count = UpdateAircraftSpeed(v, speed_limit, hard_limit);
|
||||
if (count == 0) return false;
|
||||
|
||||
if (v->load_unload_time_rem != 0) v->load_unload_time_rem--;
|
||||
|
||||
do {
|
||||
|
||||
GetNewVehiclePosResult gp;
|
||||
@ -1069,9 +1071,15 @@ static bool AircraftController(Aircraft *v)
|
||||
/* Turn. Do it slowly if in the air. */
|
||||
Direction newdir = GetDirectionTowards(v, x + amd->x, y + amd->y);
|
||||
if (newdir != v->direction) {
|
||||
v->direction = newdir;
|
||||
if (!(amd->flag & AMED_SLOWTURN)) {
|
||||
if (amd->flag & AMED_SLOWTURN) {
|
||||
if (v->load_unload_time_rem == 0 || newdir == v->last_direction) {
|
||||
v->load_unload_time_rem = 8;
|
||||
v->last_direction = v->direction;
|
||||
v->direction = newdir;
|
||||
}
|
||||
} else {
|
||||
v->cur_speed >>= 1;
|
||||
v->direction = newdir;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -591,9 +591,10 @@ const SaveLoad *GetVehicleDescription(VehicleType vt)
|
||||
SLE_VAR(Aircraft, state, SLE_UINT8),
|
||||
|
||||
SLE_CONDVAR(Aircraft, previous_pos, SLE_UINT8, 2, SL_MAX_VERSION),
|
||||
SLE_CONDVAR(Aircraft, last_direction, SLE_UINT8, 2, SL_MAX_VERSION),
|
||||
|
||||
/* reserve extra space in savegame here. (currently 15 bytes) */
|
||||
SLE_CONDNULL(15, 2, SL_MAX_VERSION),
|
||||
/* reserve extra space in savegame here. (currently 14 bytes) */
|
||||
SLE_CONDNULL(14, 2, SL_MAX_VERSION),
|
||||
|
||||
SLE_END()
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user