From c4385961c4d73e8548b23def377ae53c98f32f1f Mon Sep 17 00:00:00 2001 From: Droog71 <71droog71@gmail.com> Date: Mon, 20 Jul 2020 15:55:44 -0400 Subject: [PATCH] Fix for issue #1163 (#1332) * Clamped power variable before assignment to params in object manager. Attempted to fix formatting issues. * Fixed Clamp function not implemented correctly. * Fixed formatting issue, space after commas. * Created ClampPower method in object_manager.h and implemented in object_manager.cpp, Removed similar code from robotmain.cpp * Removed redundant call to ClampPower in object_manager.cpp * Added second call to ClampPower back to object_manager.cpp. Made ClampPower method private. Attempted to fix whitespace issues. * Fixed missing assignment to params.power in CreateObject method of object_manager.cpp * fixed white space at end of line 182 in object_manager.h * Fixed doxygen compatibility issue. --- src/object/object_manager.cpp | 14 +++++++++++++- src/object/object_manager.h | 2 ++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/object/object_manager.cpp b/src/object/object_manager.cpp index fd335014..bab1f3ac 100644 --- a/src/object/object_manager.cpp +++ b/src/object/object_manager.cpp @@ -142,6 +142,8 @@ CObject* CObjectManager::CreateObject(ObjectCreateParams params) } } + params.power = ClampPower(params.type,params.power); + assert(m_objects.find(params.id) == m_objects.end()); auto objectUPtr = m_objectFactory->CreateObject(params); @@ -163,10 +165,20 @@ CObject* CObjectManager::CreateObject(Math::Vector pos, float angle, ObjectType params.angle = angle; params.type = type; params.power = power; - return CreateObject(params); } +float CObjectManager::ClampPower(ObjectType type, float power) +{ + float min = 0; + float max = 100; + if (type == OBJECT_POWER || type == OBJECT_ATOMIC) + { + max = 1; + } + return Math::Clamp(power, min, max); +} + std::vector CObjectManager::GetObjectsOfTeam(int team) { std::vector result; diff --git a/src/object/object_manager.h b/src/object/object_manager.h index b5296156..3ae55c84 100644 --- a/src/object/object_manager.h +++ b/src/object/object_manager.h @@ -303,6 +303,8 @@ public: //@} private: + //! Prevents creation of overcharged power cells + float ClampPower(ObjectType type, float power); void CleanRemovedObjectsIfNeeded(); private: