station_cmd.c
changeset 1266 9dc5638fe8cc
parent 1265 0430e635b116
child 1272 d3e09adb7736
--- a/station_cmd.c	Wed Feb 02 15:45:53 2005 +0000
+++ b/station_cmd.c	Wed Feb 02 16:16:43 2005 +0000
@@ -415,7 +415,7 @@
 	for(i=0,ge=st->goods; i!=NUM_CARGO; i++, ge++) {
 		ge->waiting_acceptance = 0;
 		ge->days_since_pickup = 0;
-		ge->enroute_from = 0xFF;
+		ge->enroute_from = INVALID_STATION;
 		ge->rating = 175;
 		ge->last_speed = 0;
 		ge->last_age = 0xFF;
@@ -2447,7 +2447,7 @@
 
 	ge = st->goods;
 	do {
-		if (ge->enroute_from != 0xFF) {
+		if (ge->enroute_from != INVALID_STATION) {
 			byte_inc_sat(&ge->enroute_time);
 			byte_inc_sat(&ge->days_since_pickup);
 
@@ -2589,7 +2589,7 @@
 				DistanceManhattan(tile, st->xy) <= radius) {
 			ge = st->goods;
 			for(i=0; i!=NUM_CARGO; i++,ge++) {
-				if (ge->enroute_from != 0xFF) {
+				if (ge->enroute_from != INVALID_STATION) {
 					ge->rating = clamp(ge->rating + amount, 0, 255);
 				}
 			}
@@ -2808,7 +2808,7 @@
 			for(j=0; j!=NUM_CARGO; j++) {
 				st->goods[j].waiting_acceptance = 0;
 				st->goods[j].days_since_pickup = 0;
-				st->goods[j].enroute_from = 0xFF;
+				st->goods[j].enroute_from = INVALID_STATION;
 				st->goods[j].rating = 175;
 				st->goods[j].last_speed = 0;
 				st->goods[j].last_age = 255;
@@ -2998,7 +2998,8 @@
 	SLE_VAR(GoodsEntry,waiting_acceptance,SLE_UINT16),
 	SLE_VAR(GoodsEntry,days_since_pickup,	SLE_UINT8),
 	SLE_VAR(GoodsEntry,rating,						SLE_UINT8),
-	SLE_VAR(GoodsEntry,enroute_from,			SLE_UINT8),
+	SLE_CONDVAR(GoodsEntry,enroute_from,			SLE_FILE_U8 | SLE_VAR_U16, 0, 6),
+	SLE_CONDVAR(GoodsEntry,enroute_from,			SLE_UINT16, 7, 255),
 	SLE_VAR(GoodsEntry,enroute_time,			SLE_UINT8),
 	SLE_VAR(GoodsEntry,last_speed,				SLE_UINT8),
 	SLE_VAR(GoodsEntry,last_age,					SLE_UINT8),
@@ -3012,8 +3013,13 @@
 	int i;
 
 	SlObject(st, _station_desc);
-	for (i = 0; i != NUM_CARGO; i++)
+	for (i = 0; i != NUM_CARGO; i++) {
 		SlObject(&st->goods[i], _goods_desc);
+
+		/* In older versions, enroute_from had 0xFF as INVALID_STATION, is now 0xFFFF */
+		if (_sl.full_version < 0x700 && st->goods[i].enroute_from == 0xFF)
+			st->goods[i].enroute_from = 0xFFFF;
+	}
 }
 
 static void Save_STNS(void)