changeset 3988:f0035479f4a4 draft

(svn r5187) - NewGRF: temporarily change a vehicle's cargo subtype when calling the refit capacity callback.
author peter1138 <peter1138@openttd.org>
date Fri, 09 Jun 2006 07:03:53 +0000
parents 1fde440441eb
children 61f34451506a
files aircraft_cmd.c train_cmd.c
diffstat 2 files changed, 9 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/aircraft_cmd.c
+++ b/aircraft_cmd.c
@@ -564,12 +564,15 @@
 	if (HASBIT(EngInfo(v->engine_type)->callbackmask, CBM_REFIT_CAPACITY)) {
 		/* Back up the existing cargo type */
 		CargoID temp_cid = v->cargo_type;
+		byte temp_subtype = v->cargo_subtype;
 		v->cargo_type = new_cid;
+		v->cargo_subtype = new_subtype;
 
 		callback = GetVehicleCallback(CBID_VEHICLE_REFIT_CAPACITY, 0, 0, v->engine_type, v);
 
 		/* Restore the cargo type */
 		v->cargo_type = temp_cid;
+		v->cargo_subtype = temp_subtype;
 	}
 
 	if (callback == CALLBACK_FAILED) {
--- a/train_cmd.c
+++ b/train_cmd.c
@@ -1760,11 +1760,16 @@
 			uint16 amount = CALLBACK_FAILED;
 
 			if (HASBIT(EngInfo(v->engine_type)->callbackmask, CBM_REFIT_CAPACITY)) {
-				/* Check the 'refit capacity' callback */
+				/* Back up the vehicle's cargo type */
 				CargoID temp_cid = v->cargo_type;
+				byte temp_subtype = v->cargo_subtype;
 				v->cargo_type = new_cid;
+				v->cargo_subtype = new_subtype;
+				/* Check the refit capacity callback */
 				amount = GetVehicleCallback(CBID_VEHICLE_REFIT_CAPACITY, 0, 0, v->engine_type, v);
+				/* Restore the original cargo type */
 				v->cargo_type = temp_cid;
+				v->cargo_subtype = temp_subtype;
 			}
 
 			if (amount == CALLBACK_FAILED) { // callback failed or not used, use default