(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

pull/155/head
glx 17 years ago
parent 4ce24d8a40
commit f6907db708

@ -1621,7 +1621,12 @@ CommandCost CmdBuildIndustry(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
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 @@ static void MaybeNewIndustry(void)
}
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 @@ static void ChangeIndustryProduction(Industry *i, bool monthly)
}
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);

@ -636,7 +636,7 @@ uint RemapNewGRFStringControlCode(uint scc, char **buff, const char **str, int64
return SCC_CURRENCY;
case SCC_NEWGRF_PRINT_STRING_ID:
return SCC_STRING;
return SCC_STRING1;
case SCC_NEWGRF_PRINT_DATE:
return SCC_DATE_LONG;

@ -1014,7 +1014,6 @@ static void WriteStringsH(const char *filename)
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 @@ static void WriteStringsH(const char *filename)
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 @@ static void WriteStringsH(const char *filename)
}
}
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"

Loading…
Cancel
Save