From 2188383658bc980882578fddb23249775ac024aa Mon Sep 17 00:00:00 2001 From: frosch Date: Mon, 19 Sep 2011 19:23:23 +0000 Subject: [PATCH] (svn r22947) -Fix: [NewGRF] Do not call CB 32 for disaster, effect vehicles or aircraft shadows/rotors. --- src/vehicle.cpp | 17 ++++++++++++++++- src/vehicle_base.h | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 890ecf6bc3..e9177f092b 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -631,6 +631,21 @@ bool Vehicle::IsEngineCountable() const } } +/** + * Check whether Vehicle::engine_type has any meaning. + * @return true if the vehicle has a useable engine type. + */ +bool Vehicle::HasEngineType() const +{ + switch (this->type) { + case VEH_AIRCRAFT: return Aircraft::From(this)->IsNormalAircraft(); + case VEH_TRAIN: + case VEH_ROAD: + case VEH_SHIP: return true; + default: return false; + } +} + /** * Handle the pathfinding result, especially the lost status. * If the vehicle is now lost and wasn't previously fire an @@ -784,7 +799,7 @@ static void RunVehicleDayProc() if (v == NULL) continue; /* Call the 32-day callback if needed */ - if ((v->day_counter & 0x1F) == 0) { + if ((v->day_counter & 0x1F) == 0 && v->HasEngineType()) { uint16 callback = GetVehicleCallback(CBID_VEHICLE_32DAY_CALLBACK, 0, 0, v->engine_type, v); if (callback != CALLBACK_FAILED) { if (HasBit(callback, 0)) TriggerVehicle(v, VEHICLE_TRIGGER_CALLBACK_32); // Trigger vehicle trigger 10 diff --git a/src/vehicle_base.h b/src/vehicle_base.h index 547344c275..958144115a 100644 --- a/src/vehicle_base.h +++ b/src/vehicle_base.h @@ -703,6 +703,7 @@ public: } bool IsEngineCountable() const; + bool HasEngineType() const; bool HasDepotOrder() const; void HandlePathfindingResult(bool path_found);