(svn r9703) -Codechange: support callback 36 in vehicle purchase lists
authorpeter1138
Fri, 20 Apr 2007 21:42:06 +0000
changeset 6517 295b16f8fa7d
parent 6516 0d14650b196b
child 6518 683f200b2510
(svn r9703) -Codechange: support callback 36 in vehicle purchase lists
src/build_vehicle_gui.cpp
src/newgrf_engine.cpp
src/newgrf_engine.h
--- a/src/build_vehicle_gui.cpp	Fri Apr 20 21:21:47 2007 +0000
+++ b/src/build_vehicle_gui.cpp	Fri Apr 20 21:42:06 2007 +0000
@@ -423,7 +423,7 @@
 	}
 
 	/* Running cost */
-	SetDParam(0, (rvi->running_cost_base * _price.running_rail[rvi->running_cost_class] >> 8) << multihead);
+	SetDParam(0, (GetEngineProperty(engine_number, 0x0D, rvi->running_cost_base) * _price.running_rail[rvi->running_cost_class] >> 8) << multihead);
 	DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, 0);
 	y += 10;
 
@@ -481,7 +481,7 @@
 	y += 10;
 
 	/* Running cost */
-	SetDParam(0, svi->running_cost * _price.ship_running >> 8);
+	SetDParam(0, GetEngineProperty(engine_number, 0x0B, svi->running_cost) * _price.ship_running >> 8);
 	DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, 0);
 	y += 10;
 
@@ -516,7 +516,7 @@
 	y += 10;
 
 	/* Running cost */
-	SetDParam(0, avi->running_cost * _price.aircraft_running >> 8);
+	SetDParam(0, GetEngineProperty(engine_number, 0x0E, avi->running_cost) * _price.aircraft_running >> 8);
 	DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, 0);
 	y += 10;
 
--- a/src/newgrf_engine.cpp	Fri Apr 20 21:21:47 2007 +0000
+++ b/src/newgrf_engine.cpp	Fri Apr 20 21:42:06 2007 +0000
@@ -952,7 +952,7 @@
 }
 
 
-/* Callback 36 handler */
+/* Callback 36 handlers */
 uint GetVehicleProperty(const Vehicle *v, uint8 property, uint orig_value)
 {
 	uint16 callback = GetVehicleCallback(CBID_VEHICLE_MODIFY_PROPERTY, property, 0, v->engine_type, v);
@@ -962,6 +962,15 @@
 }
 
 
+uint GetEngineProperty(EngineID engine, uint8 property, uint orig_value)
+{
+	uint16 callback = GetVehicleCallback(CBID_VEHICLE_MODIFY_PROPERTY, property, 0, engine, NULL);
+	if (callback != CALLBACK_FAILED) return callback;
+
+	return orig_value;
+}
+
+
 static void DoTriggerVehicle(Vehicle *v, VehicleTrigger trigger, byte base_random_bits, bool first)
 {
 	const SpriteGroup *group;
--- a/src/newgrf_engine.h	Fri Apr 20 21:21:47 2007 +0000
+++ b/src/newgrf_engine.h	Fri Apr 20 21:42:06 2007 +0000
@@ -38,6 +38,7 @@
 /* Handler to Evaluate callback 36. If the callback fails (i.e. most of the
  * time) orig_value is returned */
 uint GetVehicleProperty(const Vehicle *v, uint8 property, uint orig_value);
+uint GetEngineProperty(EngineID engine, uint8 property, uint orig_value);
 
 enum VehicleTrigger {
 	VEHICLE_TRIGGER_NEW_CARGO     = 1,