From 988b2c330cc13a93285a19aaa93ab0bcb6235d37 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 12:17:47 -0500 Subject: [PATCH] Before the merge.... --- SQCSim-srv/connection.cpp | 94 +++++++++++++++++++++------------------ SQCSim2021/engine.cpp | 47 +++++++++++++++----- 2 files changed, 86 insertions(+), 55 deletions(-) diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp index 3ced157..b41dff2 100644 --- a/SQCSim-srv/connection.cpp +++ b/SQCSim-srv/connection.cpp @@ -2,20 +2,20 @@ -Connection::Connection(SOCKET sock, - sockaddr_in sockaddr, - LoginInfo log, - PlayerInfo play): - m_sock(sock), - m_addr(sockaddr), - m_loginfo(log), +Connection::Connection(SOCKET sock, + sockaddr_in sockaddr, + LoginInfo log, + PlayerInfo play) : + m_sock(sock), + m_addr(sockaddr), + m_loginfo(log), m_playinfo(play) { } Connection::~Connection() { closesocket(m_sock); } -uint64_t Connection::GetHash(bool self) const { return self? m_loginfo.sid: m_playinfo.id; } +uint64_t Connection::GetHash(bool self) const { return self ? m_loginfo.sid : m_playinfo.id; } uint64_t Connection::GetTeamHash() const { return m_loginfo.tid; } @@ -51,25 +51,25 @@ void Connection::getPacks(SOCKET sock) { std::vector lsPck; Input in; Sync sync; - lsPck = recvPacksFrom(sock, &m_buf, m_addr); - for (auto& pck : lsPck) { - uint32_t bsize = m_buf.len - (pck - m_buf.ptr); - switch (netprot::getType(pck, 1)) { - using enum netprot::PACKET_TYPE; - case INPUT: - if (Deserialize(&in, pck, &bsize)) { - m_input_manifest[in.timestamp] = in; - m_input_vector.push_back(in); - } - break; - case SYNC: - if (Deserialize(&sync, pck, &bsize)) - m_nsync = true; - break; - default: break; + lsPck = recvPacksFrom(sock, &m_buf, m_addr); + for (auto& pck : lsPck) { + uint32_t bsize = m_buf.len - (pck - m_buf.ptr); + switch (netprot::getType(pck, 1)) { + using enum netprot::PACKET_TYPE; + case INPUT: + if (Deserialize(&in, pck, &bsize)) { + m_input_manifest[in.timestamp] = in; + m_input_vector.push_back(in); } + break; + case SYNC: + if (Deserialize(&sync, pck, &bsize)) + m_nsync = true; + break; + default: break; } - lsPck.clear(); + } + lsPck.clear(); } void Connection::sendPacks(SOCKET sock, std::unordered_map conns, const uint32_t timer) { @@ -131,12 +131,12 @@ Timestamp Connection::Run(World* world) { } player->SetDirection(in.direction); - player->ApplyPhysics(player->GetInput(in.keys.forward, - in.keys.backward, - in.keys.left, - in.keys.right, - in.keys.jump, false, el), world, el); - + player->ApplyPhysics(player->GetInput(in.keys.forward, + in.keys.backward, + in.keys.left, + in.keys.right, + in.keys.jump, false, el), world, el); + if (player->GetPosition().y < -10.) { player->InflictDamage(9000); player->Killer = GetHash(true); @@ -144,28 +144,34 @@ Timestamp Connection::Run(World* world) { out.states.jumping = in.keys.jump; out.states.running = player->GetVelocity().Length() > .3f; - + if (player->AmIDead()) { in.keys.shoot = false; in.keys.block = false; out.states.dead = true; } + static bool toggle = false; if (in.keys.block) { - bool block = false; - ChunkMod* cmod = world->ChangeBlockAtCursor(BLOCK_TYPE::BTYPE_METAL, - player->GetPosition(), - player->GetDirection(), - block, true); - if (cmod) - ChunkDiffs.emplace_back(cmod); + if (!toggle) { + toggle = true; + bool block = false; + ChunkMod* cmod = world->ChangeBlockAtCursor(BLOCK_TYPE::BTYPE_METAL, + player->GetPosition(), + player->GetDirection(), + block, true); + if (cmod) + ChunkDiffs.emplace_back(cmod); + } } + else toggle = false; if (in.keys.shoot && m_shoot_acc <= 0.) { Bullets.emplace_back(new Bullet(player->GetPOV() + player->GetDirection(), player->GetDirection(), GetHash(true))); out.states.shooting = true; + m_shoot_acc = BULLET_TIME; } - + out.position = player->GetPositionAbs(); out.direction = in.direction; out.timestamp = in.timestamp; @@ -173,7 +179,7 @@ Timestamp Connection::Run(World* world) { m_output_manifest[out.timestamp] = out; m_output_vector.push_back(out); tstamp = out.timestamp; - + ++m_last_in; } @@ -181,10 +187,10 @@ Timestamp Connection::Run(World* world) { } void Connection::CleanInputManifest(Timestamp time) { -// auto wat = m_input_manifest.find(time); + // auto wat = m_input_manifest.find(time); -// while (wat != m_input_manifest.begin()) -// m_input_manifest.erase(wat--); + // while (wat != m_input_manifest.begin()) + // m_input_manifest.erase(wat--); } Timestamp Connection::GetTStamp() const { return m_tstamp; } diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 20a8d36..9495a93 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -1267,20 +1267,17 @@ void Engine::Render(float elapsedTime) { m_player.ApplyTransformation(remotePlayer, true, false); - if (m_key1) bloc++; - else if (m_key2) bloc--; + //if (m_key1) bloc++; + //else if (m_key2) bloc--; - if (m_mouseWU) bloc++; - else if (m_mouseWD) bloc--; - if (bloc == BTYPE_LAST + 1) bloc = BTYPE_AIR + 1; - else if (bloc == BTYPE_AIR) bloc = BTYPE_LAST; // La selection de BTYPE_LAST �quipe l'arme. + //if (m_mouseWU) bloc++; + //else if (m_mouseWD) bloc--; + //if (bloc == BTYPE_LAST + 1) bloc = BTYPE_AIR + 1; + //else if (bloc == BTYPE_AIR) bloc = BTYPE_LAST; // La selection de BTYPE_LAST �quipe l'arme. m_mouseWU = m_mouseWD = m_key1 = m_key2 = false; netprot::ChunkMod* cmod = nullptr; - if (m_mouseL) { - if (bloc != BTYPE_LAST) - cmod = m_world.ChangeBlockAtCursor(bloc, m_player.GetPosition(), m_player.GetDirection(), m_block, m_networkgame); - else if (bulletTime <= 0.f) { + if (bulletTime <= 0.f) { for (int x = 0; x < MAX_BULLETS; ++x) // Ajouter une balle dans l'array (aussi connu sous le nom de "faire pow pow"). if (!m_bullets[x]) { m_bullets[x] = new Bullet(m_player.GetPOV() + m_player.GetDirection(), m_player.GetDirection()); @@ -1301,7 +1298,35 @@ void Engine::Render(float elapsedTime) { } } else if (m_mouseR) - cmod = m_world.ChangeBlockAtCursor(BTYPE_AIR, m_player.GetPosition(), m_player.GetDirection(), m_block, m_networkgame); + cmod = m_world.ChangeBlockAtCursor(BTYPE_METAL, m_player.GetPosition(), m_player.GetDirection(), m_block, m_networkgame); + + + + //if (m_mouseL) { + // if (bloc != BTYPE_LAST) + // cmod = m_world.ChangeBlockAtCursor(bloc, m_player.GetPosition(), m_player.GetDirection(), m_block, m_networkgame); + // else if (bulletTime <= 0.f) { + // for (int x = 0; x < MAX_BULLETS; ++x) // Ajouter une balle dans l'array (aussi connu sous le nom de "faire pow pow"). + // if (!m_bullets[x]) { + // m_bullets[x] = new Bullet(m_player.GetPOV() + m_player.GetDirection(), m_player.GetDirection()); + // break; + // } + // else if (x == MAX_BULLETS - 1) { // S'il y a pas d'espace dans l'array, prendre la place de la première balle de l'array. + // m_bullets[0]->~Bullet(); + // m_bullets[0] = new Bullet(m_player.GetPOV() + m_player.GetDirection(), m_player.GetDirection()); + // } + // bulletTime = BULLET_TIME; + // m_audio.Create3DAudioObj(m_powpow, AUDIO_PATH "pow.wav", m_player.GetPOV(), m_player.GetDirection() * 10, false, .5f); + // if (m_flash) { // Coupe le rendering et affiche un frame blanc, pour simuler un flash. + // glClearColor(.8f, .8f, .8f, 1.f); + // glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); + // glClearColor(0.f, 0.f, 0.f, 1.f); + // return; + // } + // } + //} + //else if (m_mouseR) + // cmod = m_world.ChangeBlockAtCursor(BTYPE_AIR, m_player.GetPosition(), m_player.GetDirection(), m_block, m_networkgame); for (int x = 0; x < MAX_BULLETS; ++x) { // Array de bullets en jeu. if (m_bullets[x]) {