Changeset - r7705:ad86784cbc03
[Not reviewed]
master
0 1 0
glx - 17 years ago 2007-10-09 21:40:15
glx@openttd.org
(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
1 file changed with 16 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/newgrf.cpp
Show inline comments
 
@@ -1762,7 +1762,7 @@ static bool IndustrytilesChangeInfo(uint
 
			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 in
 

	
 
			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);
 
				}
 
			}
0 comments (0 inline, 0 general)