Creating the timer system

This commit is contained in:
Zoe Roux
2021-05-31 17:28:56 +02:00
parent 44b68b15e6
commit 1cf2a9ee9f
4 changed files with 67 additions and 4 deletions

View File

@@ -56,11 +56,18 @@ set(SOURCES
sources/Component/Renderer/CameraComponent.hpp sources/Component/Renderer/CameraComponent.hpp
sources/System/Renderer/Render2DScreenSystem.cpp sources/System/Renderer/Render2DScreenSystem.cpp
sources/System/Renderer/Render2DScreenSystem.hpp sources/System/Renderer/Render2DScreenSystem.hpp
sources/System/BombHolder/BombHolderSystem.cpp sources/System/BombHolder/BombHolderSystem.hpp sources/Component/Timer/TimerComponent.cpp sources/Component/Timer/TimerComponent.hpp) sources/System/BombHolder/BombHolderSystem.cpp
sources/System/BombHolder/BombHolderSystem.hpp
sources/Component/Timer/TimerComponent.cpp
sources/Component/Timer/TimerComponent.hpp
sources/System/Timer/TimerSystem.cpp
sources/System/Timer/TimerSystem.hpp
)
add_executable(bomberman add_executable(bomberman
sources/main.cpp sources/main.cpp
${SOURCES}) ${SOURCES}
)
target_include_directories(bomberman PUBLIC sources) target_include_directories(bomberman PUBLIC sources)
target_link_libraries(bomberman PUBLIC wal ray) target_link_libraries(bomberman PUBLIC wal ray)
@@ -71,7 +78,8 @@ add_executable(unit_tests EXCLUDE_FROM_ALL
tests/MainTest.cpp tests/MainTest.cpp
tests/EngineTests.cpp tests/EngineTests.cpp
tests/CallbackTest.cpp tests/CallbackTest.cpp
tests/MoveTests.cpp) tests/MoveTests.cpp
)
target_include_directories(unit_tests PUBLIC sources) target_include_directories(unit_tests PUBLIC sources)
target_link_libraries(unit_tests PUBLIC wal ray) target_link_libraries(unit_tests PUBLIC wal ray)

View File

@@ -11,6 +11,7 @@
#include <Model/Model.hpp> #include <Model/Model.hpp>
#include <Drawables/2D/Rectangle.hpp> #include <Drawables/2D/Rectangle.hpp>
#include <TraceLog.hpp> #include <TraceLog.hpp>
#include "System/Timer/TimerSystem.hpp"
#include "Component/BombHolder/BombHolderComponent.hpp" #include "Component/BombHolder/BombHolderComponent.hpp"
#include "System/BombHolder/BombHolderSystem.hpp" #include "System/BombHolder/BombHolderSystem.hpp"
#include "System/Renderer/Renderer3DSystem.hpp" #include "System/Renderer/Renderer3DSystem.hpp"
@@ -42,7 +43,8 @@ namespace BBM
void addSystems(WAL::Wal &wal) void addSystems(WAL::Wal &wal)
{ {
wal.addSystem<KeyboardSystem>() wal.addSystem<TimerSystem>()
.addSystem<KeyboardSystem>()
.addSystem<GamepadSystem>() .addSystem<GamepadSystem>()
.addSystem<ControllableSystem>() .addSystem<ControllableSystem>()
.addSystem<BombHolderSystem>(wal) .addSystem<BombHolderSystem>(wal)

View File

@@ -0,0 +1,27 @@
//
// Created by Zoe Roux on 5/31/21.
//
#include "TimerSystem.hpp"
#include "Component/Timer/TimerComponent.hpp"
using namespace std::chrono_literals;
namespace BBM
{
TimerSystem::TimerSystem()
: WAL::System({
typeid(TimerComponent)
})
{}
void TimerSystem::onUpdate(WAL::Entity &entity, std::chrono::nanoseconds dtime)
{
auto &timer = entity.getComponent<TimerComponent>();
timer.ringIn -= dtime;
if (timer.ringIn <= 0ns) {
timer.setDisable(true);
timer.callback(entity);
}
}
}

View File

@@ -0,0 +1,26 @@
//
// Created by Zoe Roux on 5/31/21.
//
#pragma once
#include <System/System.hpp>
namespace BBM
{
class TimerSystem : public WAL::System
{
public:
//! @inherit
void onUpdate(WAL::Entity &entity, std::chrono::nanoseconds dtime) override;
//! @brief A default constructor
TimerSystem();
//! @brief A timer system is copy constructable.
TimerSystem(const TimerSystem &) = default;
//! @brief A default destructor
~TimerSystem() override = default;
//! @breief A timer system is assignable.
TimerSystem &operator=(const TimerSystem &) = default;
};
}