changeset 8898:22854af8a4d0 draft

(svn r12665) -Codechange: make the internal speed <-> display speed conversions available to a bigger part of the code.
author rubidium <rubidium@openttd.org>
date Sat, 12 Apr 2008 10:00:52 +0000
parents 723bed4b0900
children 93068462f33c
files src/strings.cpp
diffstat 1 files changed, 21 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/strings.cpp
+++ b/src/strings.cpp
@@ -536,6 +536,26 @@
 	},
 };
 
+/**
+ * Convert the given (internal) speed to the display speed.
+ * @param speed the speed to convert
+ * @return the converted speed.
+ */
+uint ConvertSpeedToDisplaySpeed(uint speed)
+{
+ return (speed * units[_opt_ptr->units].s_m) >> units[_opt_ptr->units].s_s;
+}
+
+/**
+ * Convert the given display speed to the (internal) speed.
+ * @param speed the speed to convert
+ * @return the converted speed.
+ */
+uint ConvertDisplaySpeedToSpeed(uint speed)
+{
+	return ((speed << units[_opt_ptr->units].s_s) + units[_opt_ptr->units].s_m / 2) / units[_opt_ptr->units].s_m;
+}
+
 static char* FormatString(char* buff, const char* str, const int64* argv, uint casei, const char* last)
 {
 	extern const char _openttd_revision[];
@@ -581,7 +601,7 @@
 			case SCC_VELOCITY: {// {VELOCITY}
 				int64 args[1];
 				assert(_opt_ptr->units < lengthof(units));
-				args[0] = GetInt32(&argv) * units[_opt_ptr->units].s_m >> units[_opt_ptr->units].s_s;
+				args[0] = ConvertSpeedToDisplaySpeed(GetInt32(&argv));
 				buff = FormatString(buff, GetStringPtr(units[_opt_ptr->units].velocity), args, modifier >> 24, last);
 				modifier = 0;
 				break;