1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-21 14:02:59 +01:00

Add string format debugging assistance

This commit is contained in:
Ted John
2016-10-16 20:24:32 +01:00
parent f680f84523
commit b6a0890d97
2 changed files with 33 additions and 1 deletions

View File

@@ -34,6 +34,12 @@ char gCommonStringFormatBuffer[256];
uint8 gCommonFormatArgs[80];
uint8 gMapTooltipFormatArgs[40];
#ifdef DEBUG
// Set to true before a string format call to see details of the formatting.
// Set to false after the call.
bool gDebugStringFormatting = false;
#endif
const rct_string_id SpeedNames[] = {
STR_SPEED_NORMAL,
STR_SPEED_QUICK,
@@ -1050,6 +1056,12 @@ static void format_string_code(unsigned int format_code, char **dest, size_t *si
if ((*size) == 0) return;
#ifdef DEBUG
if (gDebugStringFormatting) {
printf("format_string_code(\"%s\")\n", format_get_token(format_code));
}
#endif
switch (format_code) {
case FORMAT_COMMA32:
// Pop argument
@@ -1188,6 +1200,12 @@ static void format_string_code(unsigned int format_code, char **dest, size_t *si
static void format_string_part_from_raw(utf8 **dest, size_t *size, const utf8 *src, char **args)
{
#ifdef DEBUG
if (gDebugStringFormatting) {
printf("format_string_part_from_raw(\"%s\")\n", src);
}
#endif
unsigned int code;
while (*size > 1) {
code = utf8_get_next(src, &src);
@@ -1232,7 +1250,8 @@ static void format_string_part(utf8 **dest, size_t *size, rct_string_id format,
*(*dest) = '\0';
} else if (format < 0x8000) {
// Language string
format_string_part_from_raw(dest, size, language_get_string(format), args);
const utf8 * rawString = language_get_string(format);
format_string_part_from_raw(dest, size, rawString, args);
} else if (format < 0x9000) {
// Custom string
format -= 0x8000;
@@ -1271,6 +1290,12 @@ static void format_string_part(utf8 **dest, size_t *size, rct_string_id format,
*/
void format_string(utf8 *dest, size_t size, rct_string_id format, void *args)
{
#ifdef DEBUG
if (gDebugStringFormatting) {
printf("format_string(%hu)\n", format);
}
#endif
utf8 *end = dest;
size_t left = size;
format_string_part(&end, &left, format, (char**)&args);
@@ -1280,6 +1305,12 @@ void format_string(utf8 *dest, size_t size, rct_string_id format, void *args)
void format_string_raw(utf8 *dest, size_t size, utf8 *src, void *args)
{
#ifdef DEBUG
if (gDebugStringFormatting) {
printf("format_string_raw(\"%s\")\n", src);
}
#endif
utf8 *end = dest;
size_t left = size;
format_string_part_from_raw(&end, &left, src, (char**)&args);

View File

@@ -65,6 +65,7 @@ extern utf8 gUserStrings[MAX_USER_STRINGS * USER_STRING_MAX_LENGTH];
extern char gCommonStringFormatBuffer[256];
extern uint8 gCommonFormatArgs[80];
extern uint8 gMapTooltipFormatArgs[40];
extern bool gDebugStringFormatting;
extern const rct_string_id SpeedNames[5];
extern const rct_string_id ObjectiveNames[12];