Mercurial > hg > openttd
changeset 7755:2ee2ce82e2d6 draft
(svn r11293) -Fix: newgrf defined industry news messages use TTD format for args, which is not the same as our. So we must detect those strings and pass them the right params
author | glx <glx@openttd.org> |
---|---|
date | Thu, 18 Oct 2007 20:35:59 +0000 |
parents | 0acb5272ec27 |
children | 46a1943852c7 |
files | src/industry_cmd.cpp src/newgrf_text.cpp src/strgen/strgen.cpp |
diffstat | 3 files changed, 22 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -1621,7 +1621,12 @@ const Industry *ind = CreateNewIndustryHelper(RandomTile(), p1, flags, indspec, tilespec_index); if (ind != NULL) { SetDParam(0, indspec->name); - SetDParam(1, ind->town->index); + if (indspec->new_industry_text > STR_LAST_STRINGID) { + SetDParam(1, STR_TOWN); + SetDParam(2, ind->town->index); + } else { + SetDParam(1, ind->town->index); + } AddNewsItem(indspec->new_industry_text, NEWS_FLAGS(NM_THIN, NF_VIEWPORT | NF_TILE, NT_OPENCLOSE, 0), ind->xy, 0); break; @@ -1829,7 +1834,12 @@ } SetDParam(0, ind_spc->name); - SetDParam(1, ind->town->index); + if (ind_spc->new_industry_text > STR_LAST_STRINGID) { + SetDParam(1, STR_TOWN); + SetDParam(2, ind->town->index); + } else { + SetDParam(1, ind->town->index); + } AddNewsItem(ind_spc->new_industry_text, NEWS_FLAGS(NM_THIN, NF_VIEWPORT | NF_TILE, NT_OPENCLOSE, 0), ind->xy, 0); } @@ -1984,7 +1994,13 @@ } if (!suppress_message && str != STR_NULL) { - SetDParam(0, i->index); + if (str > STR_LAST_STRINGID) { + SetDParam(0, STR_TOWN); + SetDParam(1, i->town->index); + SetDParam(2, indspec->name); + } else { + SetDParam(0, i->index); + } AddNewsItem(str, NEWS_FLAGS(NM_THIN, NF_VIEWPORT | NF_TILE, closeit ? NT_OPENCLOSE : NT_ECONOMY, 0), i->xy + TileDiffXY(1, 1), 0);
--- a/src/newgrf_text.cpp +++ b/src/newgrf_text.cpp @@ -636,7 +636,7 @@ return SCC_CURRENCY; case SCC_NEWGRF_PRINT_STRING_ID: - return SCC_STRING; + return SCC_STRING1; case SCC_NEWGRF_PRINT_DATE: return SCC_DATE_LONG;
--- a/src/strgen/strgen.cpp +++ b/src/strgen/strgen.cpp @@ -1014,7 +1014,6 @@ FILE *out; int i; int next = -1; - int lastgrp; out = fopen("tmp.xxx", "w"); if (out == NULL) fatal("can't open tmp.xxx"); @@ -1023,8 +1022,6 @@ fprintf(out, "#ifndef TABLE_STRINGS_H\n"); fprintf(out, "#define TABLE_STRINGS_H\n"); - lastgrp = 0; - for (i = 0; i != lengthof(_strings); i++) { if (_strings[i] != NULL) { if (next != i) fprintf(out, "\n"); @@ -1033,6 +1030,8 @@ } } + fprintf(out, "\nstatic const StringID STR_LAST_STRINGID = 0x%X;\n", next - 1); + fprintf(out, "\nenum {\n" "\tLANGUAGE_PACK_IDENT = 0x474E414C, // Big Endian value for 'LANG' (LE is 0x 4C 41 4E 47)\n"