Changeset - r10135:de3b4e59727f
[Not reviewed]
master
0 3 0
rubidium - 16 years ago 2008-09-14 14:31:37
rubidium@openttd.org
(svn r14321) -Add: support for newgrfs printing bytes/words/dwords as hexadecimals.
3 files changed with 32 insertions and 1 deletions:
0 comments (0 inline, 0 general)
src/newgrf_text.cpp
Show inline comments
 
@@ -284,6 +284,16 @@ char *TranslateTTDPatchCodes(uint32 grfi
 
						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 s
 
			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 s
 
		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;
src/strings.cpp
Show inline comments
 
@@ -267,6 +267,10 @@ static char *FormatNoCommaNumber(char *b
 
	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, co
 
				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;
src/table/control_codes.h
Show inline comments
 
@@ -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
0 comments (0 inline, 0 general)