diff --git a/CMakeLists.txt b/CMakeLists.txt index f1f860c8..bd94c0bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,6 +60,8 @@ set(SOURCES sources/Component/Collision/CollisionComponent.hpp sources/System/Collision/CollisionSystem.hpp sources/System/Collision/CollisionSystem.cpp + sources/Component/Button/ButtonComponent.cpp + sources/Component/Button/ButtonComponent.hpp ) add_executable(bomberman diff --git a/sources/Component/Button/ButtonComponent.cpp b/sources/Component/Button/ButtonComponent.cpp index e08be4e6..e5108127 100644 --- a/sources/Component/Button/ButtonComponent.cpp +++ b/sources/Component/Button/ButtonComponent.cpp @@ -22,4 +22,12 @@ namespace BBM onHover(hoverCallback), onClick(clickCallback) { } + + ButtonComponent::ButtonComponent(WAL::Entity &entity, std::function idleCallback, + std::function hoverCallback, std::function clickCallback) + : WAL::Component(entity), + onIdle(idleCallback), + onHover(hoverCallback), + onClick(clickCallback) + { } } \ No newline at end of file diff --git a/sources/Component/Button/ButtonComponent.hpp b/sources/Component/Button/ButtonComponent.hpp index 9fdc29c6..e40ea6e4 100644 --- a/sources/Component/Button/ButtonComponent.hpp +++ b/sources/Component/Button/ButtonComponent.hpp @@ -31,6 +31,10 @@ namespace BBM //! @brief Constructor with the 3 callback ButtonComponent(WAL::Entity &entity, WAL::Callback<> idleCallback, WAL::Callback<> hoverCallback, WAL::Callback<> clickCallback); + + //! @brief Constructor with the 3 std functions + ButtonComponent(WAL::Entity &entity, std::function idleCallback, std::function hoverCallback, std::function clickCallback); + //! @brief A Controllable component is copy constructable. ButtonComponent(const ButtonComponent &) = default; //! @brief default destructor diff --git a/sources/Runner/Runner.cpp b/sources/Runner/Runner.cpp index db3896c9..5a0edb0d 100644 --- a/sources/Runner/Runner.cpp +++ b/sources/Runner/Runner.cpp @@ -16,6 +16,7 @@ #include #include #include +#include "Component/Button/ButtonComponent.hpp" #include #include #include @@ -67,31 +68,41 @@ namespace BBM std::shared_ptr loadGameScene() { auto scene = std::make_shared(); - scene->addEntity("player") - .addComponent() - .addComponent>("assets/player/player.iqm", std::make_pair(MAP_DIFFUSE, "assets/player/blue.png")) - .addComponent() - .addComponent() - .addComponent(2) - .addComponent(); - scene->addEntity("cube") - .addComponent(-5, 0, -5) - .addComponent>(Vector3f(-5, 0, -5), Vector3f(3, 3, 3), RED) - .addComponent() - .addComponent() - .addComponent([](WAL::Entity &, const WAL::Entity &){}, - [](WAL::Entity &actual, const WAL::Entity &) { - try { - auto &mov = actual.getComponent(); - mov.resetVelocity(); - } catch (std::exception &e) { }; - }, 3); - + scene->addEntity("first button") + .addComponent( + []() { + + }, + []() { + + }, + []() { + + } + ) + .addComponent(40, 100, 0) + .addComponent>(0, 0, 50, 50, RED); + + scene->addEntity("second button") + .addComponent( + []() { + + }, + []() { + + }, + []() { + + } + ) + .addComponent(40, 200, 0) + .addComponent>(0, 0, 50, 50, RED); + + scene->addEntity("camera") .addComponent(8, 20, 7) .addComponent(Vector3f(8, 0, 8)); std::srand(std::time(NULL)); - MapGenerator::loadMap(16, 16, MapGenerator::createMap(16, 16), scene); return scene; }