(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 7755 7038d5001e0a
parent 7754 b8558299d724
child 7756 646255a72a89
(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"