(svn r12665) -Codechange: make the internal speed <-> display speed conversions available to a bigger part of the code.

This commit is contained in:
rubidium 2008-04-12 10:00:52 +00:00
parent 8226c92c8a
commit e9014c99b3
1 changed files with 21 additions and 1 deletions

View File

@ -536,6 +536,26 @@ static const Units units[] = {
},
};
/**
* 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 @@ static char* FormatString(char* buff, const char* str, const int64* argv, uint c
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;