Merge branch 'master' into jgrpp
# Conflicts: # cmake/CompileFlags.cmake # src/aircraft_cmd.cpp # src/blitter/32bpp_anim.cpp # src/cargopacket.cpp # src/cheat_gui.cpp # src/company_cmd.cpp # src/company_gui.cpp # src/core/pool_func.hpp # src/date.cpp # src/economy.cpp # src/error_gui.cpp # src/ground_vehicle.cpp # src/ground_vehicle.hpp # src/group_gui.cpp # src/industry_cmd.cpp # src/lang/dutch.txt # src/lang/french.txt # src/lang/german.txt # src/linkgraph/linkgraph_gui.cpp # src/linkgraph/mcf.cpp # src/network/network_content.cpp # src/network/network_server.cpp # src/network/network_udp.cpp # src/newgrf_engine.cpp # src/newgrf_station.cpp # src/order_cmd.cpp # src/order_gui.cpp # src/pathfinder/follow_track.hpp # src/pathfinder/yapf/yapf_common.hpp # src/saveload/saveload.cpp # src/settings_gui.cpp # src/station_cmd.cpp # src/station_kdtree.h # src/string_func.h # src/table/settings.ini # src/tgp.cpp # src/timetable_cmd.cpp # src/timetable_gui.cpp # src/toolbar_gui.cpp # src/town_cmd.cpp # src/train_cmd.cpp # src/train_gui.cpp # src/tree_gui.cpp # src/tunnelbridge_cmd.cpp # src/vehicle.cpp # src/vehicle_gui.cpp # src/video/sdl2_v.cpp # src/video/sdl_v.cpp # src/video/win32_v.cpp # src/viewport.cpp # src/viewport_sprite_sorter_sse4.cpp # src/window.cpp
This commit is contained in:
@@ -668,7 +668,7 @@ static int UpdateAircraftSpeed(Aircraft *v, uint speed_limit = SPEED_LIMIT_NONE,
|
||||
if (v->breakdown_ctr == 1 && v->breakdown_type == BREAKDOWN_AIRCRAFT_SPEED) {
|
||||
const uint broken_speed = v->breakdown_severity << 3;
|
||||
if (broken_speed < speed_limit) hard_limit = false;
|
||||
speed_limit = min(speed_limit, broken_speed);
|
||||
speed_limit = std::min(speed_limit, broken_speed);
|
||||
}
|
||||
|
||||
if (v->vcache.cached_max_speed < speed_limit) {
|
||||
@@ -685,10 +685,10 @@ static int UpdateAircraftSpeed(Aircraft *v, uint speed_limit = SPEED_LIMIT_NONE,
|
||||
* speeds to that aircraft do not get to taxi speed straight after
|
||||
* touchdown. */
|
||||
if (!hard_limit && v->cur_speed > speed_limit) {
|
||||
speed_limit = v->cur_speed - max(1, ((v->cur_speed * v->cur_speed) / 16384) / _settings_game.vehicle.plane_speed);
|
||||
speed_limit = v->cur_speed - std::max(1, ((v->cur_speed * v->cur_speed) / 16384) / _settings_game.vehicle.plane_speed);
|
||||
}
|
||||
|
||||
spd = min(v->cur_speed + (spd >> 8) + (v->subspeed < t), speed_limit);
|
||||
spd = std::min(v->cur_speed + (spd >> 8) + (v->subspeed < t), speed_limit);
|
||||
|
||||
/* updates statusbar only if speed have changed to save CPU time */
|
||||
if (spd != v->cur_speed) {
|
||||
@@ -751,7 +751,7 @@ void GetAircraftFlightLevelBounds(const Vehicle *v, int *min_level, int *max_lev
|
||||
}
|
||||
|
||||
/* Make faster planes fly higher so that they can overtake slower ones */
|
||||
base_altitude += min(20 * (v->vcache.cached_max_speed / 200) - 90, 0);
|
||||
base_altitude += std::min(20 * (v->vcache.cached_max_speed / 200) - 90, 0);
|
||||
|
||||
if (min_level != nullptr) *min_level = base_altitude + AIRCRAFT_MIN_FLYING_ALTITUDE;
|
||||
if (max_level != nullptr) *max_level = base_altitude + AIRCRAFT_MAX_FLYING_ALTITUDE;
|
||||
@@ -870,8 +870,6 @@ static void MaybeCrashAirplane(Aircraft *v);
|
||||
*/
|
||||
static bool AircraftController(Aircraft *v)
|
||||
{
|
||||
int count;
|
||||
|
||||
/* nullptr if station is invalid */
|
||||
const Station *st = Station::GetIfValid(v->targetairport);
|
||||
/* INVALID_TILE if there is no station */
|
||||
@@ -931,7 +929,7 @@ static bool AircraftController(Aircraft *v)
|
||||
}
|
||||
} else {
|
||||
u->cur_speed = 32;
|
||||
count = UpdateAircraftSpeed(v);
|
||||
int count = UpdateAircraftSpeed(v);
|
||||
if (count > 0) {
|
||||
v->tile = 0;
|
||||
|
||||
@@ -943,7 +941,7 @@ static bool AircraftController(Aircraft *v)
|
||||
v->cur_speed = 0;
|
||||
return true;
|
||||
}
|
||||
SetAircraftPosition(v, v->x_pos, v->y_pos, min(v->z_pos + count, z_dest));
|
||||
SetAircraftPosition(v, v->x_pos, v->y_pos, std::min(v->z_pos + count, z_dest));
|
||||
}
|
||||
}
|
||||
return false;
|
||||
@@ -989,12 +987,12 @@ static bool AircraftController(Aircraft *v)
|
||||
}
|
||||
u->cur_speed += 4;
|
||||
} else {
|
||||
count = UpdateAircraftSpeed(v);
|
||||
int count = UpdateAircraftSpeed(v);
|
||||
if (count > 0) {
|
||||
if (v->z_pos > z) {
|
||||
SetAircraftPosition(v, v->x_pos, v->y_pos, max(v->z_pos - count, z));
|
||||
SetAircraftPosition(v, v->x_pos, v->y_pos, std::max(v->z_pos - count, z));
|
||||
} else {
|
||||
SetAircraftPosition(v, v->x_pos, v->y_pos, min(v->z_pos + count, z));
|
||||
SetAircraftPosition(v, v->x_pos, v->y_pos, std::min(v->z_pos + count, z));
|
||||
}
|
||||
} else {
|
||||
v->UpdatePosition();
|
||||
@@ -1042,16 +1040,23 @@ static bool AircraftController(Aircraft *v)
|
||||
if (amd.flag & AMED_LAND) { speed_limit = SPEED_LIMIT_APPROACH; hard_limit = false; }
|
||||
if (amd.flag & AMED_BRAKE) { speed_limit = SPEED_LIMIT_TAXI; hard_limit = false; }
|
||||
|
||||
count = UpdateAircraftSpeed(v, speed_limit, hard_limit);
|
||||
int count = UpdateAircraftSpeed(v, speed_limit, hard_limit);
|
||||
if (count == 0) return false;
|
||||
|
||||
/* If the plane will be a few subpixels away from the destination after
|
||||
* this movement loop, start nudging him towards the exact position for
|
||||
* the whole loop. Otherwise, heavily depending on the speed of the plane,
|
||||
* it is possible we totally overshoot the target, causing the plane to
|
||||
* make a loop, and trying again, and again, and again .. */
|
||||
bool nudge_towards_target = static_cast<uint>(count) + 3 > dist;
|
||||
|
||||
if (v->turn_counter != 0) v->turn_counter--;
|
||||
|
||||
do {
|
||||
|
||||
GetNewVehiclePosResult gp;
|
||||
|
||||
if (dist < 4 || (amd.flag & AMED_LAND)) {
|
||||
if (nudge_towards_target || (amd.flag & AMED_LAND)) {
|
||||
/* move vehicle one pixel towards target */
|
||||
gp.x = (v->x_pos != (x + amd.x)) ?
|
||||
v->x_pos + ((x + amd.x > v->x_pos) ? 1 : -1) :
|
||||
@@ -1144,7 +1149,7 @@ static bool AircraftController(Aircraft *v)
|
||||
|
||||
/* We're not flying below our destination, right? */
|
||||
assert(airport_z <= z);
|
||||
int t = max(1U, dist - 4);
|
||||
int t = std::max(1U, dist - 4);
|
||||
int delta = z - airport_z;
|
||||
|
||||
/* Only start lowering when we're sufficiently close for a 1:1 glide */
|
||||
@@ -1428,7 +1433,7 @@ static void MaybeCrashAirplane(Aircraft *v)
|
||||
}
|
||||
if (_settings_game.vehicle.improved_breakdowns && v->breakdown_ctr == 1 && v->breakdown_type == BREAKDOWN_AIRCRAFT_EM_LANDING) {
|
||||
/* Airplanes that are attempting an emergency landing have a 2% chance to crash */
|
||||
prob = max<uint32>(prob, 0x10000 / 50);
|
||||
prob = std::max<uint32>(prob, 0x10000 / 50);
|
||||
}
|
||||
|
||||
if (GB(Random(), 0, 22) > prob) return;
|
||||
|
Reference in New Issue
Block a user