(svn r11030) -Revert r11016, Fix [FS#1178]: the way to determine whether a station should get goods was not done properly.
authorrubidium
Sat, 01 Sep 2007 08:04:08 +0000
changeset 8011 8e95362021d5
parent 8010 a924bdae75ab
child 8012 51288087bccd
(svn r11030) -Revert r11016, Fix [FS#1178]: the way to determine whether a station should get goods was not done properly.
src/economy.cpp
src/openttd.cpp
src/saveload.cpp
src/station_cmd.cpp
--- a/src/economy.cpp	Fri Aug 31 23:29:53 2007 +0000
+++ b/src/economy.cpp	Sat Sep 01 08:04:08 2007 +0000
@@ -1629,7 +1629,6 @@
 
 			ge->cargo.MoveTo(&v->cargo, cap, CargoList::MTA_CARGO_LOAD, st->xy);
 
-			SETBIT(ge->acceptance_pickup, GoodsEntry::PICKUP);
 			st->time_since_load = 0;
 			st->last_vehicle_type = v->type;
 
--- a/src/openttd.cpp	Fri Aug 31 23:29:53 2007 +0000
+++ b/src/openttd.cpp	Sat Sep 01 08:04:08 2007 +0000
@@ -2169,6 +2169,16 @@
 		}
 	}
 
+	if (CheckSavegameVersion(74)) {
+		Station *st;
+		FOR_ALL_STATIONS(st) {
+			for (CargoID c = 0; c < NUM_CARGO; c++) {
+				st->goods[c].last_speed = 0;
+				if (st->goods[c].cargo.Count() != 0) SETBIT(st->goods[c].acceptance_pickup, GoodsEntry::PICKUP);
+			}
+		}
+	}
+
 
 	return true;
 }
--- a/src/saveload.cpp	Fri Aug 31 23:29:53 2007 +0000
+++ b/src/saveload.cpp	Sat Sep 01 08:04:08 2007 +0000
@@ -29,7 +29,7 @@
 #include "strings.h"
 #include <list>
 
-extern const uint16 SAVEGAME_VERSION = 73;
+extern const uint16 SAVEGAME_VERSION = 74;
 uint16 _sl_version;       ///< the major savegame version identifier
 byte   _sl_minor_version; ///< the minor savegame version, DO NOT USE!
 
--- a/src/station_cmd.cpp	Fri Aug 31 23:29:53 2007 +0000
+++ b/src/station_cmd.cpp	Sat Sep 01 08:04:08 2007 +0000
@@ -2532,6 +2532,7 @@
 static void UpdateStationWaiting(Station *st, CargoID type, uint amount)
 {
 	st->goods[type].cargo.Append(new CargoPacket(st->index, amount));
+	SETBIT(st->goods[type].acceptance_pickup, GoodsEntry::PICKUP);
 
 	InvalidateWindow(WC_STATION_VIEW, st->index);
 	st->MarkTilesDirty(true);
@@ -2619,7 +2620,7 @@
 				if (!st->IsBuoy() &&
 						(st->town->exclusive_counter == 0 || st->town->exclusivity == st->owner) && // check exclusive transport rights
 						st->goods[type].rating != 0 && // when you've got the lowest rating you can get, it's better not to give cargo anymore
-						(!_patches.selectgoods || HASBIT(st->goods[type].acceptance_pickup, GoodsEntry::PICKUP)) && // we are servicing the station (or cargo is dumped on all stations)
+						(!_patches.selectgoods || st->goods[type].last_speed != 0) && // we are servicing the station (or cargo is dumped on all stations)
 						((st->facilities & ~FACIL_BUS_STOP)   != 0 || IsCargoInClass(type, CC_PASSENGERS)) && // if we have other fac. than a bus stop, or the cargo is passengers
 						((st->facilities & ~FACIL_TRUCK_STOP) != 0 || !IsCargoInClass(type, CC_PASSENGERS))) { // if we have other fac. than a cargo bay or the cargo is not passengers
 					if (_patches.modified_catchment) {