mirror of https://github.com/OpenRCT2/OpenRCT2.git
Add one decimal place to SI velocities
This commit is contained in:
parent
229abec6bf
commit
bf536ce7b7
|
@ -3921,7 +3921,7 @@ STR_5579 :Window scale factor:
|
||||||
STR_5580 :Czech koruna (Kc)
|
STR_5580 :Czech koruna (Kc)
|
||||||
STR_5581 :Show FPS
|
STR_5581 :Show FPS
|
||||||
STR_5582 :Trap mouse cursor in window
|
STR_5582 :Trap mouse cursor in window
|
||||||
STR_5583 :{COMMA16}ms{POWERNEGATIVEONE}
|
STR_5583 :{COMMA1DP16}ms{POWERNEGATIVEONE}
|
||||||
STR_5584 :SI
|
STR_5584 :SI
|
||||||
|
|
||||||
#####################
|
#####################
|
||||||
|
|
|
@ -134,6 +134,7 @@ enum {
|
||||||
FORMAT_SYMBOL_RAILWAY = 20001,
|
FORMAT_SYMBOL_RAILWAY = 20001,
|
||||||
FORMAT_SYMBOL_ROAD = 20002,
|
FORMAT_SYMBOL_ROAD = 20002,
|
||||||
FORMAT_SYMBOL_FLAG = 20003,
|
FORMAT_SYMBOL_FLAG = 20003,
|
||||||
|
FORMAT_COMMA1DP16 = 20004
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -109,7 +109,8 @@ format_code_token format_code_tokens[] = {
|
||||||
{ FORMAT_SMALLUP, "SMALLUP" },
|
{ FORMAT_SMALLUP, "SMALLUP" },
|
||||||
{ FORMAT_SMALLDOWN, "SMALLDOWN" },
|
{ FORMAT_SMALLDOWN, "SMALLDOWN" },
|
||||||
{ FORMAT_LEFT, "LEFT" },
|
{ FORMAT_LEFT, "LEFT" },
|
||||||
{ FORMAT_INVERTEDQUESTION, "INVERTEDQUESTION" }
|
{ FORMAT_INVERTEDQUESTION, "INVERTEDQUESTION" },
|
||||||
|
{ FORMAT_COMMA1DP16, "COMMA1DP16" }
|
||||||
};
|
};
|
||||||
|
|
||||||
uint32 format_get_code(const char *token)
|
uint32 format_get_code(const char *token)
|
||||||
|
@ -275,6 +276,71 @@ void format_comma_separated_integer(char **dest, long long value)
|
||||||
*dest = finish;
|
*dest = finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void format_comma_separated_fixed_1dp(char **dest, long long value)
|
||||||
|
{
|
||||||
|
int digit, groupIndex;
|
||||||
|
char *dst = *dest;
|
||||||
|
char *finish;
|
||||||
|
char tmp;
|
||||||
|
const char *commaMark = language_get_string(5151);
|
||||||
|
const char *decimalMark = language_get_string(5152);
|
||||||
|
const char *ch;
|
||||||
|
|
||||||
|
// Negative sign
|
||||||
|
if (value < 0) {
|
||||||
|
*dst++ = '-';
|
||||||
|
value = -value;
|
||||||
|
}
|
||||||
|
|
||||||
|
*dest = dst;
|
||||||
|
|
||||||
|
// One decimal place
|
||||||
|
digit = value % 10;
|
||||||
|
value /= 10;
|
||||||
|
*dst++ = '0' + digit;
|
||||||
|
|
||||||
|
ch = decimalMark;
|
||||||
|
while (*ch != 0) {
|
||||||
|
*dst++ = *ch++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value == 0) {
|
||||||
|
*dst++ = '0';
|
||||||
|
} else {
|
||||||
|
// Groups of three digits, right to left
|
||||||
|
groupIndex = 0;
|
||||||
|
while (value > 0) {
|
||||||
|
// Append group separator
|
||||||
|
if (groupIndex == 3) {
|
||||||
|
groupIndex = 0;
|
||||||
|
|
||||||
|
ch = commaMark;
|
||||||
|
while (*ch != 0) {
|
||||||
|
*dst++ = *ch++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
digit = value % 10;
|
||||||
|
value /= 10;
|
||||||
|
|
||||||
|
*dst++ = '0' + digit;
|
||||||
|
groupIndex++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finish = dst;
|
||||||
|
|
||||||
|
// Reverse string
|
||||||
|
dst--;
|
||||||
|
while (*dest < dst) {
|
||||||
|
tmp = **dest;
|
||||||
|
**dest = *dst;
|
||||||
|
*dst = tmp;
|
||||||
|
(*dest)++;
|
||||||
|
dst--;
|
||||||
|
}
|
||||||
|
*dest = finish;
|
||||||
|
}
|
||||||
|
|
||||||
void format_comma_separated_fixed_2dp(char **dest, long long value)
|
void format_comma_separated_fixed_2dp(char **dest, long long value)
|
||||||
{
|
{
|
||||||
int digit, groupIndex;
|
int digit, groupIndex;
|
||||||
|
@ -461,7 +527,7 @@ void format_velocity(char **dest, uint16 value)
|
||||||
stringId = STR_UNIT_SUFFIX_KILOMETRES_PER_HOUR;
|
stringId = STR_UNIT_SUFFIX_KILOMETRES_PER_HOUR;
|
||||||
break;
|
break;
|
||||||
case MEASUREMENT_FORMAT_SI:
|
case MEASUREMENT_FORMAT_SI:
|
||||||
value = mph_to_mps(value);
|
value = mph_to_dmps(value);
|
||||||
stringId = STR_UNIT_SUFFIX_METRES_PER_SECOND;
|
stringId = STR_UNIT_SUFFIX_METRES_PER_SECOND;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -517,7 +583,7 @@ void format_realtime(char **dest, uint16 value)
|
||||||
(*dest)--;
|
(*dest)--;
|
||||||
}
|
}
|
||||||
|
|
||||||
void format_string_code(unsigned char format_code, char **dest, char **args)
|
void format_string_code(unsigned int format_code, char **dest, char **args)
|
||||||
{
|
{
|
||||||
int value;
|
int value;
|
||||||
|
|
||||||
|
@ -543,6 +609,13 @@ void format_string_code(unsigned char format_code, char **dest, char **args)
|
||||||
|
|
||||||
format_comma_separated_fixed_2dp(dest, value);
|
format_comma_separated_fixed_2dp(dest, value);
|
||||||
break;
|
break;
|
||||||
|
case FORMAT_COMMA1DP16:
|
||||||
|
// Pop argument
|
||||||
|
value = *((sint16*)*args);
|
||||||
|
*args += 2;
|
||||||
|
|
||||||
|
format_comma_separated_fixed_1dp(dest, value);
|
||||||
|
break;
|
||||||
case FORMAT_COMMA16:
|
case FORMAT_COMMA16:
|
||||||
// Pop argument
|
// Pop argument
|
||||||
value = *((sint16*)*args);
|
value = *((sint16*)*args);
|
||||||
|
@ -676,7 +749,7 @@ void format_string_part_from_raw(utf8 **dest, const utf8 *src, char **args)
|
||||||
}
|
}
|
||||||
} else if (code <= 'z') {
|
} else if (code <= 'z') {
|
||||||
*(*dest)++ = code;
|
*(*dest)++ = code;
|
||||||
} else if (code < 142) {
|
} else if (code < 142 || code == FORMAT_COMMA1DP16) {
|
||||||
format_string_code(code, dest, args);
|
format_string_code(code, dest, args);
|
||||||
} else {
|
} else {
|
||||||
*dest = utf8_write_codepoint(*dest, code);
|
*dest = utf8_write_codepoint(*dest, code);
|
||||||
|
|
|
@ -43,10 +43,10 @@ int mph_to_kmph(int mph)
|
||||||
return (mph * 1648) >> 10;
|
return (mph * 1648) >> 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
int mph_to_mps(int mph)
|
int mph_to_dmps(int mph)
|
||||||
{
|
{
|
||||||
// 1 mph = 0.44704 m/s
|
// 1 mph = 4.4704 decimeters/s
|
||||||
return (mph * 58594) >> 17;
|
return (mph * 73243) >> 14;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool filename_valid_characters(const utf8 *filename)
|
bool filename_valid_characters(const utf8 *filename)
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
int squaredmetres_to_squaredfeet(int squaredMetres);
|
int squaredmetres_to_squaredfeet(int squaredMetres);
|
||||||
int metres_to_feet(int metres);
|
int metres_to_feet(int metres);
|
||||||
int mph_to_kmph(int mph);
|
int mph_to_kmph(int mph);
|
||||||
int mph_to_mps(int mph);
|
int mph_to_dmps(int mph);
|
||||||
|
|
||||||
bool filename_valid_characters(const utf8 *filename);
|
bool filename_valid_characters(const utf8 *filename);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue