# HG changeset patch # User frosch # Date 2016-12-23 13:38:50 # Node ID 52b2a22ff6c186bc3c149e3a2bdf66b28382ce01 # Parent 5260535f9057452a3531ad793675f996d68ecbf9 (svn r27706) -Feature: [NewGRF] String command 9A 1E to print the name of a cargo type. diff --git a/src/newgrf_text.cpp b/src/newgrf_text.cpp --- a/src/newgrf_text.cpp +++ b/src/newgrf_text.cpp @@ -527,6 +527,7 @@ char *TranslateTTDPatchCodes(uint32 grfi case 0x1B: case 0x1C: case 0x1D: + case 0x1E: d += Utf8Encode(d, SCC_NEWGRF_PRINT_DWORD_DATE_LONG + code - 0x16); break; @@ -996,6 +997,7 @@ uint RemapNewGRFStringControlCode(uint s case SCC_NEWGRF_PRINT_WORD_WEIGHT_SHORT: case SCC_NEWGRF_PRINT_WORD_POWER: case SCC_NEWGRF_PRINT_WORD_STATION_NAME: + case SCC_NEWGRF_PRINT_WORD_CARGO_NAME: if (argv_size < 1) { DEBUG(misc, 0, "Too many NewGRF string parameters."); return 0; @@ -1059,6 +1061,10 @@ uint RemapNewGRFStringControlCode(uint s case SCC_NEWGRF_PRINT_WORD_STRING_ID: *argv = MapGRFStringID(_newgrf_textrefstack.grffile->grfid, _newgrf_textrefstack.PopUnsignedWord()); break; + + case SCC_NEWGRF_PRINT_WORD_CARGO_NAME: + *argv = 1 << GetCargoTranslation(_newgrf_textrefstack.PopUnsignedWord(), _newgrf_textrefstack.grffile); + break; } } else { /* Consume additional parameter characters */ @@ -1128,6 +1134,9 @@ uint RemapNewGRFStringControlCode(uint s case SCC_NEWGRF_PRINT_WORD_CARGO_TINY: return SCC_CARGO_TINY; + case SCC_NEWGRF_PRINT_WORD_CARGO_NAME: + return SCC_CARGO_LIST; + case SCC_NEWGRF_PRINT_WORD_STATION_NAME: return SCC_STATION_NAME; diff --git a/src/table/control_codes.h b/src/table/control_codes.h --- a/src/table/control_codes.h +++ b/src/table/control_codes.h @@ -143,6 +143,7 @@ enum StringControlCode { SCC_NEWGRF_PRINT_WORD_CARGO_LONG, ///< 9A 1B: Read 2 + 2 bytes from the stack as cargo type (translated) and unsigned cargo amount SCC_NEWGRF_PRINT_WORD_CARGO_SHORT, ///< 9A 1C: Read 2 + 2 bytes from the stack as cargo type (translated) and unsigned cargo amount SCC_NEWGRF_PRINT_WORD_CARGO_TINY, ///< 9A 1D: Read 2 + 2 bytes from the stack as cargo type (translated) and unsigned cargo amount + SCC_NEWGRF_PRINT_WORD_CARGO_NAME, ///< 9A 1E: Read 2 bytes from the stack as cargo name SCC_NEWGRF_PUSH_WORD, ///< 9A 03: Pushes 2 bytes onto the stack SCC_NEWGRF_UNPRINT, ///< 9A 04: "Unprints" the given number of bytes from the string SCC_NEWGRF_DISCARD_WORD, ///< 85: Discard the next two bytes