diff options
author | glx <glx@openttd.org> | 2007-10-09 21:40:15 +0000 |
---|---|---|
committer | glx <glx@openttd.org> | 2007-10-09 21:40:15 +0000 |
commit | ffbd818517b42f1280217fa8cfb344683c75d3f5 (patch) | |
tree | b3e46b0d169e3eedb6b388ccf4c56f7090f70199 | |
parent | 77020e255b530faa018efb1b30a74f86def04f01 (diff) | |
download | openttd-ffbd818517b42f1280217fa8cfb344683c75d3f5.tar.xz |
(svn r11239) -Fix (r10495): don't do cargo translation when loading grfs, but do it once all grfs are loaded. This ensure correct accept/produced cargo when a grf uses cargo defined in a grf loaded after itself
-rw-r--r-- | src/newgrf.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/newgrf.cpp b/src/newgrf.cpp index c993e1e01..6d0c3ca51 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -1762,7 +1762,7 @@ static bool IndustrytilesChangeInfo(uint indtid, int numinfo, int prop, byte **b case 0x0B: case 0x0C: { uint16 acctp = grf_load_word(&buf); - tsp->accepts_cargo[prop - 0x0A] = GetCargoTranslation(GB(acctp, 0, 8), _cur_grffile); + tsp->accepts_cargo[prop - 0x0A] = GB(acctp, 0, 8); tsp->acceptance[prop - 0x0A] = GB(acctp, 8, 8); } break; @@ -1960,13 +1960,13 @@ static bool IndustriesChangeInfo(uint indid, int numinfo, int prop, byte **bufp, case 0x10: // Production cargo types for (byte j = 0; j < 2; j++) { - indsp->produced_cargo[j] = GetCargoTranslation(grf_load_byte(&buf), _cur_grffile); + indsp->produced_cargo[j] = grf_load_byte(&buf); } break; case 0x11: // Acceptance cargo types for (byte j = 0; j < 3; j++) { - indsp->accepts_cargo[j] = GetCargoTranslation(grf_load_byte(&buf), _cur_grffile); + indsp->accepts_cargo[j] = grf_load_byte(&buf); } grf_load_byte(&buf); // Unnused, eat it up break; @@ -5234,6 +5234,15 @@ static void FinaliseIndustriesArray() strid = GetGRFStringID(indsp->grf_prop.grffile->grfid, indsp->new_industry_text); if (strid != STR_UNDEFINED) indsp->new_industry_text = strid; + for (byte j = 0; j < 2; j++) { + CargoID c = GetCargoTranslation(indsp->produced_cargo[j], indsp->grf_prop.grffile); + indsp->produced_cargo[j] = c; + } + for (byte j = 0; j < 3; j++) { + CargoID c = GetCargoTranslation(indsp->accepts_cargo[j], indsp->grf_prop.grffile); + indsp->accepts_cargo[j] = c; + } + _industry_mngr.SetEntitySpec(indsp); _loaded_newgrf_features.has_newindustries = true; } @@ -5244,6 +5253,10 @@ static void FinaliseIndustriesArray() for (int i = 0; i < NUM_INDUSTRYTILES; i++) { IndustryTileSpec *indtsp = file->indtspec[i]; if (indtsp != NULL) { + for (byte j = 0; j < 3; j++) { + CargoID c = GetCargoTranslation(indtsp->accepts_cargo[j], indtsp->grf_prop.grffile); + indtsp->accepts_cargo[j] = c; + } _industile_mngr.SetEntitySpec(indtsp); } } |