summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes E. Krause <j.k@eclipso.de>2018-09-29 13:26:44 +0200
committerMichael Lutz <michi@icosahedron.de>2018-09-30 20:45:41 +0200
commit662dcc3c31bbdbf26b09c74fb29c4286c80de9c4 (patch)
tree2cdd11a00f2e04325f6c38fe9ce59966a38c2d08
parent060248a422a02e4ba7e50b0e4cd7dc30eea414fd (diff)
downloadopenttd-662dcc3c31bbdbf26b09c74fb29c4286c80de9c4.tar.xz
Fix #6920: Make 9.8m/s^2 a common constant for TE-calculation
-rw-r--r--bin/ai/regression/tst_regression/result.txt6
-rw-r--r--src/engine.cpp4
-rw-r--r--src/ground_vehicle.cpp2
-rw-r--r--src/vehicle_type.h2
4 files changed, 8 insertions, 6 deletions
diff --git a/bin/ai/regression/tst_regression/result.txt b/bin/ai/regression/tst_regression/result.txt
index 4aa95d075..210cf2696 100644
--- a/bin/ai/regression/tst_regression/result.txt
+++ b/bin/ai/regression/tst_regression/result.txt
@@ -1292,7 +1292,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
GetRunningCost(): 820
GetPower(): 300
GetWeight(): 47
- GetMaxTractiveEffort(): 139
+ GetMaxTractiveEffort(): 136
GetVehicleType(): 0
GetRailType(): 0
GetRoadType(): -1
@@ -1436,7 +1436,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
GetRunningCost(): 1968
GetPower(): 1000
GetWeight(): 131
- GetMaxTractiveEffort(): 388
+ GetMaxTractiveEffort(): 381
GetVehicleType(): 0
GetRailType(): 0
GetRoadType(): -1
@@ -1454,7 +1454,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
GetRunningCost(): 2296
GetPower(): 1200
GetWeight(): 162
- GetMaxTractiveEffort(): 480
+ GetMaxTractiveEffort(): 471
GetVehicleType(): 0
GetRailType(): 0
GetRoadType(): -1
diff --git a/src/engine.cpp b/src/engine.cpp
index ac2e8df0e..cd96a149f 100644
--- a/src/engine.cpp
+++ b/src/engine.cpp
@@ -431,9 +431,9 @@ uint Engine::GetDisplayMaxTractiveEffort() const
/* Only trains and road vehicles have 'tractive effort'. */
switch (this->type) {
case VEH_TRAIN:
- return (10 * this->GetDisplayWeight() * GetEngineProperty(this->index, PROP_TRAIN_TRACTIVE_EFFORT, this->u.rail.tractive_effort)) / 256;
+ return (GROUND_ACCELERATION * this->GetDisplayWeight() * GetEngineProperty(this->index, PROP_TRAIN_TRACTIVE_EFFORT, this->u.rail.tractive_effort)) / 256 / 1000;
case VEH_ROAD:
- return (10 * this->GetDisplayWeight() * GetEngineProperty(this->index, PROP_ROADVEH_TRACTIVE_EFFORT, this->u.road.tractive_effort)) / 256;
+ return (GROUND_ACCELERATION * this->GetDisplayWeight() * GetEngineProperty(this->index, PROP_ROADVEH_TRACTIVE_EFFORT, this->u.road.tractive_effort)) / 256 / 1000;
default: NOT_REACHED();
}
diff --git a/src/ground_vehicle.cpp b/src/ground_vehicle.cpp
index f8efd8e1a..6fd8d7710 100644
--- a/src/ground_vehicle.cpp
+++ b/src/ground_vehicle.cpp
@@ -58,7 +58,7 @@ void GroundVehicle<T, Type>::PowerChanged()
this->gcache.cached_air_drag = air_drag + 3 * air_drag * number_of_parts / 20;
- max_te *= 9800; // Tractive effort in (tonnes * 1000 * 9.8 =) N.
+ max_te *= GROUND_ACCELERATION; // Tractive effort in (tonnes * 1000 * 9.8 =) N.
max_te /= 256; // Tractive effort is a [0-255] coefficient.
if (this->gcache.cached_power != total_power || this->gcache.cached_max_te != max_te) {
/* Stop the vehicle if it has no power. */
diff --git a/src/vehicle_type.h b/src/vehicle_type.h
index 0921b39e3..f3e7d535f 100644
--- a/src/vehicle_type.h
+++ b/src/vehicle_type.h
@@ -17,6 +17,8 @@
/** The type all our vehicle IDs have. */
typedef uint32 VehicleID;
+static const int GROUND_ACCELERATION = 9800; ///< Acceleration due to gravity, 9.8 m/s^2
+
/** Available vehicle types. */
enum VehicleType {
VEH_BEGIN,