From 97b7a7d259a1f8b5b77b8cd26b287a92dfd2f901 Mon Sep 17 00:00:00 2001 From: EternalRat <44569175+EternalRat@users.noreply.github.com> Date: Tue, 8 Jun 2021 21:05:08 +0200 Subject: [PATCH] timer added to speedup bonus (15s) --- sources/Component/Controllable/ControllableComponent.hpp | 7 +++++++ sources/Items/Bonus.cpp | 3 ++- sources/System/Controllable/ControllableSystem.cpp | 9 ++++++++- sources/System/Controllable/ControllableSystem.hpp | 5 ++++- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/sources/Component/Controllable/ControllableComponent.hpp b/sources/Component/Controllable/ControllableComponent.hpp index f8c21743..05bef5cc 100644 --- a/sources/Component/Controllable/ControllableComponent.hpp +++ b/sources/Component/Controllable/ControllableComponent.hpp @@ -8,6 +8,9 @@ #include #include "Component/Component.hpp" #include "Entity/Entity.hpp" +#include + +using namespace std::chrono_literals; namespace BBM { @@ -24,6 +27,10 @@ namespace BBM bool pause = false; //! @brief The speed applied to every controllable entities. float speed = .25f; + //! @brief The number of seconds before a speedbonus expire. This variable is used to reset the nextSpeedBonusRate value. + std::chrono::nanoseconds speedBonusRate = 15000ms; + //! @brief The number of nanosecond before the expiration of a speed bonus. + std::chrono::nanoseconds nextSpeedBonusRate = speedBonusRate; //! @inherit WAL::Component *clone(WAL::Entity &entity) const override; diff --git a/sources/Items/Bonus.cpp b/sources/Items/Bonus.cpp index 5ba73d6b..854563e6 100644 --- a/sources/Items/Bonus.cpp +++ b/sources/Items/Bonus.cpp @@ -46,7 +46,8 @@ namespace BBM { if (!player.hasComponent()) return; auto &controllable = player.getComponent(); - controllable.speed += 0.02f; + controllable.speed = 0.35f; + controllable.nextSpeedBonusRate = controllable.speedBonusRate; } void Bonus::IgnoreWallsBonus(WAL::Entity &player, const WAL::Entity &bonus, CollisionComponent::CollidedAxis axis) diff --git a/sources/System/Controllable/ControllableSystem.cpp b/sources/System/Controllable/ControllableSystem.cpp index 16c82d82..e0fb8b78 100644 --- a/sources/System/Controllable/ControllableSystem.cpp +++ b/sources/System/Controllable/ControllableSystem.cpp @@ -14,12 +14,19 @@ namespace BBM : System(wal) {} - void ControllableSystem::onFixedUpdate(WAL::ViewEntity &entity) + void ControllableSystem::onUpdate(WAL::ViewEntity &entity, std::chrono::nanoseconds dtime) { auto &controllable = entity.get(); auto &movable = entity.get(); Vector2f move = controllable.move.normalized() * controllable.speed; movable.addForce(Vector3f(move.x, controllable.jump, move.y)); + if (controllable.speed == 0.25f) + return; + controllable.nextSpeedBonusRate -= dtime; + if (controllable.nextSpeedBonusRate <= 0ns) { + controllable.nextSpeedBonusRate = controllable.speedBonusRate; + controllable.speed = 0.25f; + } } } \ No newline at end of file diff --git a/sources/System/Controllable/ControllableSystem.hpp b/sources/System/Controllable/ControllableSystem.hpp index 6648bbb3..268515c1 100644 --- a/sources/System/Controllable/ControllableSystem.hpp +++ b/sources/System/Controllable/ControllableSystem.hpp @@ -9,14 +9,17 @@ #include "Component/Controllable/ControllableComponent.hpp" #include "System/System.hpp" +using namespace std::chrono_literals; + namespace BBM { //! @brief A system to handle Controllable entities. class ControllableSystem : public WAL::System { public: + //! @inherit - void onFixedUpdate(WAL::ViewEntity &entity) override; + void onUpdate(WAL::ViewEntity &entity, std::chrono::nanoseconds dtime) override; //! @brief A default constructor explicit ControllableSystem(WAL::Wal &wal);