# HG changeset patch # User frosch # Date 2015-10-30 17:24:05 # Node ID f622db4b59a825061dc0c3cc861f306b652daaac # Parent 5fab6d132867652d957018d13ea126fdb573760b (svn r27426) -Change: Round loading percentage in loading indicators and conditional orders towards 50%, so that 0% and 100% mean completely empty or full. diff --git a/src/vehicle.cpp b/src/vehicle.cpp --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1290,6 +1290,9 @@ void AgeVehicle(Vehicle *v) * @param front The front vehicle of the consist to check. * @param colour The string to show depending on if we are unloading or loading * @return A percentage of how full the Vehicle is. + * Percentages are rounded towards 50%, so that 0% and 100% are only returned + * if the vehicle is completely empty or full. + * This is useful for both display and conditional orders. */ uint8 CalcPercentVehicleFilled(const Vehicle *front, StringID *colour) { @@ -1337,7 +1340,13 @@ uint8 CalcPercentVehicleFilled(const Veh if (max == 0) return 100; /* Return the percentage */ - return (count * 100) / max; + if (count * 2 < max) { + /* Less than 50%; round up, so that 0% means really empty. */ + return CeilDiv(count * 100, max); + } else { + /* More than 50%; round down, so that 100% means really full. */ + return (count * 100) / max; + } } /**