From 1f0593e7caadb5bc5861d613b43ead8f663608be Mon Sep 17 00:00:00 2001 From: yexo Date: Wed, 14 Mar 2012 20:49:54 +0000 Subject: [PATCH] (svn r24029) -Change: [NoAI] make AIEngine::IsArticulated return true if the articulated callback flag is set, don't try to run the callback. --- src/articulated_vehicles.cpp | 10 ++++++++++ src/articulated_vehicles.h | 1 + src/script/api/script_engine.cpp | 2 +- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/articulated_vehicles.cpp b/src/articulated_vehicles.cpp index d153a169f3..a889ab3d82 100644 --- a/src/articulated_vehicles.cpp +++ b/src/articulated_vehicles.cpp @@ -54,6 +54,16 @@ static EngineID GetNextArticulatedPart(uint index, EngineID front_type, Vehicle return GetNewEngineID(front_engine->GetGRF(), front_engine->type, callback); } +/** + * 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. diff --git a/src/articulated_vehicles.h b/src/articulated_vehicles.h index f9df46b080..46b4da3744 100644 --- a/src/articulated_vehicles.h +++ b/src/articulated_vehicles.h @@ -23,6 +23,7 @@ uint32 GetUnionOfArticulatedRefitMasks(EngineID engine, bool include_initial_car 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); diff --git a/src/script/api/script_engine.cpp b/src/script/api/script_engine.cpp index 54fc54cb17..adad559c56 100644 --- 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)