mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-10-31 15:20:10 +00:00
(svn r14321) -Add: support for newgrfs printing bytes/words/dwords as hexadecimals.
This commit is contained in:
parent
efe93c527b
commit
feb15bb421
@ -284,6 +284,16 @@ char *TranslateTTDPatchCodes(uint32 grfid, const char *str)
|
||||
d += Utf8Encode(d, SCC_NEWGRF_UNPRINT);
|
||||
d += Utf8Encode(d, *str++);
|
||||
break;
|
||||
case 6:
|
||||
d += Utf8Encode(d, SCC_NEWGRF_PRINT_HEX_BYTE);
|
||||
break;
|
||||
case 7:
|
||||
d += Utf8Encode(d, SCC_NEWGRF_PRINT_HEX_WORD);
|
||||
break;
|
||||
case 8:
|
||||
d += Utf8Encode(d, SCC_NEWGRF_PRINT_HEX_DWORD);
|
||||
break;
|
||||
|
||||
default:
|
||||
grfmsg(1, "missing handler for extended format code");
|
||||
break;
|
||||
@ -625,6 +635,10 @@ uint RemapNewGRFStringControlCode(uint scc, char **buff, const char **str, int64
|
||||
case SCC_NEWGRF_PRINT_DWORD_CURRENCY:
|
||||
case SCC_NEWGRF_PRINT_DWORD: *argv = _newgrf_textrefstack->PopSignedDWord(); break;
|
||||
|
||||
case SCC_NEWGRF_PRINT_HEX_BYTE: *argv = _newgrf_textrefstack->PopUnsignedByte(); break;
|
||||
case SCC_NEWGRF_PRINT_HEX_DWORD: *argv = _newgrf_textrefstack->PopUnsignedDWord(); break;
|
||||
|
||||
case SCC_NEWGRF_PRINT_HEX_WORD:
|
||||
case SCC_NEWGRF_PRINT_WORD_SPEED:
|
||||
case SCC_NEWGRF_PRINT_WORD_LITRES:
|
||||
case SCC_NEWGRF_PRINT_UNSIGNED_WORD: *argv = _newgrf_textrefstack->PopUnsignedWord(); break;
|
||||
@ -653,6 +667,11 @@ uint RemapNewGRFStringControlCode(uint scc, char **buff, const char **str, int64
|
||||
case SCC_NEWGRF_PRINT_UNSIGNED_WORD:
|
||||
return SCC_COMMA;
|
||||
|
||||
case SCC_NEWGRF_PRINT_HEX_BYTE:
|
||||
case SCC_NEWGRF_PRINT_HEX_WORD:
|
||||
case SCC_NEWGRF_PRINT_HEX_DWORD:
|
||||
return SCC_HEX;
|
||||
|
||||
case SCC_NEWGRF_PRINT_DWORD_CURRENCY:
|
||||
case SCC_NEWGRF_PRINT_QWORD_CURRENCY:
|
||||
return SCC_CURRENCY;
|
||||
|
@ -267,6 +267,10 @@ static char *FormatNoCommaNumber(char *buff, int64 number, const char *last)
|
||||
return buff;
|
||||
}
|
||||
|
||||
static char *FormatHexNumber(char *buff, int64 number, const char *last)
|
||||
{
|
||||
return buff + snprintf(buff, last - buff, "0x%x", (uint32)number);
|
||||
}
|
||||
|
||||
static char *FormatYmdString(char *buff, Date date, const char* last)
|
||||
{
|
||||
@ -815,6 +819,10 @@ static char* FormatString(char* buff, const char* str, const int64* argv, uint c
|
||||
buff = FormatNoCommaNumber(buff, GetInt64(&argv), last);
|
||||
break;
|
||||
|
||||
case SCC_HEX: // {HEX}
|
||||
buff = FormatHexNumber(buff, GetInt64(&argv), last);
|
||||
break;
|
||||
|
||||
case SCC_CURRENCY: // {CURRENCY}
|
||||
buff = FormatGenericCurrency(buff, _currency, GetInt64(&argv), false, last);
|
||||
break;
|
||||
|
@ -64,6 +64,7 @@ enum StringControlCode {
|
||||
SCC_STRING,
|
||||
SCC_COMMA,
|
||||
SCC_NUM,
|
||||
SCC_HEX,
|
||||
|
||||
SCC_STRING_ID,
|
||||
SCC_RAW_STRING_POINTER,
|
||||
@ -101,7 +102,7 @@ enum StringControlCode {
|
||||
SCC_NEWGRF_FIRST,
|
||||
SCC_NEWGRF_PRINT_DWORD = SCC_NEWGRF_FIRST, ///< Read 4 bytes from the stack
|
||||
SCC_NEWGRF_PRINT_SIGNED_WORD, ///< Read 2 bytes from the stack as signed value
|
||||
SCC_NEWGRF_PRINT_SIGNED_BYTE, ///< Read 1 bytes from the stack as signed value
|
||||
SCC_NEWGRF_PRINT_SIGNED_BYTE, ///< Read 1 byte from the stack as signed value
|
||||
SCC_NEWGRF_PRINT_UNSIGNED_WORD, ///< Read 2 bytes from the stack as unsigned value
|
||||
SCC_NEWGRF_PRINT_DWORD_CURRENCY, ///< Read 4 bytes from the stack as currency
|
||||
SCC_NEWGRF_PRINT_STRING_ID, ///< Read 2 bytes from the stack as String ID
|
||||
@ -110,6 +111,9 @@ enum StringControlCode {
|
||||
SCC_NEWGRF_PRINT_WORD_SPEED, ///< Read 2 bytes from the stack as signed speed
|
||||
SCC_NEWGRF_PRINT_WORD_LITRES, ///< Read 2 bytes from the stack as signed litres
|
||||
SCC_NEWGRF_PRINT_QWORD_CURRENCY, ///< Read 8 bytes from the stack as currency
|
||||
SCC_NEWGRF_PRINT_HEX_BYTE, ///< Read 1 byte from the stack and print it as hex
|
||||
SCC_NEWGRF_PRINT_HEX_WORD, ///< Read 2 bytes from the stack and print it as hex
|
||||
SCC_NEWGRF_PRINT_HEX_DWORD, ///< Read 4 bytes from the stack and print it as hex
|
||||
SCC_NEWGRF_PUSH_WORD, ///< Pushes 2 bytes onto the stack
|
||||
SCC_NEWGRF_UNPRINT, ///< "Unprints" the given number of bytes from the string
|
||||
SCC_NEWGRF_DISCARD_WORD, ///< Discard the next two bytes
|
||||
|
Loading…
Reference in New Issue
Block a user