(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
--- a/src/industry_cmd.cpp Thu Oct 18 20:34:09 2007 +0000
+++ b/src/industry_cmd.cpp Thu Oct 18 20:35:59 2007 +0000
@@ -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 Thu Oct 18 20:34:09 2007 +0000
+++ b/src/newgrf_text.cpp Thu Oct 18 20:35:59 2007 +0000
@@ -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 Thu Oct 18 20:34:09 2007 +0000
+++ b/src/strgen/strgen.cpp Thu Oct 18 20:35:59 2007 +0000
@@ -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"