10 #include "./Scenes/IScene.hpp"
11 #include "./Scenes/Lobby/Lobby.hpp"
12 #include "./services/Graphic.hpp"
14 #include <SFML/Window/Event.hpp>
15 #include <SFML/Window/Keyboard.hpp>
29 _socket = std::move(socket);
30 _scenes[
"Lobby"] = std::make_shared<LobbyScene>(_socket);
31 _currentScene =
nullptr;
45 void update(std::shared_ptr<Event> event, std::shared_ptr<Packet> packet)
override
47 timeval currentTime{};
48 timeval elapsedTime{};
49 gettimeofday(¤tTime,
nullptr);
52 if (!_socket->getClients().empty()) {
53 if (_currentScene ==
nullptr) {
54 _currentScene = _scenes[
"Lobby"];
55 _currentScene->restartScene();
58 _currentScene =
nullptr;
61 if (_currentScene ==
nullptr)
63 _currentScene->update(event, packet);
65 if (_socket->getClients().size() != last_client_nb) {
66 last_client_nb = _socket->getClients().size();
67 std::shared_ptr<Packet> sendpacket = std::make_shared<Packet>();
68 sendpacket->code = EVENT;
69 sendpacket->data_size = strlen(
"new player");
70 sendpacket->data = malloc(sendpacket->data_size);
71 memcpy(sendpacket->data,
"new player", sendpacket->data_size);
72 _socket->broadcast(sendpacket.get());
75 if (elapsedTime.tv_sec >= 5) {
76 _currentScene->broadcastGameState();