diff --git a/src/articulated_vehicles.cpp b/src/articulated_vehicles.cpp --- a/src/articulated_vehicles.cpp +++ b/src/articulated_vehicles.cpp @@ -108,7 +108,7 @@ CargoArray GetCapacityOfArticulatedParts uint16 cargo_capacity = GetVehicleDefaultCapacity(engine, &cargo_type); if (cargo_type < NUM_CARGO) capacity[cargo_type] = cargo_capacity; - if (e->type != VEH_TRAIN && e->type != VEH_ROAD) return capacity; + if (!e->IsGroundVehicle()) return capacity; if (!HasBit(e->info.callback_mask, CBM_VEHICLE_ARTIC_ENGINE)) return capacity; @@ -133,7 +133,7 @@ bool IsArticulatedVehicleRefittable(Engi if (IsEngineRefittable(engine)) return true; const Engine *e = Engine::Get(engine); - if (e->type != VEH_TRAIN && e->type != VEH_ROAD) return false; + if (!e->IsGroundVehicle()) return false; if (!HasBit(e->info.callback_mask, CBM_VEHICLE_ARTIC_ENGINE)) return false; @@ -161,7 +161,7 @@ void GetArticulatedRefitMasks(EngineID e *union_mask = veh_cargos; *intersection_mask = (veh_cargos != 0) ? veh_cargos : UINT32_MAX; - if (e->type != VEH_TRAIN && e->type != VEH_ROAD) return; + if (!e->IsGroundVehicle()) return; if (!HasBit(e->info.callback_mask, CBM_VEHICLE_ARTIC_ENGINE)) return; for (uint i = 1; i < MAX_ARTICULATED_PARTS; i++) { diff --git a/src/engine_base.h b/src/engine_base.h --- a/src/engine_base.h +++ b/src/engine_base.h @@ -87,6 +87,15 @@ struct Engine : EnginePool::PoolItem<&_e uint GetDisplayWeight() const; uint GetDisplayMaxTractiveEffort() const; Date GetLifeLengthInDays() const; + + /** + * Check if the engine is a ground vehicle. + * @return True iff the engine is a train or a road vehicle. + */ + FORCEINLINE bool IsGroundVehicle() const + { + return this->type == VEH_TRAIN || this->type == VEH_ROAD; + } }; struct EngineIDMapping {