(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
authorglx
Thu, 18 Oct 2007 20:35:59 +0000
changeset 8251 2791c76125c0
parent 8250 eb781d98d4af
child 8252 396c795ecf31
(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
src/industry_cmd.cpp
src/newgrf_text.cpp
src/strgen/strgen.cpp
--- 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"