From 71760514fc044f273914c17b1510fa3cf10419b3 Mon Sep 17 00:00:00 2001 From: LaG1924 <12997935+LaG1924@users.noreply.github.com> Date: Fri, 21 Apr 2017 18:31:43 +0500 Subject: 2017-04-21 --- Game.cpp | 44 +++++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 17 deletions(-) (limited to 'Game.cpp') diff --git a/Game.cpp b/Game.cpp index 86be314..8674942 100644 --- a/Game.cpp +++ b/Game.cpp @@ -1,43 +1,51 @@ #include "Game.hpp" #include "PacketParser.hpp" #include "PacketBuilder.hpp" -#include "json.h" -#include - +#include "json.hpp" Game::Game() { - m_display = new Display(); - m_display->SetWorld(&m_world); + m_display = new Display(1280, 720, "AltCraft", &m_world, gameStartWaiter); m_nc = new NetworkClient("127.0.0.1", 25565, "HelloOne"); - m_nc->Update(); - Packet response = m_nc->GetPacket(); + Packet &response = *m_nc->GetPacket(); + if (response.GetId()!=0x02){ + std::cout<< response.GetId()<GetThreadHandler()); while (!m_exit) { ParsePackets(); - if (g_IsGameStarted) - m_display->Update(); if (m_display->IsClosed()) - throw 140; + m_exit = true; } } void Game::ParsePackets() { - m_nc->Update(); - Packet packet = m_nc->GetPacket(); - if (packet.GetId() == -1) + Packet *packetPtr =m_nc->GetPacket(); + if (!packetPtr) { + using namespace std::chrono_literals; + std::this_thread::sleep_for(16ms); return; + } + Packet packet = *packetPtr; + delete packetPtr; PacketParser::Parse(packet); nlohmann::json json; @@ -109,6 +117,7 @@ void Game::ParsePackets() { std::cout << "PlayerPos is " << g_PlayerX << "," << g_PlayerY << "," << g_PlayerZ << "\t" << g_PlayerYaw << "," << g_PlayerPitch << std::endl; m_display->SetPlayerPos(g_PlayerX, g_PlayerY); + gameStartWaiter.notify_all(); break; case 0x1A: json = nlohmann::json::parse(packet.GetField(0).GetString()); @@ -116,11 +125,7 @@ void Game::ParsePackets() { throw 119; break; case 0x20: - std::cout.setstate(std::ios_base::failbit); m_world.ParseChunkData(packet); - std::cout.clear(); - //sf::sleep(sf::seconds(0.1)); - //throw 122; break; case 0x07: std::cout << "Statistics:" << std::endl; @@ -147,3 +152,8 @@ void Game::ParsePackets() { } } } + +void Game::Exec() { + m_gameThread = std::thread(&Game::MainLoop,this); + m_display->MainLoop(); +} -- cgit v1.2.3