Bomberman
BombHolderSystem.hpp
Go to the documentation of this file.
1 //
2 // Created by Zoe Roux on 5/31/21.
3 //
4 
5 #pragma once
6 
7 #include <System/System.hpp>
8 #include <Wal.hpp>
10 #include "Models/Vector3.hpp"
14 
15 namespace BBM
16 {
18  {
19  UP = 1,
20  DOWN = 2,
21  LEFT = 4,
22  RIGHT = 8,
23  FRONT = 16,
24  BACK = 32
25  };
26 
29  {
30  return static_cast<ExpansionDirection>(static_cast<int>(a) | static_cast<int>(b));
31  }
32 
34  class BombHolderSystem : public WAL::System<PositionComponent, BombHolderComponent, ControllableComponent>
35  {
36  private:
38  void _spawnBomb(Vector3f position, BombHolderComponent &holder);
39 
41  static void _dispatchExplosion(const Vector3f &position,
42  WAL::Wal &wal,
43  int size,
44  ExpansionDirection expansionDirections = ExpansionDirection::DOWN
50 
52  static void _bombExplosion(WAL::Entity &bomb, WAL::Wal &);
53 
55  static void
57 
58  public:
60  static std::chrono::nanoseconds explosionTimer;
61 
64  std::chrono::nanoseconds dtime) override;
65 
67  explicit BombHolderSystem(WAL::Wal &wal);
68 
70  BombHolderSystem(const BombHolderSystem &) = default;
71 
73  ~BombHolderSystem() override = default;
74 
76  BombHolderSystem &operator=(const BombHolderSystem &) = delete;
77  };
78 }
BBM::operator|
CollisionComponent::CollidedAxis operator|(CollisionComponent::CollidedAxis first, CollisionComponent::CollidedAxis second)
Definition: CollisionComponent.cpp:58
BBM::BombHolderComponent
Definition: BombHolderComponent.hpp:17
BBM::UP
@ UP
Definition: BombHolderSystem.hpp:19
BBM::ExpansionDirection
ExpansionDirection
Definition: BombHolderSystem.hpp:17
WAL::ViewEntity
Definition: View.hpp:19
BBM::LEFT
@ LEFT
Definition: BombHolderSystem.hpp:21
BBM::BombHolderSystem::BombHolderSystem
BombHolderSystem(WAL::Wal &wal)
A default constructor.
Definition: BombHolderSystem.cpp:39
System.hpp
BBM::BACK
@ BACK
Definition: BombHolderSystem.hpp:24
CollisionComponent.hpp
BombHolderComponent.hpp
BBM::BombHolderSystem::~BombHolderSystem
~BombHolderSystem() override=default
A default destructor.
BBM::BombHolderSystem::_spawnBomb
void _spawnBomb(Vector3f position, BombHolderComponent &holder)
Spawn a bomb at the specified position.
Definition: BombHolderSystem.cpp:120
Vector3.hpp
BBM
Definition: AnimationsComponent.cpp:9
PositionComponent.hpp
WAL::Wal
The main WAL class, it is used to setup and run the ECS.
Definition: Wal.hpp:27
WAL::Entity
An entity of the WAL's ECS.
Definition: Entity.hpp:20
BBM::BombHolderSystem::_bombCollide
static void _bombCollide(WAL::Entity &entity, const WAL::Entity &wall, BBM::CollisionComponent::CollidedAxis collidedAxis)
The method called when a player collide with a bomb.
Definition: BombHolderSystem.cpp:28
BBM::DOWN
@ DOWN
Definition: BombHolderSystem.hpp:20
BBM::CollisionComponent::CollidedAxis
CollidedAxis
Used to tell the collided axis.
Definition: CollisionComponent.hpp:19
ControllableComponent.hpp
BBM::Vector3< float >
BBM::BombHolderSystem
The system that allow one to place bombs.
Definition: BombHolderSystem.hpp:34
BBM::BombHolderSystem::operator=
BombHolderSystem & operator=(const BombHolderSystem &)=delete
A bomb holder system is not assignable.
BBM::RIGHT
@ RIGHT
Definition: BombHolderSystem.hpp:22
BBM::BombHolderSystem::explosionTimer
static std::chrono::nanoseconds explosionTimer
The explosion time of new bombs.
Definition: BombHolderSystem.hpp:60
WAL::System
A base system of WAL.
Definition: System.hpp:22
Wal.hpp
BBM::BombHolderSystem::_bombExplosion
static void _bombExplosion(WAL::Entity &bomb, WAL::Wal &)
The method triggered when the bomb explode.
Definition: BombHolderSystem.cpp:112
BBM::FRONT
@ FRONT
Definition: BombHolderSystem.hpp:23
BBM::BombHolderSystem::onUpdate
void onUpdate(WAL::ViewEntity< PositionComponent, BombHolderComponent, ControllableComponent > &entity, std::chrono::nanoseconds dtime) override
Definition: BombHolderSystem.cpp:178
BBM::BombHolderSystem::_dispatchExplosion
static void _dispatchExplosion(const Vector3f &position, WAL::Wal &wal, int size, ExpansionDirection expansionDirections=ExpansionDirection::DOWN|ExpansionDirection::UP|ExpansionDirection::FRONT|ExpansionDirection::BACK|ExpansionDirection::LEFT|ExpansionDirection::RIGHT)
Spawn a bomb at the specified position.
Definition: BombHolderSystem.cpp:43