(svn r3071) -NewGRF: Add support for rail vehicle weight greater than 255 tons.
authorpeter1138
Thu, 20 Oct 2005 15:15:58 +0000
changeset 2542 fdea27216e48
parent 2541 99c04a35ebc5
child 2543 a6344040f735
(svn r3071) -NewGRF: Add support for rail vehicle weight greater than 255 tons.
engine.h
newgrf.c
--- a/engine.h	Wed Oct 19 20:00:05 2005 +0000
+++ b/engine.h	Thu Oct 20 15:15:58 2005 +0000
@@ -14,7 +14,7 @@
 	byte base_cost;
 	uint16 max_speed;
 	uint16 power;
-	byte weight;
+	uint16 weight;
 	byte running_cost_base;
 	byte engclass; // 0: steam, 1: diesel, 2: electric
 	byte capacity;
--- a/newgrf.c	Wed Oct 19 20:00:05 2005 +0000
+++ b/newgrf.c	Thu Oct 20 15:15:58 2005 +0000
@@ -311,7 +311,7 @@
 			FOR_EACH_OBJECT {
 				uint8 weight = grf_load_byte(&buf);
 
-				rvi[i].weight = weight;
+				SB(rvi[i].weight, 0, 8, weight);
 			}
 		} break;
 		case 0x17: { /* Cost factor */
@@ -390,13 +390,23 @@
 				rvi[i].pow_wag_weight = wag_weight;
 			}
 		} break;
+		case 0x24: { /* High byte of vehicle weight */
+			FOR_EACH_OBJECT {
+				byte weight = grf_load_byte(&buf);
+
+				if (weight < 4) {
+					grfmsg(GMS_NOTICE, "RailVehicleChangeInfo: Nonsensical weight of %d tons, ignoring.", weight << 8);
+				} else {
+					SB(rvi[i].weight, 8, 8, weight);
+				}
+			}
+		} break;
 		/* TODO */
 		/* Fall-through for unimplemented one byte long properties. */
 		case 0x1A:	/* Sort order */
 		case 0x1C:	/* Refit cost */
 		case 0x1F:	/* Tractive effort */
 		case 0x20:	/* Air drag */
-		case 0x24:	/* High byte of vehicle weight */
 		case 0x25:	/* User-defined bit mask to set when checking veh. var. 42 */
 		case 0x26:	/* Retire vehicle early */
 			{