From 99267ff981c080e2c0b96c38af54a9b8c0623e66 Mon Sep 17 00:00:00 2001 From: LaG1924 <12997935+LaG1924@users.noreply.github.com> Date: Thu, 30 Jul 2020 05:07:56 +0500 Subject: Corrected Game Start conditions --- src/GameState.cpp | 29 ++++++++++++++++++++--------- src/GameState.hpp | 7 +++++++ 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/GameState.cpp b/src/GameState.cpp index 03b13ae..3d1714b 100644 --- a/src/GameState.cpp +++ b/src/GameState.cpp @@ -9,6 +9,22 @@ void GameState::Update(double deltaTime) { OPTICK_EVENT(); + + if (!gameStatus.isGameStarted) { + if (!receivedEnoughChunks) { + receivedEnoughChunks = world.GetSectionsList().size() >= 49; + } + + if (receivedJoinGame && receivedEnoughChunks && receivedFirstPlayerPosAndLook) { + gameStatus.isGameStarted = true; + LOG(INFO) << "Game is started"; + PUSH_EVENT("RemoveLoadingScreen", 0); + + auto packetPerformRespawn = std::make_shared(0); + PUSH_EVENT("SendPacket", std::static_pointer_cast(packetPerformRespawn)); + } + } + if (!gameStatus.isGameStarted) return; @@ -269,6 +285,8 @@ void GameState::UpdatePacket(std::shared_ptr ptr) { << ", Level Type is " << gameStatus.levelType; PUSH_EVENT("PlayerConnected", 0); + receivedJoinGame = true; + auto packetSettings = std::make_shared("en_us", 0x14, 0, true, 0x7F, 1); PUSH_EVENT("SendPacket", std::static_pointer_cast(packetSettings)); @@ -364,18 +382,11 @@ void GameState::UpdatePacket(std::shared_ptr ptr) { PUSH_EVENT("PlayerPosChanged", player->pos); LOG(INFO) << "PlayerPos is " << player->pos << "\t\tAngle: " << player->yaw << "," << player->pitch;; - if (!gameStatus.isGameStarted) { - LOG(INFO) << "Game is started"; - PUSH_EVENT("RemoveLoadingScreen", 0); - } - - gameStatus.isGameStarted = true; + receivedFirstPlayerPosAndLook = true; auto packetResponse = std::make_shared(packet->TeleportId); - auto packetPerformRespawn = std::make_shared(0); - PUSH_EVENT("SendPacket", std::static_pointer_cast(packetResponse)); - PUSH_EVENT("SendPacket", std::static_pointer_cast(packetPerformRespawn)); + break; } diff --git a/src/GameState.hpp b/src/GameState.hpp index 5489ac6..0ca858f 100644 --- a/src/GameState.hpp +++ b/src/GameState.hpp @@ -68,6 +68,13 @@ class GameState { Window playerInventory; std::vector openedWindows; + + bool receivedJoinGame = false; + + bool receivedEnoughChunks = false; + + bool receivedFirstPlayerPosAndLook = false; + public: void Update(double deltaTime); -- cgit v1.2.3