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"