Changeset - r2421:49aaa21511e2
[Not reviewed]
master
0 1 0
tron - 19 years ago 2005-09-13 09:23:23
tron@openttd.org
(svn r2947) Reorder some code to prepare for future enhancements and get rid of some gotos (peter1138)
1 file changed with 68 insertions and 57 deletions:
newgrf.c
68
57
0 comments (0 inline, 0 general)
newgrf.c
Show inline comments
 
@@ -1053,70 +1053,81 @@ static void VehicleChangeInfo(byte *buf,
 

	
 
	while (numprops-- && buf < bufend) {
 
		uint8 prop = grf_load_byte(&buf);
 

	
 
		if (feature == GSF_STATION)
 
			// stations don't share those common properties
 
			goto run_handler;
 
		bool ignoring = false;
 

	
 
		switch (prop) {
 
		case 0x00: { /* Introduction date */
 
			FOR_EACH_OBJECT {
 
				uint16 date = grf_load_word(&buf);
 
		switch (feature) {
 
			case GSF_TRAIN:
 
			case GSF_ROAD:
 
			case GSF_SHIP:
 
			case GSF_AIRCRAFT:
 
				/* Common properties for vehicles */
 
				switch (prop) {
 
					case 0x00: { /* Introduction date */
 
						FOR_EACH_OBJECT {
 
							uint16 date = grf_load_word(&buf);
 

	
 
				ei[i].base_intro = date;
 
			}
 
		}	break;
 
		case 0x02: { /* Decay speed */
 
			FOR_EACH_OBJECT {
 
				uint8 decay = grf_load_byte(&buf);
 
							ei[i].base_intro = date;
 
						}
 
					}	break;
 
					case 0x02: { /* Decay speed */
 
						FOR_EACH_OBJECT {
 
							uint8 decay = grf_load_byte(&buf);
 

	
 
				ei[i].unk2 &= 0x80;
 
				ei[i].unk2 |= decay & 0x7f;
 
			}
 
		}	break;
 
		case 0x03: { /* Vehicle life */
 
			FOR_EACH_OBJECT {
 
				uint8 life = grf_load_byte(&buf);
 
							ei[i].unk2 &= 0x80;
 
							ei[i].unk2 |= decay & 0x7f;
 
						}
 
					}	break;
 
					case 0x03: { /* Vehicle life */
 
						FOR_EACH_OBJECT {
 
							uint8 life = grf_load_byte(&buf);
 

	
 
				ei[i].lifelength = life;
 
			}
 
		}	break;
 
		case 0x04: { /* Model life */
 
			FOR_EACH_OBJECT {
 
				uint8 life = grf_load_byte(&buf);
 
							ei[i].lifelength = life;
 
						}
 
					}	break;
 
					case 0x04: { /* Model life */
 
						FOR_EACH_OBJECT {
 
							uint8 life = grf_load_byte(&buf);
 

	
 
				ei[i].base_life = life;
 
			}
 
		}	break;
 
		case 0x06: { /* Climates available */
 
			FOR_EACH_OBJECT {
 
				uint8 climates = grf_load_byte(&buf);
 
							ei[i].base_life = life;
 
						}
 
					}	break;
 
					case 0x06: { /* Climates available */
 
						FOR_EACH_OBJECT {
 
							uint8 climates = grf_load_byte(&buf);
 

	
 
				ei[i].railtype_climates &= 0xf0;
 
				ei[i].railtype_climates |= climates;
 
			}
 
		}	break;
 
		case 0x07: { /* Loading speed */
 
			/* TODO */
 
			/* Hyronymus explained me what does
 
			 * this mean and insists on having a
 
			 * credit ;-). --pasky */
 
			/* TODO: This needs to be supported by
 
			 * LoadUnloadVehicle() first. */
 
			FOR_EACH_OBJECT {
 
				grf_load_byte(&buf);
 
			}
 
			goto ignoring;
 
							ei[i].railtype_climates &= 0xf0;
 
							ei[i].railtype_climates |= climates;
 
						}
 
					}	break;
 
					case 0x07: { /* Loading speed */
 
						/* TODO */
 
						/* Hyronymus explained me what does
 
						 * this mean and insists on having a
 
						 * credit ;-). --pasky */
 
						/* TODO: This needs to be supported by
 
						 * LoadUnloadVehicle() first. */
 
						FOR_EACH_OBJECT {
 
							grf_load_byte(&buf);
 
						}
 
						ignoring = true;
 
						break;
 
					}
 

	
 
					default:
 
						if (handler[feature](engine, numinfo, prop, &buf, bufend - buf))
 
							ignoring = true;
 
						break;
 
				}
 
				break;
 

	
 
			default:
 
				if (handler[feature](engine, numinfo, prop, &buf, bufend - buf))
 
					ignoring = true;
 
				break;
 
		}
 
		default: {
 
run_handler:
 
			if (handler[feature](engine, numinfo, prop, &buf, bufend - buf)) {
 
ignoring:
 
				grfmsg(GMS_NOTICE, "VehicleChangeInfo: Ignoring property %x (not implemented).", prop);
 
			}
 
			break;
 
		}
 
		}
 

	
 
		if (ignoring)
 
			grfmsg(GMS_NOTICE, "VehicleChangeInfo: Ignoring property %x (not implemented).", prop);
 
	}
 
}
 

	
0 comments (0 inline, 0 general)