summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/GameState.cpp29
-rw-r--r--src/GameState.hpp7
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<PacketClientStatus>(0);
+ PUSH_EVENT("SendPacket", std::static_pointer_cast<Packet>(packetPerformRespawn));
+ }
+ }
+
if (!gameStatus.isGameStarted)
return;
@@ -269,6 +285,8 @@ void GameState::UpdatePacket(std::shared_ptr<Packet> ptr) {
<< ", Level Type is " << gameStatus.levelType;
PUSH_EVENT("PlayerConnected", 0);
+ receivedJoinGame = true;
+
auto packetSettings = std::make_shared<PacketClientSettings>("en_us", 0x14, 0, true, 0x7F, 1);
PUSH_EVENT("SendPacket", std::static_pointer_cast<Packet>(packetSettings));
@@ -364,18 +382,11 @@ void GameState::UpdatePacket(std::shared_ptr<Packet> 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<PacketTeleportConfirm>(packet->TeleportId);
- auto packetPerformRespawn = std::make_shared<PacketClientStatus>(0);
-
PUSH_EVENT("SendPacket", std::static_pointer_cast<Packet>(packetResponse));
- PUSH_EVENT("SendPacket", std::static_pointer_cast<Packet>(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<Window> openedWindows;
+
+ bool receivedJoinGame = false;
+
+ bool receivedEnoughChunks = false;
+
+ bool receivedFirstPlayerPosAndLook = false;
+
public:
void Update(double deltaTime);