diff options
author | michi_cc <michi_cc@openttd.org> | 2012-02-14 17:03:56 +0000 |
---|---|---|
committer | michi_cc <michi_cc@openttd.org> | 2012-02-14 17:03:56 +0000 |
commit | 76344163c7d190894629768549130438c34174aa (patch) | |
tree | 3e3a784b106ba933823e56b4818c371d673880bb | |
parent | b7b6642d78101acfde8f7f55cb5babc11139104a (diff) | |
download | openttd-76344163c7d190894629768549130438c34174aa.tar.xz |
(svn r23945) -Fix: Better rounding when converting internal speed to displayed speed.
-rw-r--r-- | src/strings.cpp | 21 | ||||
-rw-r--r-- | src/strings_func.h | 3 |
2 files changed, 23 insertions, 1 deletions
diff --git a/src/strings.cpp b/src/strings.cpp index 40e31cea8..77174a9ed 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -683,6 +683,25 @@ uint ConvertDisplaySpeedToSpeed(uint speed) } /** + * Convert the given km/h-ish speed to the display speed. + * @param speed the speed to convert + * @return the converted speed. + */ +uint ConvertKmhishSpeedToDisplaySpeed(uint speed) +{ + return _units[_settings_game.locale.units].c_velocity.ToDisplay(speed * 10, false) / 16; +} + +/** + * Convert the given display speed to the km/h-ish speed. + * @param speed the speed to convert + * @return the converted speed. + */ +uint ConvertDisplaySpeedToKmhishSpeed(uint speed) +{ + return _units[_settings_game.locale.units].c_velocity.FromDisplay(speed * 16) / 10; +} +/** * Parse most format codes within a string and write the result to a buffer. * @param buff The buffer to write the final string to. * @param str The original string with format codes. @@ -1137,7 +1156,7 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg case SCC_VELOCITY: { // {VELOCITY} assert(_settings_game.locale.units < lengthof(_units)); - int64 args_array[] = {ConvertSpeedToDisplaySpeed(args->GetInt64(SCC_VELOCITY) * 10 / 16)}; + int64 args_array[] = {ConvertKmhishSpeedToDisplaySpeed(args->GetInt64(SCC_VELOCITY))}; StringParameters tmp_params(args_array); buff = FormatString(buff, GetStringPtr(_units[_settings_game.locale.units].velocity), &tmp_params, last); break; diff --git a/src/strings_func.h b/src/strings_func.h index 0cb8a72e3..eef78d84e 100644 --- a/src/strings_func.h +++ b/src/strings_func.h @@ -141,6 +141,9 @@ char *GetString(char *buffr, StringID string, const char *last); char *GetStringWithArgs(char *buffr, StringID string, StringParameters *args, const char *last, uint case_index = 0, bool game_script = false); const char *GetStringPtr(StringID string); +uint ConvertKmhishSpeedToDisplaySpeed(uint speed); +uint ConvertDisplaySpeedToKmhishSpeed(uint speed); + void InjectDParam(uint amount); /** |