Changeset - r19357:82eaad89f10e
[Not reviewed]
master
0 1 0
frosch - 12 years ago 2012-05-25 16:52:18
frosch@openttd.org
(svn r24272) -Fix: [NewGRF] Load cargo- and railtype-translation during both reservation and activation stage. That way they can be selected using Action7 depending on present cargo- or railtypes.
1 file changed with 32 insertions and 10 deletions:
0 comments (0 inline, 0 general)
src/newgrf.cpp
Show inline comments
 
@@ -2442,11 +2442,22 @@ static ChangeInfoResult GlobalVarChangeI
 
				break;
 
			}
 

	
 
			case 0x09: // Cargo translation table
 
				/* This is loaded during the reservation stage, so just skip it here. */
 
				/* Each entry is 4 bytes. */
 
				buf->Skip(4);
 
				break;
 
			case 0x09: { // Cargo Translation Table; loading during both reservation and activation stage (in case it is selected depending on defined cargos)
 
				if (i == 0) {
 
					if (gvid != 0) {
 
						grfmsg(1, "GlobalVarChangeInfo: Cargo translation table must start at zero");
 
						return CIR_INVALID_ID;
 
					}
 

	
 
					free(_cur.grffile->cargo_list);
 
					_cur.grffile->cargo_max = numinfo;
 
					_cur.grffile->cargo_list = MallocT<CargoLabel>(numinfo);
 
				}
 

	
 
				CargoLabel cl = buf->ReadDWord();
 
				_cur.grffile->cargo_list[i] = BSWAP32(cl);
 
				break;
 
			}
 

	
 
			case 0x0A: { // Currency display names
 
				uint curidx = GetNewgrfCurrencyIdConverted(gvid + i);
 
@@ -2560,11 +2571,22 @@ static ChangeInfoResult GlobalVarChangeI
 
				buf->Skip(8);
 
				break;
 

	
 
			case 0x12: // Rail type translation table
 
				/* This is loaded during the reservation stage, so just skip it here. */
 
				/* Each entry is 4 bytes. */
 
				buf->Skip(4);
 
				break;
 
			case 0x12: { // Rail type translation table; loading during both reservation and activation stage (in case it is selected depending on defined railtypes)
 
				if (i == 0) {
 
					if (gvid != 0) {
 
						grfmsg(1, "GlobalVarChangeInfo: Rail type translation table must start at zero");
 
						return CIR_INVALID_ID;
 
					}
 

	
 
					free(_cur.grffile->railtype_list);
 
					_cur.grffile->railtype_max = numinfo;
 
					_cur.grffile->railtype_list = MallocT<RailTypeLabel>(numinfo);
 
				}
 

	
 
				RailTypeLabel rtl = buf->ReadDWord();
 
				_cur.grffile->railtype_list[i] = BSWAP32(rtl);
 
				break;
 
			}
 

	
 
			case 0x13:   // Gender translation table
 
			case 0x14:   // Case translation table
0 comments (0 inline, 0 general)