My Project
ReceiveSystem.hpp
1 /*
2 ** EPITECH PROJECT, 2022
3 ** B-CPP-500-PAR-5-1-rtype-martin.vanaud
4 ** File description:
5 ** ReceiveSytem
6 */
7 
8 #ifndef RECEIVESYSTEM_HPP_
9  #define RECEIVESYSTEM_HPP_
10 
11  #include <functional>
12  #include <unordered_map>
13 
14  /* Ecs */
15  #include "Registry.hpp"
16 
17  /* Serialization */
18  #include "Serialization.hpp"
19 
20  /* Component */
21  #include "Component/CNetworkQueue.hpp"
22 
26 namespace System {
30  class ReceiveSystem {
31  public:
35  ReceiveSystem();
36  ~ReceiveSystem() = default;
37 
44  void operator()(
45  Registry &registry,
47  );
48 
49  protected:
50  private:
58  void addMoveOnQueue(std::vector<byte> const &data, int clientId, Sparse_array<component::cnetwork_queue_t> &queues);
59 
67  void addShootOnQueue(std::vector<byte> const &data, int clientId, Sparse_array<component::cnetwork_queue_t> &queues);
68 
76  void addNewPLayerOnQueue(std::vector<byte> const &data, int clientId, Sparse_array<component::cnetwork_queue_t> &queues);
77 
85  void addDisconnectionOnQueue(std::vector<byte> const &data, int clientId, Sparse_array<component::cnetwork_queue_t> &queues);
86 
94  void addJoinLobbyOnQueue(std::vector<byte> const &data, int clientId, Sparse_array<component::cnetwork_queue_t> &queues);
95 
103  void addStartGameOnQueue(std::vector<byte> const &data, int clientId, Sparse_array<component::cnetwork_queue_t> &queues);
104 
105  std::unordered_map<uint8_t, std::function<void(std::vector<byte> const &, int, Sparse_array<component::cnetwork_queue_t> &)>> callBacks {
106  {NETWORK_CLIENT_TO_SERVER::PACKET_TYPE::NEW_CLIENT, std::bind(&ReceiveSystem::addNewPLayerOnQueue, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)},
107  {NETWORK_CLIENT_TO_SERVER::PACKET_TYPE::DIRECTION, std::bind(&ReceiveSystem::addMoveOnQueue, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)},
108  {NETWORK_CLIENT_TO_SERVER::PACKET_TYPE::SHOOT, std::bind(&ReceiveSystem::addShootOnQueue, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)},
109  {NETWORK_CLIENT_TO_SERVER::PACKET_TYPE::DISCONNECTION, std::bind(&ReceiveSystem::addDisconnectionOnQueue, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)},
110  {NETWORK_CLIENT_TO_SERVER::PACKET_TYPE::JOIN_LOBBY, std::bind(&ReceiveSystem::addJoinLobbyOnQueue, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)},
111  {NETWORK_CLIENT_TO_SERVER::PACKET_TYPE::START_GAME, std::bind(&ReceiveSystem::addStartGameOnQueue, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)}
112  };
113  };
114 };
115 
116 #endif /* !RECEIVESYSTEM_HPP_ */
Sparse_array
Class that handle Element of type Component like a vector which can be holed.
Definition: SparseArray.hpp:22
System::ReceiveSystem::ReceiveSystem
ReceiveSystem()
Construct a new Event System object.
Definition: ReceiveSystem.cpp:13
System
Namespace for systems.
Definition: DirectionSystem.hpp:24
System::ReceiveSystem
System in charge of dispatch in specific queues sended request from queue.
Definition: ReceiveSystem.hpp:30
Registry
Class that handle ECS.
Definition: Registry.hpp:22
System::ReceiveSystem::operator()
void operator()(Registry &registry, Sparse_array< component::cnetwork_queue_t > &queues)
Function that will be automaticaly called while the client is working (on loop)
Definition: ReceiveSystem.cpp:17