diff --git a/src/object/interface/powered_object.h b/src/object/interface/powered_object.h index 09526aca..b3251dd1 100644 --- a/src/object/interface/powered_object.h +++ b/src/object/interface/powered_object.h @@ -66,6 +66,22 @@ inline float GetObjectEnergy(CObject* object) return energy; } +inline float GetObjectEnergyLevel(CObject* object) +{ + float energy = 0.0f; + + if (object->Implements(ObjectInterfaceType::Powered)) + { + CObject* power = dynamic_cast(object)->GetPower(); + if (power != nullptr && power->Implements(ObjectInterfaceType::PowerContainer)) + { + energy = dynamic_cast(power)->GetEnergyLevel(); + } + } + + return energy; +} + inline bool ObjectHasPowerCell(CObject* object) { return object->Implements(ObjectInterfaceType::Powered) && diff --git a/src/object/motion/motionvehicle.cpp b/src/object/motion/motionvehicle.cpp index c7160f0d..18480271 100644 --- a/src/object/motion/motionvehicle.cpp +++ b/src/object/motion/motionvehicle.cpp @@ -1791,7 +1791,7 @@ bool CMotionVehicle::EventFrameCanoni(const Event &event) bOnBoard = true; } - float energy = GetObjectEnergy(m_object); + float energy = GetObjectEnergyLevel(m_object); if (energy == 0.0f) return true; factor = 0.5f+energy*0.5f;