R-Type
RTypeClient.hpp
Go to the documentation of this file.
1 /*
2 ** EPITECH PROJECT, 2023
3 ** RTypeClient.hpp
4 ** File description:
5 ** RTypeClient
6 */
7 
8 #ifndef RTYPECLIENT_HPP_
9 #define RTYPECLIENT_HPP_
10 
11 #include <asio.hpp>
12 #include <cstdint>
13 #include "GameEngine.hpp"
14 #include "Protocol.hpp"
15 #include "UdpClient.hpp"
16 #include "TcpClient.hpp"
17 #include "Keyboard.hpp"
18 
19 namespace RType::Client
20 {
22  {
23  public:
24  RTypeClient(const std::string &address = "127.0.0.1", unsigned short port = 8080);
25  ~RTypeClient();
28  void startNetwork(bool &isRunning);
30  void gameLoop();
32  void handleEvent();
33 
34  void handleTransformComponent(struct RType::Event event);
35  void handleTextureComponent(struct RType::Event event);
36  void handleCollisionComponent(struct RType::Event event);
37 
40  void handleNewEntity(struct RType::Event event);
43  void handleEntity(struct RType::Event event);
46  void handleDisconnexion(struct RType::Event event);
49  void deleteEntity(struct RType::Protocol::EntityIdData entityId);
56 
60  void setGameEngineSystem();
61 
62  void setGameEngineCallback();
63 
64  void setGameEngine();
65  void setGameEngineScene();
66 
67  void handleEndGame(struct RType::Event event);
68  void setEndGameState(struct RType::Protocol::EndGameData endGameData);
69  void setEndGameCallback();
70 
71  void setPrefab();
72 
73  void setupTextureEntity();
74 
78 
81  void runUdpServer();
82  void runTcpServer();
83  void handleQuit();
84 
85  void handleTextureState(struct RType::Event event);
86  void setTextureState(struct RType::Protocol::StatePlayerData transformData);
88 
90 
91  void handleControllableComponent(struct RType::Event event);
92  void setControllable(struct RType::Protocol::ControllableData controllableData);
93 
95  void setTransformCallback();
96 
98 
100  void setCollisionCallback();
101 
102  void getTextureInformation(struct RType::Protocol::TextureData textureData);
103  void setTextureCallback();
104 
105  void setupGame();
106  void setupScoreText();
107 
108  void handleScore(struct RType::Event event);
109  void setScoreCallback();
110  void setScore(struct RType::Protocol::ScoreData scoreData);
111 
112  void playerCollisionCallback(const std::size_t &entityId,
115  void parallaxCollision(const std::size_t &entityId, SparseArray<GameEngine::CollisionComponent> &collisions,
117 
118  void setInputCallback();
119  void handleInput(struct GameEngine::Input::InputInfo inputData);
120 
121  void handleMoveInput(std::vector<std::byte> data, struct GameEngine::Input::InputInfo input);
122 
123  protected:
124  private:
125  std::size_t findEntity(const std::size_t &networkId);
126  bool searchEntity(const std::size_t &networkId);
127 
128  GameEngine::GameEngine _gameEngine;
129  asio::io_context _IOContext;
130  asio::ip::udp::endpoint _serverUdpEndpoint;
131  asio::ip::tcp::endpoint _serverTcpEndpoint;
132  RType::Client::UdpClient _udpClient;
133  asio::signal_set _signal;
134  SafeQueue<struct RType::Event> _eventQueue;
135  std::size_t _scoreTextEntity;
136  bool _isRunning;
137  std::size_t _points;
138  uint16_t _serverId;
139  std::size_t _id;
140  bool _win;
141  bool isOpen;
142  bool _endScene;
143  std::vector<GameEngine::Entity> _entities;
144  RType::GameState _gameState;
145  GameEngine::Input::InputType _lastInput;
146  std::map<uint8_t, std::string> _listTextureTypePrefab;
147  std::map<uint8_t, std::string> _listPathTextureId;
148  };
149 } // namespace RType::Client
150 
151 #endif /* !RTYPECLIENT_HPP_ */
Entity class for the game engine.
Definition: Entity.hpp:18
Game engine class, will manage all the necessary classes for the game.
Definition: GameEngine.hpp:40
Definition: RTypeClient.hpp:22
void setScore(struct RType::Protocol::ScoreData scoreData)
Definition: ScoreEvent.cpp:15
void handleScore(struct RType::Event event)
Definition: HandleEvent.cpp:71
void updatePlayerMovement(const GameEngine::TransformComponent &transform)
Function that delete a Entity.
void setControllable(struct RType::Protocol::ControllableData controllableData)
Definition: ControllableEvent.cpp:14
void handleControllableComponent(struct RType::Event event)
Definition: HandleEvent.cpp:51
void handleCollisionComponent(struct RType::Event event)
Definition: HandleEvent.cpp:41
~RTypeClient()
Definition: RTypeClient.cpp:62
void setTextureCallback()
Definition: TextureEvent.cpp:76
void handleNewEntity(struct RType::Event event)
Function that will handle when new entity needed to be create.
void getCollisionInformation(struct RType::Protocol::CollisionData collisionData)
Definition: CollisionEvent.cpp:32
void setGameEngineSystem()
Set every system to the registry of the game engine.
Definition: SetGameEngine.cpp:70
void handleQuit()
Definition: RTypeClient.cpp:70
void handleTextureComponent(struct RType::Event event)
Definition: HandleEvent.cpp:31
void getTransformInformation(struct RType::Protocol::TransformData transformData)
Definition: TransformEvent.cpp:13
void setGameEngineScene()
Definition: SetGameEngine.cpp:119
void setGameEngineCallback()
Definition: SetGameEngine.cpp:57
void setCollisionCallback()
Definition: CollisionEvent.cpp:56
void getTextureInformation(struct RType::Protocol::TextureData textureData)
Definition: TextureEvent.cpp:44
void handlePlayerMovement()
Function that will handle when entity needed to be move.
void setEndGameCallback()
Definition: EndGameEvent.cpp:20
RTypeClient(const std::string &address="127.0.0.1", unsigned short port=8080)
Definition: RTypeClient.cpp:27
void handleDisconnexion(struct RType::Event event)
Function that will handle when entity needed to be delete.
Definition: HandleEvent.cpp:12
void handleEndGame(struct RType::Event event)
Definition: HandleEvent.cpp:80
void deleteEntity(struct RType::Protocol::EntityIdData entityId)
Function that delete a Entity.
Definition: DeleteEntityEvent.cpp:12
void setInputCallback()
Definition: InputEvent.cpp:30
void playerCollisionCallback(const std::size_t &entityId, SparseArray< GameEngine::CollisionComponent > &collisions, SparseArray< GameEngine::TransformComponent > &transforms)
Definition: Callback.cpp:12
void setCollisionInformation(struct RType::Protocol::CollisionData collisionData, GameEngine::Entity &entity)
Definition: CollisionEvent.cpp:13
void setTextureInformation(struct RType::Protocol::TextureData textureData, GameEngine::Entity &entity)
Definition: TextureEvent.cpp:14
void parallaxCollision(const std::size_t &entityId, SparseArray< GameEngine::CollisionComponent > &collisions, SparseArray< GameEngine::TransformComponent > &transforms)
Definition: Callback.cpp:34
void setDeleteEntityCallback()
Definition: DeleteEntityEvent.cpp:23
void setupTextureEntity()
Definition: SetupGame.cpp:32
void setControllableCallback()
Definition: ControllableEvent.cpp:31
void setupGame()
Definition: SetupGame.cpp:46
void setTextureStateCallback()
Definition: StateTextureEvent.cpp:28
void handleMoveInput(std::vector< std::byte > data, struct GameEngine::Input::InputInfo input)
void runUdpServer()
Definition: RTypeClient.cpp:83
void handleEvent()
Function that will handle every event from the UDP Client.
Definition: HandleEvent.cpp:90
void shootEvent(const GameEngine::TransformComponent &transform)
void setTextureState(struct RType::Protocol::StatePlayerData transformData)
Definition: StateTextureEvent.cpp:12
void setGameEngine()
Definition: SetGameEngine.cpp:124
void handleTransformComponent(struct RType::Event event)
Definition: HandleEvent.cpp:21
void handleInput(struct GameEngine::Input::InputInfo inputData)
Definition: InputEvent.cpp:14
void gameLoop()
Game Loop from the client.
Definition: RTypeClient.cpp:93
void setEndGameState(struct RType::Protocol::EndGameData endGameData)
Definition: EndGameEvent.cpp:12
void setScoreCallback()
Definition: ScoreEvent.cpp:24
void handleEntity(struct RType::Event event)
Function that will handle when entity needed to be update.
void startNetwork(bool &isRunning)
Start the Network from the client in a thread.
Definition: RTypeClient.cpp:64
void handleTextureState(struct RType::Event event)
Definition: HandleEvent.cpp:61
void setPrefab()
Definition: SetGameEngine.cpp:48
void setupScoreText()
Definition: SetupGame.cpp:14
void setGameEngineComponent()
Set every component to the registry of the game engine.
Definition: SetGameEngine.cpp:33
void setTransformCallback()
Definition: TransformEvent.cpp:42
Definition: UdpClient.hpp:21
InputType
Definition: Keyboard.hpp:16
Definition: RTypeClient.hpp:20
GameState
Definition: RType.hpp:24
Definition: Keyboard.hpp:19
Definition: TransformComponent.hpp:15
Definition: RType.hpp:31
Definition: Protocol.hpp:95
Definition: Protocol.hpp:58
Definition: Protocol.hpp:35
Definition: Protocol.hpp:63
Definition: Protocol.hpp:47
Definition: Protocol.hpp:52
Definition: Protocol.hpp:106
Definition: Protocol.hpp:86