From 78d026114e3401f8266c84af454f4b302ca34dee Mon Sep 17 00:00:00 2001 From: HENRY Benjamin Date: Mon, 7 Jun 2021 14:35:19 +0200 Subject: [PATCH 1/7] init --- .../BombAnimator/BombAnimatorComponent.cpp | 5 +++++ .../BombAnimator/BombAnimatorComponent.hpp | 21 +++++++++++++++++++ .../BombAnimator/BombAnimatorSystem.cpp | 5 +++++ .../BombAnimator/BombAnimatorSystem.hpp | 14 +++++++++++++ 4 files changed, 45 insertions(+) create mode 100644 sources/Component/BombAnimator/BombAnimatorComponent.cpp create mode 100644 sources/Component/BombAnimator/BombAnimatorComponent.hpp create mode 100644 sources/System/BombAnimator/BombAnimatorSystem.cpp create mode 100644 sources/System/BombAnimator/BombAnimatorSystem.hpp diff --git a/sources/Component/BombAnimator/BombAnimatorComponent.cpp b/sources/Component/BombAnimator/BombAnimatorComponent.cpp new file mode 100644 index 00000000..3ff7574c --- /dev/null +++ b/sources/Component/BombAnimator/BombAnimatorComponent.cpp @@ -0,0 +1,5 @@ +// +// Created by hbenjamin on 07/06/2021. +// + +#include "BombAnimatorComponent.hpp" diff --git a/sources/Component/BombAnimator/BombAnimatorComponent.hpp b/sources/Component/BombAnimator/BombAnimatorComponent.hpp new file mode 100644 index 00000000..78e8ebc6 --- /dev/null +++ b/sources/Component/BombAnimator/BombAnimatorComponent.hpp @@ -0,0 +1,21 @@ +// +// Created by hbenjamin on 07/06/2021. +// + +#pragma once +namespace BBM { + class BombAnimatorComponent { + public: + //! @inherit + WAL::Component *clone(WAL::Entity &entity) const override; + + //! @brief ctor + explicit BombAnimatorComponent(WAL::Entity &entity); + //! @brief copy ctor + BombAnimatorComponent(const BombAnimatorComponent &) = default; + //! @brief dtor + ~BombAnimatorComponent() override = default; + //! @brief assignment operator + BombAnimatorComponent &operator=(const BombAnimatorComponent &) = delete; + }; +} \ No newline at end of file diff --git a/sources/System/BombAnimator/BombAnimatorSystem.cpp b/sources/System/BombAnimator/BombAnimatorSystem.cpp new file mode 100644 index 00000000..3bae8d09 --- /dev/null +++ b/sources/System/BombAnimator/BombAnimatorSystem.cpp @@ -0,0 +1,5 @@ +// +// Created by hbenjamin on 07/06/2021. +// + +#include "BombAnimatorSystem.hpp" diff --git a/sources/System/BombAnimator/BombAnimatorSystem.hpp b/sources/System/BombAnimator/BombAnimatorSystem.hpp new file mode 100644 index 00000000..170730dc --- /dev/null +++ b/sources/System/BombAnimator/BombAnimatorSystem.hpp @@ -0,0 +1,14 @@ +// +// Created by hbenjamin on 07/06/2021. +// + +#ifndef BOMBERMAN_BOMBANIMATORSYSTEM_H +#define BOMBERMAN_BOMBANIMATORSYSTEM_H + + +class BombAnimatorSystem { + +}; + + +#endif //BOMBERMAN_BOMBANIMATORSYSTEM_H From 982050cb91de03df272ebd524cea41824dc237cd Mon Sep 17 00:00:00 2001 From: EternalRat <44569175+EternalRat@users.noreply.github.com> Date: Tue, 8 Jun 2021 16:41:59 +0200 Subject: [PATCH 2/7] bombanimatorcomponent created, waiting for model to test --- CMakeLists.txt | 4 +++ .../BombAnimator/BombAnimatorComponent.cpp | 12 ++++++++ .../BombAnimator/BombAnimatorComponent.hpp | 15 +++++++++- sources/Runner/Runner.cpp | 2 ++ .../BombAnimator/BombAnimatorSystem.cpp | 22 ++++++++++++++ .../BombAnimator/BombAnimatorSystem.hpp | 29 ++++++++++++++----- .../System/BombHolder/BombHolderSystem.cpp | 6 +++- 7 files changed, 81 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 588f5096..aa74bf81 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,6 +81,10 @@ set(SOURCES sources/Component/Animator/AnimatorComponent.hpp sources/System/Animator/AnimatorSystem.cpp sources/System/Animator/AnimatorSystem.hpp + sources/Component/BombAnimator/BombAnimatorComponent.cpp + sources/Component/BombAnimator/BombAnimatorComponent.hpp + sources/System/BombAnimator/BombAnimatorSystem.cpp + sources/System/BombAnimator/BombAnimatorSystem.hpp ) add_executable(bomberman sources/main.cpp diff --git a/sources/Component/BombAnimator/BombAnimatorComponent.cpp b/sources/Component/BombAnimator/BombAnimatorComponent.cpp index 3ff7574c..f3b15836 100644 --- a/sources/Component/BombAnimator/BombAnimatorComponent.cpp +++ b/sources/Component/BombAnimator/BombAnimatorComponent.cpp @@ -3,3 +3,15 @@ // #include "BombAnimatorComponent.hpp" + +namespace BBM +{ + BombAnimatorComponent::BombAnimatorComponent(WAL::Entity &entity) + : WAL::Component(entity) + {} + + WAL::Component *BombAnimatorComponent::clone(WAL::Entity &entity) const + { + return new BombAnimatorComponent(entity); + } +} \ No newline at end of file diff --git a/sources/Component/BombAnimator/BombAnimatorComponent.hpp b/sources/Component/BombAnimator/BombAnimatorComponent.hpp index 78e8ebc6..3e5145b3 100644 --- a/sources/Component/BombAnimator/BombAnimatorComponent.hpp +++ b/sources/Component/BombAnimator/BombAnimatorComponent.hpp @@ -3,9 +3,22 @@ // #pragma once + +#include "Component/Component.hpp" +#include "Entity/Entity.hpp" +#include + +using namespace std::chrono_literals; + namespace BBM { - class BombAnimatorComponent { + class BombAnimatorComponent : public WAL::Component{ public: + + //! @brief The number of seconds of each animation. This variable is used to reset the nextAnimationRate value. + std::chrono::nanoseconds animationRate = 1000ms; + //! @brief The number of nanosecond before the next animation. + std::chrono::nanoseconds nextAnimationRate = animationRate; + //! @inherit WAL::Component *clone(WAL::Entity &entity) const override; diff --git a/sources/Runner/Runner.cpp b/sources/Runner/Runner.cpp index 57494e5e..4b8fd421 100644 --- a/sources/Runner/Runner.cpp +++ b/sources/Runner/Runner.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include "Component/Animation/AnimationsComponent.hpp" #include "System/Animation/AnimationsSystem.hpp" #include "Map/Map.hpp" @@ -52,6 +53,7 @@ namespace BBM .addSystem() .addSystem() .addSystem() + .addSystem() .addSystem() .addSystem() .addSystem() diff --git a/sources/System/BombAnimator/BombAnimatorSystem.cpp b/sources/System/BombAnimator/BombAnimatorSystem.cpp index 3bae8d09..27647a38 100644 --- a/sources/System/BombAnimator/BombAnimatorSystem.cpp +++ b/sources/System/BombAnimator/BombAnimatorSystem.cpp @@ -3,3 +3,25 @@ // #include "BombAnimatorSystem.hpp" +#include +#include + +namespace BBM +{ + BombAnimatorSystem::BombAnimatorSystem(WAL::Wal &wal) + : System(wal) + {} + + void BombAnimatorSystem::onUpdate(WAL::ViewEntity &entity, std::chrono::nanoseconds dtime) + { + auto &animator = entity.get(); + + animator.nextAnimationRate -= dtime; + if (animator.nextAnimationRate <= 0ns) { + animator.nextAnimationRate = animator.animationRate; + /*auto &animation = entity.get(); + auto ind = animation.getCurrentAnimIndex(); + animation.setAnimIndex(ind++);*/ + } + } +} \ No newline at end of file diff --git a/sources/System/BombAnimator/BombAnimatorSystem.hpp b/sources/System/BombAnimator/BombAnimatorSystem.hpp index 170730dc..83d227ab 100644 --- a/sources/System/BombAnimator/BombAnimatorSystem.hpp +++ b/sources/System/BombAnimator/BombAnimatorSystem.hpp @@ -2,13 +2,28 @@ // Created by hbenjamin on 07/06/2021. // -#ifndef BOMBERMAN_BOMBANIMATORSYSTEM_H -#define BOMBERMAN_BOMBANIMATORSYSTEM_H +#pragma once +#include "Component/Animation/AnimationsComponent.hpp" +#include "Component/BombAnimator/BombAnimatorComponent.hpp" +#include "System/System.hpp" -class BombAnimatorSystem { +namespace BBM +{ + //! @brief A system to handle BombAnimator entities. + class BombAnimatorSystem : public WAL::System + { + public: + //! @inherit + void onUpdate(WAL::ViewEntity &entity, std::chrono::nanoseconds dTime) override; -}; - - -#endif //BOMBERMAN_BOMBANIMATORSYSTEM_H + //! @brief A default constructor + BombAnimatorSystem(WAL::Wal &wal); + //! @brief An BombAnimator system is copy constructable + BombAnimatorSystem(const BombAnimatorSystem &) = default; + //! @brief A default destructor + ~BombAnimatorSystem() override = default; + //! @brief A BombAnimator system is assignable. + BombAnimatorSystem &operator=(const BombAnimatorSystem &) = default; + }; +} diff --git a/sources/System/BombHolder/BombHolderSystem.cpp b/sources/System/BombHolder/BombHolderSystem.cpp index 2d46b3b8..76934aea 100644 --- a/sources/System/BombHolder/BombHolderSystem.cpp +++ b/sources/System/BombHolder/BombHolderSystem.cpp @@ -2,6 +2,8 @@ // Created by Zoe Roux on 5/31/21. // +#include +#include #include "Component/Timer/TimerComponent.hpp" #include "System/Event/EventSystem.hpp" #include "Component/Renderer/Drawable3DComponent.hpp" @@ -43,7 +45,9 @@ namespace BBM .addComponent(position) .addComponent(BombHolderSystem::explosionTimer, &BombHolderSystem::_bombExplosion) .addComponent("assets/bombs/bomb.obj", - std::make_pair(MAP_DIFFUSE, "assets/bombs/bomb_normal.png")); + std::make_pair(MAP_DIFFUSE, "assets/bombs/bomb_normal.png")) + .addComponent() + .addComponent(RAY::ModelAnimations("assets/bombs/bomb.obj"), 0); } void BombHolderSystem::onUpdate(WAL::ViewEntity &entity, std::chrono::nanoseconds dtime) From 54bc9ce5ac5a51263b4a14e47b725d91d034b6bf Mon Sep 17 00:00:00 2001 From: HENRY Benjamin Date: Wed, 9 Jun 2021 10:57:55 +0200 Subject: [PATCH 3/7] need to fix explosion.obj --- CMakeLists.txt | 4 - assets/bombs/explosion/blast.png | Bin 0 -> 47275 bytes assets/bombs/explosion/explosion.mtl | 12 + assets/bombs/explosion/explosion.obj | 2071 +++++++++++++++++ assets/bombs/explosion/explosion.png | Bin 0 -> 2200 bytes .../BombAnimator/BombAnimatorComponent.cpp | 17 - .../BombAnimator/BombAnimatorComponent.hpp | 34 - sources/Runner/Runner.cpp | 2 - .../BombAnimator/BombAnimatorSystem.cpp | 27 - .../BombAnimator/BombAnimatorSystem.hpp | 29 - .../System/BombHolder/BombHolderSystem.cpp | 14 +- 11 files changed, 2092 insertions(+), 118 deletions(-) create mode 100644 assets/bombs/explosion/blast.png create mode 100644 assets/bombs/explosion/explosion.mtl create mode 100644 assets/bombs/explosion/explosion.obj create mode 100644 assets/bombs/explosion/explosion.png delete mode 100644 sources/Component/BombAnimator/BombAnimatorComponent.cpp delete mode 100644 sources/Component/BombAnimator/BombAnimatorComponent.hpp delete mode 100644 sources/System/BombAnimator/BombAnimatorSystem.cpp delete mode 100644 sources/System/BombAnimator/BombAnimatorSystem.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 8a614554..48dcf444 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,10 +81,6 @@ set(SOURCES sources/Component/Animator/AnimatorComponent.hpp sources/System/Animator/AnimatorSystem.cpp sources/System/Animator/AnimatorSystem.hpp - sources/Component/BombAnimator/BombAnimatorComponent.cpp - sources/Component/BombAnimator/BombAnimatorComponent.hpp - sources/System/BombAnimator/BombAnimatorSystem.cpp - sources/System/BombAnimator/BombAnimatorSystem.hpp ) add_executable(bomberman sources/main.cpp diff --git a/assets/bombs/explosion/blast.png b/assets/bombs/explosion/blast.png new file mode 100644 index 0000000000000000000000000000000000000000..037212f67f03826eb9341527a28124a187d1ec56 GIT binary patch literal 47275 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 aiTw{`qE2)k3_^4O0000 - -using namespace std::chrono_literals; - -namespace BBM { - class BombAnimatorComponent : public WAL::Component{ - public: - - //! @brief The number of seconds of each animation. This variable is used to reset the nextAnimationRate value. - std::chrono::nanoseconds animationRate = 1000ms; - //! @brief The number of nanosecond before the next animation. - std::chrono::nanoseconds nextAnimationRate = animationRate; - - //! @inherit - WAL::Component *clone(WAL::Entity &entity) const override; - - //! @brief ctor - explicit BombAnimatorComponent(WAL::Entity &entity); - //! @brief copy ctor - BombAnimatorComponent(const BombAnimatorComponent &) = default; - //! @brief dtor - ~BombAnimatorComponent() override = default; - //! @brief assignment operator - BombAnimatorComponent &operator=(const BombAnimatorComponent &) = delete; - }; -} \ No newline at end of file diff --git a/sources/Runner/Runner.cpp b/sources/Runner/Runner.cpp index 924fb85e..591ce261 100644 --- a/sources/Runner/Runner.cpp +++ b/sources/Runner/Runner.cpp @@ -28,7 +28,6 @@ #include #include #include -#include #include "Component/Animation/AnimationsComponent.hpp" #include "System/Animation/AnimationsSystem.hpp" #include "Map/Map.hpp" @@ -53,7 +52,6 @@ namespace BBM .addSystem() .addSystem() .addSystem() - .addSystem() .addSystem() .addSystem() .addSystem() diff --git a/sources/System/BombAnimator/BombAnimatorSystem.cpp b/sources/System/BombAnimator/BombAnimatorSystem.cpp deleted file mode 100644 index 27647a38..00000000 --- a/sources/System/BombAnimator/BombAnimatorSystem.cpp +++ /dev/null @@ -1,27 +0,0 @@ -// -// Created by hbenjamin on 07/06/2021. -// - -#include "BombAnimatorSystem.hpp" -#include -#include - -namespace BBM -{ - BombAnimatorSystem::BombAnimatorSystem(WAL::Wal &wal) - : System(wal) - {} - - void BombAnimatorSystem::onUpdate(WAL::ViewEntity &entity, std::chrono::nanoseconds dtime) - { - auto &animator = entity.get(); - - animator.nextAnimationRate -= dtime; - if (animator.nextAnimationRate <= 0ns) { - animator.nextAnimationRate = animator.animationRate; - /*auto &animation = entity.get(); - auto ind = animation.getCurrentAnimIndex(); - animation.setAnimIndex(ind++);*/ - } - } -} \ No newline at end of file diff --git a/sources/System/BombAnimator/BombAnimatorSystem.hpp b/sources/System/BombAnimator/BombAnimatorSystem.hpp deleted file mode 100644 index 83d227ab..00000000 --- a/sources/System/BombAnimator/BombAnimatorSystem.hpp +++ /dev/null @@ -1,29 +0,0 @@ -// -// Created by hbenjamin on 07/06/2021. -// - -#pragma once - -#include "Component/Animation/AnimationsComponent.hpp" -#include "Component/BombAnimator/BombAnimatorComponent.hpp" -#include "System/System.hpp" - -namespace BBM -{ - //! @brief A system to handle BombAnimator entities. - class BombAnimatorSystem : public WAL::System - { - public: - //! @inherit - void onUpdate(WAL::ViewEntity &entity, std::chrono::nanoseconds dTime) override; - - //! @brief A default constructor - BombAnimatorSystem(WAL::Wal &wal); - //! @brief An BombAnimator system is copy constructable - BombAnimatorSystem(const BombAnimatorSystem &) = default; - //! @brief A default destructor - ~BombAnimatorSystem() override = default; - //! @brief A BombAnimator system is assignable. - BombAnimatorSystem &operator=(const BombAnimatorSystem &) = default; - }; -} diff --git a/sources/System/BombHolder/BombHolderSystem.cpp b/sources/System/BombHolder/BombHolderSystem.cpp index 76934aea..30d0c80b 100644 --- a/sources/System/BombHolder/BombHolderSystem.cpp +++ b/sources/System/BombHolder/BombHolderSystem.cpp @@ -2,7 +2,6 @@ // Created by Zoe Roux on 5/31/21. // -#include #include #include "Component/Timer/TimerComponent.hpp" #include "System/Event/EventSystem.hpp" @@ -26,7 +25,7 @@ namespace BBM { bomb.scheduleDeletion(); auto &bombPosition = bomb.getComponent(); - wal.getSystem().dispatchEvent([&bombPosition](WAL::Entity &entity){ + wal.getSystem().dispatchEvent([&bombPosition, &wal](WAL::Entity &entity){ auto *health = entity.tryGetComponent(); auto *pos = entity.tryGetComponent(); @@ -34,6 +33,13 @@ namespace BBM return; if (pos->position.distance(bombPosition.position) > BombHolderSystem::explosionRadius) return; + wal.scene->scheduleNewEntity("explosion") + .addComponent(pos->position) + .addComponent(1s, [](WAL::Entity &explosion, WAL::Wal &wal) { + explosion.scheduleDeletion(); + }) + .addComponent("assets/bombs/explosion/explosion.obj", + std::make_pair(MAP_DIFFUSE, "assets/bombs/explosion/explosion.png")); // TODO do a raycast here to only remove health to entities that are not behind others. health->takeDmg(1); }); @@ -45,9 +51,7 @@ namespace BBM .addComponent(position) .addComponent(BombHolderSystem::explosionTimer, &BombHolderSystem::_bombExplosion) .addComponent("assets/bombs/bomb.obj", - std::make_pair(MAP_DIFFUSE, "assets/bombs/bomb_normal.png")) - .addComponent() - .addComponent(RAY::ModelAnimations("assets/bombs/bomb.obj"), 0); + std::make_pair(MAP_DIFFUSE, "assets/bombs/bomb_normal.png")); } void BombHolderSystem::onUpdate(WAL::ViewEntity &entity, std::chrono::nanoseconds dtime) From 9c1190be3034c856b2bcf7fd93dac06e8cd5dc96 Mon Sep 17 00:00:00 2001 From: "arthur.jamet" Date: Wed, 9 Jun 2021 12:48:20 +0200 Subject: [PATCH 4/7] using glb model forexplosion --- assets/bombs/explosion/explosion.glb | Bin 0 -> 70836 bytes assets/bombs/explosion/explosion.mtl | 12 - assets/bombs/explosion/explosion.obj | 2071 ----------------- .../System/BombHolder/BombHolderSystem.cpp | 2 +- 4 files changed, 1 insertion(+), 2084 deletions(-) create mode 100644 assets/bombs/explosion/explosion.glb delete mode 100644 assets/bombs/explosion/explosion.mtl delete mode 100644 assets/bombs/explosion/explosion.obj diff --git a/assets/bombs/explosion/explosion.glb b/assets/bombs/explosion/explosion.glb new file mode 100644 index 0000000000000000000000000000000000000000..065ed85c9e431b441dafba8a80ff0a0041df910e GIT binary patch literal 70836 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, [](WAL::Entity &explosion, WAL::Wal &wal) { explosion.scheduleDeletion(); }) - .addComponent("assets/bombs/explosion/explosion.obj", + .addComponent("assets/bombs/explosion/explosion.glb", std::make_pair(MAP_DIFFUSE, "assets/bombs/explosion/explosion.png")); // TODO do a raycast here to only remove health to entities that are not behind others. health->takeDmg(1); From 99729153a32a4b93106e4a7922e4c4ea9a8f1b00 Mon Sep 17 00:00:00 2001 From: HENRY Benjamin Date: Wed, 9 Jun 2021 16:16:48 +0200 Subject: [PATCH 5/7] deleted bad texture --- assets/bombs/explosion/explosion.png | Bin 2200 -> 0 bytes sources/System/BombHolder/BombHolderSystem.cpp | 7 ------- 2 files changed, 7 deletions(-) delete mode 100644 assets/bombs/explosion/explosion.png diff --git a/assets/bombs/explosion/explosion.png b/assets/bombs/explosion/explosion.png deleted file mode 100644 index 9ed5ab29d8312cedd491e59491625c5d0a9095bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2200 zcmV;J2xs?+P)Px#32;bRa{vGfQvd)9Qvv_G*>L~>0H{z*R7C>;0V)av zE(--T3DAo6Phy||7<_UMkjP4623ts|A|kbH5~6+Gyil#x%!+djJ2L|JZ-`UN!&Wg#Y!B z|Cd<*{*)b=QJ(++2YE?EK~z}7t(gl~8e0s7#}{I?_$(+&QHm51s8)pk|Icoco#f;k z7)rZt@G+~8Z|$`wGbfL#%A-kfLeV;wIHWi#g8xkZvelx0$p4}GV<@)OQYdrwiU1nq z6OjL!%A9?U0}i>`&(OO_HY}*3REb|LlrCtH&5W(sNEM}EHbMZ-XeI~AJ7bv&=0ymw zGcrrA^&(-Fs?dvzQ;Hi6x&*r**D4k)#0IKB33qmLCP5d<7STlh1K6=5mK+eOKneFH z1k-PnOqxYMtWueI zOVPRQ&=+4ZThQ!=NG31XMe=6wW-L3vRE83;?;&tP3t7x?uz8$JI0;ztK*W**p!WNd$z(d6j_7+zm&8^w z`CNjNV3o@WmSKfTN{Kld^(;msX0vLL6Bt>MoG7v8K?hWU-cz*c!y)X6Xx<8LstfRz z)F!b^WoVn?rvzUSTFGnRc<&%r%#B#53Ua{l$UlS)vPdq#$>Q9F0?SkaK0bbE(50Y> ztdiHjD!7$g5OWR7)O%1r&O;EIRJYmZ4BTjBPE_WC-Lvb26{cjbzn@=OGr*J;>_q?01-lVd zDR(-8xdF?>7YRl)*}>w33$`3KuI4VgYjPb+S{eHG@&G9B=1Jk{eoM6F{!@-Cuvq6%<YF z5O}eGU^Rj>!X6D6Y}`h?ZECN{6)t1nB?ue@ORAkScQh%uhgEngHgE|m+;f>W&qaJNKK(()^Y+xmi$}PZCHEqGjtB8MhG2d@ ztnh+Z#Pr1rP2Ud>YwriV&*T*9Wk%==!d^VT5*F{BE$_3vbZUl#cnU8x1xqY&(}E3a zx6Qanh%-Ol+Ww+kIvB?VUh9U1T(zOF_b{Aq*SQfYI2}a4{TTA&g5?g11KG~EqwK)& zgGf${aXOAQ{6HRaHD$-ph61AU>g>`_jCMTdrF@X$;qAq#bFQV*acpmO&obqPjDX;Q z*CjaWDKF^r<0X|Pv3%gWrpJ6E)jQS$WM!WfJYGmiC4~wtVYS@J$`a#db)S`~QmPwR z%E@PfzcQ4HRmZ0CEI%}<0Im+BU~w1)rBr@TLn~D0ukvMOs$zep!n&+~kAq-q19}NO z(`tPwF-BP}1-rBu(rlq6$~za~?rHO;-OyxeT}#&+0fDDBK(Y6+amhNZs%W!9gE7z! zgS#Q_T!yJ5@`h*{+KW)Fqt7ZDq8tp(#O8R?HtYPcz?O2g-}E*X-SHj3Wn*Yi6>Her z>%4tC_C7XmIHfb3XnUNxlmh2 zH{iidJF)pr4OqxJjk?$9>DWlbcCtxVG3ZKTIZQkaERr!jBh?snjn>9o8>dFuybl)V zqb?z1FgL+aZqoO$96YESpXtEQz@}Kolbv#q=wn0^%eQPJHVxJTSjVXk7*Xor^IIBw zVutv|2dZ%dygvWcVRf3QVx-EdJ2s@%F)gU#K`l17VlR%XF;|wsvW1V8&tw!XGxn_m zYXu*L@p>ABU;7mN`qHSUI}X^(2|LI(xYzh%WBb#z5ZJP5$hIQB5zv)DS~Q#)^z^S5 z7}*Bnz_%?}jND)=64oLIJ1$(BX+0FSLs;Z^=o+V_)^DDgYa62dw9JZIr*iG|r-jy* zMcLP|B};3v9kB+^7JIhY^VrYVdSPK$M{aIhZ~7*3-?xx)4Y}*;G$Y&Q^e9`JhPCO= zRDc6nHob@0j#r_+jNM_)>yqKKq7@#HDpjakoGm0LazKY@0czC0i9{xJE74oV1hiSz aiTw{`qE2)k3_^4O0000position.distance(bombPosition.position) > BombHolderSystem::explosionRadius) return; - wal.scene->scheduleNewEntity("explosion") - .addComponent(pos->position) - .addComponent(1s, [](WAL::Entity &explosion, WAL::Wal &wal) { - explosion.scheduleDeletion(); - }) - .addComponent("assets/bombs/explosion/explosion.glb", - std::make_pair(MAP_DIFFUSE, "assets/bombs/explosion/explosion.png")); // TODO do a raycast here to only remove health to entities that are not behind others. health->takeDmg(1); }); From 6667344592b5300976d1f7160868fc514dfd175e Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Wed, 9 Jun 2021 16:53:27 +0200 Subject: [PATCH 6/7] Making left and right block solids --- sources/Map/Map.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/sources/Map/Map.cpp b/sources/Map/Map.cpp index b5ca0268..44190315 100644 --- a/sources/Map/Map.cpp +++ b/sources/Map/Map.cpp @@ -72,9 +72,25 @@ namespace BBM static const std::string unbreakableObj = unbreakableWallPath + objExtension; static const std::string unbreakablePnj = unbreakableWallPath + imageExtension; + for (int i = 0; i < height; i++) { + scene->addEntity("Bomb stopper") + .addComponent(-1, 0, i) + .addComponent>(); + scene->addEntity("Bomb stopper") + .addComponent(width + 1, 0, i) + .addComponent>(); + } + for (int i = 0; i < width; i++) { + scene->addEntity("Bomb stopper") + .addComponent(i, 0, -1) + .addComponent>(); + scene->addEntity("Bomb stopper") + .addComponent(i, 0, height + 1) + .addComponent>(); + } + scene->addEntity("Bottom Wall") .addComponent(Vector3f((width + 1) / 2, 0, -1)) - .addComponent>() .addComponent( WAL::Callback(), &MapGenerator::wallCollide, Vector3f(-(width + 1) / 2 , 0.25, 0.25), Vector3f(width + 1, 2, 0.75)) @@ -83,7 +99,6 @@ namespace BBM RAY::Vector3(width + 3, 1, 1)); scene->addEntity("Upper Wall") .addComponent(Vector3f((width + 1) / 2, 0, height + 1)) - .addComponent>() .addComponent( WAL::Callback(), &MapGenerator::wallCollide, Vector3f(-(width + 1) / 2 , 0.25, 0.25), Vector3f(width + 1, 2, 0.75)) @@ -92,7 +107,6 @@ namespace BBM RAY::Vector3(width + 3, 1, 1)); scene->addEntity("Left Wall") .addComponent(Vector3f(width + 1, 0, height / 2)) - .addComponent>() .addComponent( WAL::Callback(), &MapGenerator::wallCollide, Vector3f(0.25, 0.25, -(height + 1) / 2 ), Vector3f(0.75, 2, height + 1)) From 3b7d81beb1faafb733cea34eeffa9cf4968e6b1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Le=20Bihan?= Date: Fri, 11 Jun 2021 16:43:49 +0200 Subject: [PATCH 7/7] static cast added --- sources/System/Gamepad/GamepadSystem.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sources/System/Gamepad/GamepadSystem.cpp b/sources/System/Gamepad/GamepadSystem.cpp index ee4b8767..5dd30a34 100644 --- a/sources/System/Gamepad/GamepadSystem.cpp +++ b/sources/System/Gamepad/GamepadSystem.cpp @@ -33,9 +33,9 @@ namespace BBM key.second = gamepad.isPressed(key.first); controllable.move.x = gamepad.getAxisValue(gamepadComponent.LeftStickX) * -1; controllable.move.y = gamepad.getAxisValue(gamepadComponent.LeftStickY) * -1; - controllable.move.x -= gamepad.isDown(gamepadComponent.keyRight); - controllable.move.x += gamepad.isDown(gamepadComponent.keyLeft); - controllable.move.y += gamepad.isDown(gamepadComponent.keyUp); - controllable.move.y -= gamepad.isDown(gamepadComponent.keyDown); + controllable.move.x -= static_cast(gamepad.isDown(gamepadComponent.keyRight)); + controllable.move.x += static_cast(gamepad.isDown(gamepadComponent.keyLeft)); + controllable.move.y += static_cast(gamepad.isDown(gamepadComponent.keyUp)); + controllable.move.y -= static_cast(gamepad.isDown(gamepadComponent.keyDown)); } } \ No newline at end of file