changeset 19163:52947f3937e6 draft

(svn r24029) -Change: [NoAI] make AIEngine::IsArticulated return true if the articulated callback flag is set, don't try to run the callback.
author yexo <yexo@openttd.org>
date Wed, 14 Mar 2012 20:49:54 +0000
parents b56f3e96dbfd
children 59ab1b37be4c
files src/articulated_vehicles.cpp src/articulated_vehicles.h src/script/api/script_engine.cpp
diffstat 3 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/articulated_vehicles.cpp
+++ b/src/articulated_vehicles.cpp
@@ -55,6 +55,16 @@
 }
 
 /**
+ * Does a NewGRF report that this should be an articulated vehicle?
+ * @param engine_type The engine to check.
+ * @return True iff the articulated engine callback flag is set.
+ */
+bool IsArticulatedEngine(EngineID engine_type)
+{
+	return HasBit(EngInfo(engine_type)->callback_mask, CBM_VEHICLE_ARTIC_ENGINE);
+}
+
+/**
  * Count the number of articulated parts of an engine.
  * @param engine_type The engine to get the number of parts of.
  * @param purchase_window Whether we are in the scope of the purchase window or not, i.e. whether we cannot allocate vehicles.
--- a/src/articulated_vehicles.h
+++ b/src/articulated_vehicles.h
@@ -23,6 +23,7 @@
 uint32 GetIntersectionOfArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type);
 bool IsArticulatedVehicleCarryingDifferentCargoes(const Vehicle *v, CargoID *cargo_type);
 bool IsArticulatedVehicleRefittable(EngineID engine);
+bool IsArticulatedEngine(EngineID engine_type);
 void CheckConsistencyOfArticulatedVehicle(const Vehicle *v);
 
 
--- a/src/script/api/script_engine.cpp
+++ b/src/script/api/script_engine.cpp
@@ -233,7 +233,7 @@
 	if (!IsValidEngine(engine_id)) return false;
 	if (GetVehicleType(engine_id) != ScriptVehicle::VT_ROAD && GetVehicleType(engine_id) != ScriptVehicle::VT_RAIL) return false;
 
-	return CountArticulatedParts(engine_id, true) != 0;
+	return IsArticulatedEngine(engine_id);
 }
 
 /* static */ ScriptAirport::PlaneType ScriptEngine::GetPlaneType(EngineID engine_id)