diff -r 81221bdf30d5 -r e481b171f6e5 src/newgrf_text.cpp --- a/src/newgrf_text.cpp Sat Aug 20 05:35:03 2011 +0000 +++ b/src/newgrf_text.cpp Sat Aug 20 15:11:55 2011 +0200 @@ -454,7 +454,7 @@ } case 0x82: case 0x83: - case 0x84: d += Utf8Encode(d, SCC_NEWGRF_PRINT_DATE + c - 0x82); break; + case 0x84: d += Utf8Encode(d, SCC_NEWGRF_PRINT_WORD_DATE + c - 0x82); break; case 0x85: d += Utf8Encode(d, SCC_NEWGRF_DISCARD_WORD); break; case 0x86: d += Utf8Encode(d, SCC_NEWGRF_ROTATE_TOP_4_WORDS); break; case 0x87: d += Utf8Encode(d, SCC_NEWGRF_PRINT_WORD_VOLUME); break; @@ -567,6 +567,12 @@ } break; + case 0x16: + case 0x17: d += Utf8Encode(d, SCC_NEWGRF_PRINT_DWORD_DATE + code - 0x16); break; + + case 0x18: + case 0x19: d += Utf8Encode(d, SCC_NEWGRF_PRINT_WORD_POWER + code - 0x18); break; + default: grfmsg(1, "missing handler for extended format code"); break; @@ -1009,32 +1015,37 @@ if (_newgrf_textrefstack.used) { switch (scc) { default: NOT_REACHED(); - case SCC_NEWGRF_PRINT_SIGNED_BYTE: *argv = _newgrf_textrefstack.PopSignedByte(); break; - case SCC_NEWGRF_PRINT_SIGNED_WORD: *argv = _newgrf_textrefstack.PopSignedWord(); break; - case SCC_NEWGRF_PRINT_QWORD_CURRENCY: *argv = _newgrf_textrefstack.PopUnsignedQWord(); break; + case SCC_NEWGRF_PRINT_SIGNED_BYTE: *argv = _newgrf_textrefstack.PopSignedByte(); break; + case SCC_NEWGRF_PRINT_SIGNED_WORD: *argv = _newgrf_textrefstack.PopSignedWord(); break; + case SCC_NEWGRF_PRINT_QWORD_CURRENCY: *argv = _newgrf_textrefstack.PopUnsignedQWord(); break; case SCC_NEWGRF_PRINT_DWORD_CURRENCY: - case SCC_NEWGRF_PRINT_DWORD: *argv = _newgrf_textrefstack.PopSignedDWord(); break; + 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_QWORD: *argv = _newgrf_textrefstack.PopSignedQWord(); break; + case SCC_NEWGRF_PRINT_HEX_BYTE: *argv = _newgrf_textrefstack.PopUnsignedByte(); break; + case SCC_NEWGRF_PRINT_HEX_QWORD: *argv = _newgrf_textrefstack.PopSignedQWord(); break; case SCC_NEWGRF_PRINT_HEX_WORD: case SCC_NEWGRF_PRINT_WORD_SPEED: case SCC_NEWGRF_PRINT_WORD_VOLUME: case SCC_NEWGRF_PRINT_WORD_WEIGHT: + case SCC_NEWGRF_PRINT_WORD_POWER: + case SCC_NEWGRF_PRINT_WORD_FORCE: case SCC_NEWGRF_PRINT_WORD_STATION_NAME: - case SCC_NEWGRF_PRINT_UNSIGNED_WORD: *argv = _newgrf_textrefstack.PopUnsignedWord(); break; + case SCC_NEWGRF_PRINT_UNSIGNED_WORD: *argv = _newgrf_textrefstack.PopUnsignedWord(); break; - case SCC_NEWGRF_PRINT_DATE: - case SCC_NEWGRF_PRINT_MONTH_YEAR: *argv = _newgrf_textrefstack.PopSignedWord() + DAYS_TILL_ORIGINAL_BASE_YEAR; break; + case SCC_NEWGRF_PRINT_WORD_DATE: + case SCC_NEWGRF_PRINT_WORD_MONTH_YEAR: *argv = _newgrf_textrefstack.PopUnsignedWord() + DAYS_TILL_ORIGINAL_BASE_YEAR; break; - case SCC_NEWGRF_DISCARD_WORD: _newgrf_textrefstack.PopUnsignedWord(); break; + case SCC_NEWGRF_PRINT_DWORD_DATE: + case SCC_NEWGRF_PRINT_DWORD_MONTH_YEAR: + case SCC_NEWGRF_PRINT_HEX_DWORD: *argv = _newgrf_textrefstack.PopUnsignedDWord(); break; - case SCC_NEWGRF_ROTATE_TOP_4_WORDS: _newgrf_textrefstack.RotateTop4Words(); break; - case SCC_NEWGRF_PUSH_WORD: _newgrf_textrefstack.PushWord(Utf8Consume(str)); break; - case SCC_NEWGRF_UNPRINT: *buff = max(*buff - Utf8Consume(str), buf_start); break; + case SCC_NEWGRF_DISCARD_WORD: _newgrf_textrefstack.PopUnsignedWord(); break; + + case SCC_NEWGRF_ROTATE_TOP_4_WORDS: _newgrf_textrefstack.RotateTop4Words(); break; + case SCC_NEWGRF_PUSH_WORD: _newgrf_textrefstack.PushWord(Utf8Consume(str)); break; + case SCC_NEWGRF_UNPRINT: *buff = max(*buff - Utf8Consume(str), buf_start); break; case SCC_NEWGRF_PRINT_STRING_ID: *argv = TTDPStringIDToOTTDStringIDMapping(_newgrf_textrefstack.PopUnsignedWord()); @@ -1063,11 +1074,13 @@ case SCC_NEWGRF_PRINT_STRING_ID: return SCC_NEWGRF_PRINT_STRING_ID; - case SCC_NEWGRF_PRINT_DATE: + case SCC_NEWGRF_PRINT_WORD_DATE: + case SCC_NEWGRF_PRINT_DWORD_DATE: return SCC_DATE_LONG; - case SCC_NEWGRF_PRINT_MONTH_YEAR: - return SCC_DATE_TINY; + case SCC_NEWGRF_PRINT_WORD_MONTH_YEAR: + case SCC_NEWGRF_PRINT_DWORD_MONTH_YEAR: + return SCC_DATE_SHORT; case SCC_NEWGRF_PRINT_WORD_SPEED: return SCC_VELOCITY; @@ -1078,6 +1091,12 @@ case SCC_NEWGRF_PRINT_WORD_WEIGHT: return SCC_WEIGHT; + case SCC_NEWGRF_PRINT_WORD_POWER: + return SCC_POWER; + + case SCC_NEWGRF_PRINT_WORD_FORCE: + return SCC_FORCE; + case SCC_NEWGRF_PRINT_WORD_STATION_NAME: return SCC_STATION_NAME; diff -r 81221bdf30d5 -r e481b171f6e5 src/table/control_codes.h --- a/src/table/control_codes.h Sat Aug 20 05:35:03 2011 +0000 +++ b/src/table/control_codes.h Sat Aug 20 15:11:55 2011 +0200 @@ -118,11 +118,15 @@ 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 - SCC_NEWGRF_PRINT_DATE, ///< Read 2 bytes from the stack as base 1920 date - SCC_NEWGRF_PRINT_MONTH_YEAR, ///< Read 2 bytes from the stack as base 1920 date + SCC_NEWGRF_PRINT_DWORD_DATE, ///< Read 4 bytes from the stack as base 0 date + SCC_NEWGRF_PRINT_DWORD_MONTH_YEAR, ///< Read 4 bytes from the stack as base 0 date + SCC_NEWGRF_PRINT_WORD_DATE, ///< Read 2 bytes from the stack as base 1920 date + SCC_NEWGRF_PRINT_WORD_MONTH_YEAR, ///< Read 2 bytes from the stack as base 1920 date SCC_NEWGRF_PRINT_WORD_SPEED, ///< Read 2 bytes from the stack as signed speed SCC_NEWGRF_PRINT_WORD_VOLUME, ///< Read 2 bytes from the stack as signed volume SCC_NEWGRF_PRINT_WORD_WEIGHT, ///< Read 2 bytes from the stack as signed weight + SCC_NEWGRF_PRINT_WORD_POWER, ///< Read 2 bytes from the stack as signed power + SCC_NEWGRF_PRINT_WORD_FORCE, ///< Read 2 bytes from the stack as signed force SCC_NEWGRF_PRINT_WORD_STATION_NAME, ///< Read 2 bytes from the stack as station name 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