From df0a142b12450f2db3d692546fdafb3bdb48813b Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Sat, 2 Dec 2023 15:19:46 -0500 Subject: [PATCH 01/82] ishhh --- SQCSim2021/engine.cpp | 6 +++-- SQCSim2021/remoteplayer.cpp | 49 ++++++++++++++++++++----------------- SQCSim2021/remoteplayer.h | 2 +- 3 files changed, 32 insertions(+), 25 deletions(-) diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index f30b4bc..8338d17 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -394,7 +394,7 @@ void Engine::Init() { m_world.SetSeed(seed); m_startTime = std::chrono::high_resolution_clock::now(); - + m_remotePlayer.SetPosition(Vector3f(.5, CHUNK_SIZE_Y + 10., .5)); // Gestion de souris. CenterMouse(); HideCursor(); @@ -1249,6 +1249,8 @@ void Engine::Render(float elapsedTime) { m_renderer.UpdateMesh(&m_world, m_player.GetPosition(), m_blockinfo); //m_booster.RenderBillboard({ 195,16,195 }, m_textureAtlas, m_shader01, all); + m_remotePlayer.ApplyPhysics(Vector3f(0, 0, 0), &m_world, elapsedTime); + m_remotePlayer.Render(m_animeAtlas, m_shader01, all ,elapsedTime , m_player); m_renderer.RenderWorld(&m_world, m_renderCount, m_player.GetPosition(), m_player.GetDirection(), all, m_shader01, m_textureAtlas); @@ -1377,7 +1379,7 @@ void Engine::Render(float elapsedTime) { for (auto& [key, player] : m_players) { RemotePlayer* rt = static_cast(player); glClear(GL_STENCIL_BUFFER_BIT); - rt->Render(m_animeAtlas, m_shader01, all, elapsedTime); + rt->Render(m_animeAtlas, m_shader01, all, elapsedTime, m_player); m_otherplayerpos = player->GetPosition(); // Aller chercher GetPosition des deux façon, voir si ça chie. } glEnable(GL_CULL_FACE); diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index d203fb0..bd03e34 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -81,31 +81,37 @@ void RemotePlayer::Feed(const netprot::Output out) { //m_position = current.position; } -void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tran, float elapsedTime) + + + +void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tran, float elapsedTime, Player& camera) { - float x = GetPosition().x; - float y = GetPosition().y; - float z = GetPosition().z; + float width = 1.f; float height = 1.7f; + + Matrix4 mat4 = tran.GetMatrix(); + + Vector3f CameraRight = Vector3f(mat4.Get11(), mat4.Get21(), mat4.Get31()); + Vector3f CameraUp = Vector3f(mat4.Get12(), mat4.Get22(), mat4.Get32()); + + Vector3f playerPosition = GetPosition() + Vector3f(0.f, 0.f, 0.f); + + //Vector3f postionCamera = camera.GetPosition(); + + Vector3f v3 = (playerPosition + CameraRight * -0.5 * width + CameraUp * -0.5 * height); + Vector3f v1 = (playerPosition + CameraRight * 0.5 * width + CameraUp * -0.5 * height); + Vector3f v2 = (playerPosition + CameraRight * 0.5 * width + CameraUp * 0.5 * height); + Vector3f v4 = (playerPosition + CameraRight * -0.5 * width + CameraUp * 0.5 * height); + - //Matrix4 mat4 = tran.GetMatrix(); - //mat4 VP = pMatrix * vMatrix; - //Vector3f CameraRight = Vector3f(mat4.Get11(), mat4.Get21(), mat4.Get31()); - //Vector3f CameraUp = Vector3f(mat4.Get12(), mat4.Get22(), mat4.Get32()); - //Vector3f v1 = (m_position + CameraRight * 0.5 * width + CameraUp * -0.5 * width); - //Vector3f v2 = (m_position + CameraRight * 0.5 * width + CameraUp * 0.5 * width); - //Vector3f v4 = (m_position + CameraRight * -0.5 * width + CameraUp * -0.5 * width); - //Vector3f v3 = (m_position + CameraRight * -0.5 * width + CameraUp * 0.5 * width); - //tran.ApplyTranslation(m_position); float u, v, w, h; - //glDisable(GL_DEPTH_TEST); + shader.Use(); atlas.Bind(); atlas.TextureIndexToCoord(0, u, v, w, h); - //glLoadIdentity(); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); @@ -113,20 +119,19 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr glLoadMatrixf(tran.GetMatrix().GetInternalValues()); glBegin(GL_QUADS); - glTexCoord2f(u, v); glVertex3f(x - width/2., y - height, z); //glVertex3f(v4.x, v4.y, v4.z);//glVertex3f(0, 50, 0); - glTexCoord2f(u + w, v); glVertex3f(x+width/2., y - height, z); //glVertex3f(v3.x, v3.y, v3.z); //glVertex3f(50,50, 0); - glTexCoord2f(u + w, v + h); glVertex3f(x+width/2., y, z); //glVertex3f(v2.x, v2.y, v2.z); //glVertex3f(50, 0, 0); - glTexCoord2f(u, v + h); glVertex3f(x-width/2., y, z); //glVertex3f(v1.x, v1.y, v1.z);// glVertex3f(0, 0, 0); - glEnd(); + glTexCoord2f(u, v); glVertex3f(v1.x, v1.y, v1.z); + glTexCoord2f(u + w, v); glVertex3f(v2.x, v2.y, v2.z); + glTexCoord2f(u + w, v + h); glVertex3f(v3.x, v3.y, v3.z); + glTexCoord2f(u, v + h); glVertex3f(v4.x, v4.y, v4.z); + glEnd(); glBlendFunc(GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR); glBlendEquation(GL_FUNC_SUBTRACT); glDisable(GL_BLEND); shader.Disable(); - //tran.ApplyTranslation(-m_position); - //glEnable(GL_DEPTH_TEST); + } bool RemotePlayer::LoadTexture(Texture& texture, const std::string& filename, bool useMipmaps, bool stopOnError) diff --git a/SQCSim2021/remoteplayer.h b/SQCSim2021/remoteplayer.h index e782000..fcd5626 100644 --- a/SQCSim2021/remoteplayer.h +++ b/SQCSim2021/remoteplayer.h @@ -21,7 +21,7 @@ public: void Init(); void Feed(const netprot::Output out); - void Render(TextureAtlas& atlas, Shader& shader, Transformation tran, float elapsedTime); + void Render(TextureAtlas& atlas, Shader& shader, Transformation tran, float elapsedTime, Player& camera); bool LoadTexture(Texture& texture, const std::string& filename, bool useMipmaps, bool stopOnError); void SetPosition(Vector3f pos) { m_position = pos; } From e6e93ef6d05597af862fe36440440649680521a2 Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Mon, 4 Dec 2023 16:45:46 -0500 Subject: [PATCH 02/82] YAY --- SQCSim-common/player.cpp | 8 ++++---- SQCSim2021/remoteplayer.cpp | 27 ++++++++++++++------------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/SQCSim-common/player.cpp b/SQCSim-common/player.cpp index 6e18197..063e5e7 100644 --- a/SQCSim-common/player.cpp +++ b/SQCSim-common/player.cpp @@ -204,11 +204,11 @@ Player::Sound Player::ApplyPhysics(Vector3f input, World* world, float elapsedTi void Player::ApplyTransformation(Transformation& transformation, bool rel, bool rot) const { transformation.ApplyRotation(-m_rotX, 1, 0, 0); transformation.ApplyRotation(-m_rotY, 0, 1, 0); + + if (rel) transformation.ApplyTranslation(-GetPOV()); - if (!rot) { - transformation.ApplyRotation(-m_rotX, 1, 0, 0); - transformation.ApplyRotation(-m_rotY, 0, 1, 0); - } + + } void Player::GetBooster(Booster boosttype) diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index bd03e34..f9bb98e 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -10,13 +10,13 @@ RemotePlayer::RemotePlayer(netprot::PlayerInfo pinfo) : m_pinfo(pinfo), m_aminacc(0.0f), m_animstate(Anim::STILL), m_team_id(0), current(), previous(), m_texture_front(), Player(Vector3f(0, 0, 0)){ - LoadTexture(m_texture_front, TEXTURE_PATH "AssetOtherPlayer/FinalPNGStanding/BlueFrontRight.png", false, false); + } RemotePlayer::RemotePlayer(netprot::PlayerInfo pinfo, const Vector3f& pos) : m_pinfo(pinfo), m_aminacc(0.0f), m_animstate(Anim::STILL), m_team_id(0), current(), previous(), m_texture_front(), Player(pos) { - LoadTexture(m_texture_front, TEXTURE_PATH "AssetOtherPlayer/FinalPNGStanding/BlueFrontRight.png", false, false); + } @@ -89,23 +89,24 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr float width = 1.f; float height = 1.7f; - + Matrix4 mat4 = tran.GetMatrix(); + + Vector3f DiffCam = GetPosition() - camera.GetPosition(); + Vector3f UpCam = Vector3f(mat4.Get12(), mat4.Get22(), mat4.Get32()); - Vector3f CameraRight = Vector3f(mat4.Get11(), mat4.Get21(), mat4.Get31()); - Vector3f CameraUp = Vector3f(mat4.Get12(), mat4.Get22(), mat4.Get32()); + Vector3f CrossA = DiffCam.Cross(UpCam); + Vector3f CrossB = DiffCam.Cross(CrossA); + CrossA.Normalize(); + CrossB.Normalize(); Vector3f playerPosition = GetPosition() + Vector3f(0.f, 0.f, 0.f); - //Vector3f postionCamera = camera.GetPosition(); - - Vector3f v3 = (playerPosition + CameraRight * -0.5 * width + CameraUp * -0.5 * height); - Vector3f v1 = (playerPosition + CameraRight * 0.5 * width + CameraUp * -0.5 * height); - Vector3f v2 = (playerPosition + CameraRight * 0.5 * width + CameraUp * 0.5 * height); - Vector3f v4 = (playerPosition + CameraRight * -0.5 * width + CameraUp * 0.5 * height); - - + Vector3f v1 = (playerPosition + CrossA * 0.5 * width + CrossB * 0.5 * height); + Vector3f v2 = (playerPosition - CrossA * 0.5 * width + CrossB * 0.5 * height); + Vector3f v3 = (playerPosition + CrossA * 0.5 * width - CrossB * 0.5 * height); + Vector3f v4 = (playerPosition - CrossA * 0.5 * width - CrossB * 0.5 * height); float u, v, w, h; From e98bd03192f8dce727d69c232df29615b05c7ace Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Mon, 4 Dec 2023 17:02:15 -0500 Subject: [PATCH 03/82] GG EN ROTATION --- SQCSim2021/remoteplayer.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index f9bb98e..b6fa499 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -93,18 +93,18 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr Matrix4 mat4 = tran.GetMatrix(); Vector3f DiffCam = GetPosition() - camera.GetPosition(); - Vector3f UpCam = Vector3f(mat4.Get12(), mat4.Get22(), mat4.Get32()); + Vector3f UpCam = Vector3f(0.f, 1.f, 0.f); Vector3f CrossA = DiffCam.Cross(UpCam); Vector3f CrossB = DiffCam.Cross(CrossA); CrossA.Normalize(); CrossB.Normalize(); - Vector3f playerPosition = GetPosition() + Vector3f(0.f, 0.f, 0.f); + Vector3f playerPosition = GetPosition() + Vector3f(0.f, -.75f, 0.f); - Vector3f v1 = (playerPosition + CrossA * 0.5 * width + CrossB * 0.5 * height); - Vector3f v2 = (playerPosition - CrossA * 0.5 * width + CrossB * 0.5 * height); + Vector3f v2 = (playerPosition + CrossA * 0.5 * width + CrossB * 0.5 * height); + Vector3f v1 = (playerPosition - CrossA * 0.5 * width + CrossB * 0.5 * height); Vector3f v3 = (playerPosition + CrossA * 0.5 * width - CrossB * 0.5 * height); Vector3f v4 = (playerPosition - CrossA * 0.5 * width - CrossB * 0.5 * height); From 16e9f6aefed88b4b5e93f7c2e40525a14c4a21b4 Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Mon, 4 Dec 2023 19:05:36 -0500 Subject: [PATCH 04/82] GG le push --- SQCSim2021/engine.cpp | 16 +++++++-------- SQCSim2021/remoteplayer.cpp | 41 +++++++++++++++++++++++++++++-------- 2 files changed, 41 insertions(+), 16 deletions(-) diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 8338d17..a63664f 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -462,14 +462,14 @@ void Engine::LoadResource() { //AJOUTER LES TEXTURES DANS L'ORDRE DE L'ÉNUM //STILL//STANDING - TextureAtlas::TextureIndex StillFront = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueFrontRight.png"); - //TextureAtlas::TextureIndex StillQuarterFrontLeft = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueLeft.png"); - //TextureAtlas::TextureIndex StillQuarterFrontRight = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueRight.png"); - //TextureAtlas::TextureIndex StillProfiltLeft = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueProfilLeft.png"); - //TextureAtlas::TextureIndex StillProfiltRight = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueProfilRight.png"); - //TextureAtlas::TextureIndex StillQuarterBackLeft = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueLeftBack.png"); - //TextureAtlas::TextureIndex StillQuarterBackRight = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueRightBack.png"); - //TextureAtlas::TextureIndex StillBack = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueBackRight.png"); + TextureAtlas::TextureIndex StillFront = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueFrontRight.png"); //0 + TextureAtlas::TextureIndex StillQuarterFrontLeft = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueLeft.png"); //1 + TextureAtlas::TextureIndex StillQuarterFrontRight = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueRight.png"); //2 + TextureAtlas::TextureIndex StillProfiltLeft = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueProfilLeft.png"); //3 + TextureAtlas::TextureIndex StillProfiltRight = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueProfilRight.png"); //4 + TextureAtlas::TextureIndex StillQuarterBackLeft = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueLeftBack.png"); //5 + TextureAtlas::TextureIndex StillQuarterBackRight = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueRightBack.png"); //6 + TextureAtlas::TextureIndex StillBack = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueBackRight.png"); //7 //SHOOTINGSTILL SANS TIRER //TextureAtlas::TextureIndex StillFrontShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueFrontRightShootingRight.png"); diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index b6fa499..9a29ae3 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -89,30 +89,55 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr float width = 1.f; float height = 1.7f; - - Matrix4 mat4 = tran.GetMatrix(); - + Vector3f DiffCam = GetPosition() - camera.GetPosition(); Vector3f UpCam = Vector3f(0.f, 1.f, 0.f); - Vector3f CrossA = DiffCam.Cross(UpCam); Vector3f CrossB = DiffCam.Cross(CrossA); CrossA.Normalize(); CrossB.Normalize(); - Vector3f playerPosition = GetPosition() + Vector3f(0.f, -.75f, 0.f); - - Vector3f v2 = (playerPosition + CrossA * 0.5 * width + CrossB * 0.5 * height); Vector3f v1 = (playerPosition - CrossA * 0.5 * width + CrossB * 0.5 * height); Vector3f v3 = (playerPosition + CrossA * 0.5 * width - CrossB * 0.5 * height); Vector3f v4 = (playerPosition - CrossA * 0.5 * width - CrossB * 0.5 * height); + Vector3f angleRemote = GetDirection(); + Vector3f angleCam = Vector3f(v2.z, 0, -v2.x); + angleCam.y = 0; + angleRemote.y = 0; + angleCam.Normalize(); + angleRemote.Normalize(); + + float angle = angleRemote.Dot(angleCam); + angle *= 100; + int index = 0; + + if (angle >= -0.125 && angle <= 0.125) + index = 0; + else if (angle >= 0.125 && angle <= 0.375) + index = 1; + else if (angle >= 0.375 && angle <= 0.625) + index = 3; + else if (angle >= 0.625 && angle <= 0.875) + index = 5; + else if (angle >= 0.875 && angle <= -0.875) + index = 7; + else if (angle >= -0.875 && angle <= -0.625) + index = 6; + else if (angle >= -0.625 && angle <= -0.375) + index = 4; + else if (angle >= -0.375 && angle <= -0.125) + index = 2; + + + std::cout << "angle: " << angle << std::endl; + float u, v, w, h; shader.Use(); atlas.Bind(); - atlas.TextureIndexToCoord(0, u, v, w, h); + atlas.TextureIndexToCoord(index, u, v, w, h); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); From 2446b90bff8c600609f29e8c8445c45f28672def Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Tue, 5 Dec 2023 06:25:48 -0500 Subject: [PATCH 05/82] bulletadd --- SQCSim-common/netprotocol.cpp | 143 +++++++++++++++++++++++++++++++++- SQCSim-common/netprotocol.h | 12 ++- SQCSim-srv/connection.cpp | 40 ++++++---- SQCSim-srv/connection.h | 7 +- SQCSim-srv/server.cpp | 96 ++++++++++++++++++----- SQCSim-srv/server.h | 3 +- SQCSim2021/engine.cpp | 43 +++++++++- SQCSim2021/engine.h | 7 +- 8 files changed, 304 insertions(+), 47 deletions(-) diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index 2ba7889..e087313 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -430,6 +430,77 @@ void netprot::Serialize(ChunkMod* chmod, char* buf[], uint32_t* buflen) { *buflen = sizeof(uint32_t) * 3 + 3; } +void netprot::Serialize(BulletAdd* bull, char* buf[], uint32_t* buflen) { + *buf[0] = (char)netprot::PACKET_TYPE::BULLET; + + uint64_t tstamp = bull->tstamp; + uint8_t ts8[sizeof(uint64_t)] = { + (uint8_t)((tstamp >> 56) & 0xFF), + (uint8_t)((tstamp >> 48) & 0xFF), + (uint8_t)((tstamp >> 40) & 0xFF), + (uint8_t)((tstamp >> 32) & 0xFF), + (uint8_t)((tstamp >> 24) & 0xFF), + (uint8_t)((tstamp >> 16) & 0xFF), + (uint8_t)((tstamp >> 8) & 0xFF), + (uint8_t)(tstamp & 0xFF) + }; + + memcpy(*buf + 1, ts8, sizeof(uint64_t)); + + uint64_t tid = bull->tid; + uint8_t tid8[sizeof(uint64_t)] = { + (uint8_t)((tid >> 56) & 0xFF), + (uint8_t)((tid >> 48) & 0xFF), + (uint8_t)((tid >> 40) & 0xFF), + (uint8_t)((tid >> 32) & 0xFF), + (uint8_t)((tid >> 24) & 0xFF), + (uint8_t)((tid >> 16) & 0xFF), + (uint8_t)((tid >> 8) & 0xFF), + (uint8_t)(tid & 0xFF) + }; + + memcpy(*buf + 1 + sizeof(uint64_t), tid8, sizeof(uint64_t)); + + uint32_t vec[3]; + memcpy(vec, &bull->pos, sizeof(Vector3f)); // Pour d�naturer les floats. + + uint8_t vec8[3 * sizeof(uint32_t)] = { + (uint8_t)((vec[0] >> 24) & 0xFF), + (uint8_t)((vec[0] >> 16) & 0xFF), + (uint8_t)((vec[0] >> 8) & 0xFF), + (uint8_t)(vec[0] & 0xFF), + (uint8_t)((vec[1] >> 24) & 0xFF), + (uint8_t)((vec[1] >> 16) & 0xFF), + (uint8_t)((vec[1] >> 8) & 0xFF), + (uint8_t)(vec[1] & 0xFF), + (uint8_t)((vec[2] >> 24) & 0xFF), + (uint8_t)((vec[2] >> 16) & 0xFF), + (uint8_t)((vec[2] >> 8) & 0xFF), + (uint8_t)(vec[2] & 0xFF) }; + + memcpy(*buf + 1 + sizeof(uint64_t) * 2, vec8, sizeof(uint32_t) * 3); + + memcpy(vec, &bull->dir, sizeof(Vector3f)); // Pour d�naturer les floats. + + uint8_t dir8[3 * sizeof(uint32_t)] = { + (uint8_t)((vec[0] >> 24) & 0xFF), + (uint8_t)((vec[0] >> 16) & 0xFF), + (uint8_t)((vec[0] >> 8) & 0xFF), + (uint8_t)(vec[0] & 0xFF), + (uint8_t)((vec[1] >> 24) & 0xFF), + (uint8_t)((vec[1] >> 16) & 0xFF), + (uint8_t)((vec[1] >> 8) & 0xFF), + (uint8_t)(vec[1] & 0xFF), + (uint8_t)((vec[2] >> 24) & 0xFF), + (uint8_t)((vec[2] >> 16) & 0xFF), + (uint8_t)((vec[2] >> 8) & 0xFF), + (uint8_t)(vec[2] & 0xFF) }; + + memcpy(*buf + 1 + sizeof(uint64_t) * 2 + sizeof(uint32_t) * 3, dir8, sizeof(uint32_t) * 3); + + *buflen = 1 + sizeof(uint64_t) * 2 + sizeof(uint32_t) * 6; +} + void netprot::Serialize(ErrorLog* errlog, char* buf[], uint32_t* buflen) { *buf[0] = (char)netprot::PACKET_TYPE::ERRLOG; @@ -876,6 +947,74 @@ bool netprot::Deserialize(ChunkMod* chmod, char* buf, uint32_t* buflen) { return true; } +bool netprot::Deserialize(BulletAdd* bull, char* buf, uint32_t* buflen) { + if (*buflen <= sizeof(BulletAdd)) + return false; + + uint8_t tst[sizeof(uint64_t)] = { 0,0,0,0,0,0,0,0 }; + memcpy(tst, &buf[1], sizeof(uint64_t)); + bull->tstamp = + (uint64_t)tst[0] << 56 | + (uint64_t)tst[1] << 48 | + (uint64_t)tst[2] << 40 | + (uint64_t)tst[3] << 32 | + (uint64_t)tst[4] << 24 | + (uint64_t)tst[5] << 16 | + (uint64_t)tst[6] << 8 | + (uint64_t)tst[7]; + + memcpy(tst, &buf[1 + sizeof(uint64_t)], sizeof(uint64_t)); + bull->tid = + (uint64_t)tst[0] << 56 | + (uint64_t)tst[1] << 48 | + (uint64_t)tst[2] << 40 | + (uint64_t)tst[3] << 32 | + (uint64_t)tst[4] << 24 | + (uint64_t)tst[5] << 16 | + (uint64_t)tst[6] << 8 | + (uint64_t)tst[7]; + + uint8_t subvec[3 * sizeof(uint32_t)] = { 0,0,0,0,0,0,0,0,0,0,0,0 }; + memcpy(subvec, &buf[1 + sizeof(uint64_t) * 2], sizeof(uint8_t) * 12); + uint32_t vec[3] = { + (uint32_t)subvec[0] << 24 | + (uint32_t)subvec[1] << 16 | + (uint32_t)subvec[2] << 8 | + (uint32_t)subvec[3], + (uint32_t)subvec[4] << 24 | + (uint32_t)subvec[5] << 16 | + (uint32_t)subvec[6] << 8 | + (uint32_t)subvec[7], + (uint32_t)subvec[8] << 24 | + (uint32_t)subvec[9] << 16 | + (uint32_t)subvec[10] << 8 | + (uint32_t)subvec[11] }; + + memcpy(&bull->pos, vec, sizeof(uint32_t) * 3); + + memcpy(subvec, &buf[1 + sizeof(uint64_t) * 2 + sizeof(uint8_t) * 12], sizeof(uint8_t) * 12); + + uint32_t dir[3] = { + (uint32_t)subvec[0] << 24 | + (uint32_t)subvec[1] << 16 | + (uint32_t)subvec[2] << 8 | + (uint32_t)subvec[3], + (uint32_t)subvec[4] << 24 | + (uint32_t)subvec[5] << 16 | + (uint32_t)subvec[6] << 8 | + (uint32_t)subvec[7], + (uint32_t)subvec[8] << 24 | + (uint32_t)subvec[9] << 16 | + (uint32_t)subvec[10] << 8 | + (uint32_t)subvec[11] }; + + memcpy(&bull->dir, dir, sizeof(uint32_t) * 3); + + *buflen = 1 + sizeof(uint64_t) * 2 + sizeof(uint8_t) * 24; + + return true; +} + bool netprot::Deserialize(ErrorLog* errlog, char* buf, uint32_t *buflen) { if (*buflen <= sizeof(ErrorLog)) return false; @@ -969,9 +1108,7 @@ netprot::Packet netprot::getPack(char* buf, uint32_t *buflen) { return pck; } -netprot::Packet netprot::getPack(netprot::Buffer* buf) { - return netprot::getPack(buf->ptr, &buf->len); -} +netprot::Packet netprot::getPack(netprot::Buffer* buf) { return netprot::getPack(buf->ptr, &buf->len); } bool netprot::emptyPack(netprot::Packet pck) { switch (pck.type) { diff --git a/SQCSim-common/netprotocol.h b/SQCSim-common/netprotocol.h index 27e7f56..dad658c 100644 --- a/SQCSim-common/netprotocol.h +++ b/SQCSim-common/netprotocol.h @@ -12,8 +12,8 @@ namespace netprot { ERR, INPUT, OUTPUT, SYNC, TEAMINF, SELFINF, PLAYINF, LOGINF, CHUNKMOD, PLAYERMOD, PICKUPMOD, - GAMEINFO, ENDINFO , CHAT, ERRLOG, - LAST_PACK + GAMEINFO, ENDINFO , BULLET, + CHAT, ERRLOG, LAST_PACK }; /* Structures */ @@ -135,6 +135,12 @@ namespace netprot { BlockType b_type, old_b_type; }; + struct BulletAdd { + Timestamp tstamp; + Vector3f pos, dir; + uint64_t id; + }; + struct ErrorLog { // srv -> cli TCP event char mess[140]; bool is_fatal; @@ -153,6 +159,7 @@ namespace netprot { void Serialize(GameInfo* ginfo, char* buf[], uint32_t* buflen); // cli/srv void Serialize(Chat* chat, char* buf[], uint32_t* buflen); // cli/srv void Serialize(ChunkMod* chmod, char* buf[], uint32_t* buflen); // srv + void Serialize(BulletAdd* bull, char* buf[], uint32_t* buflen); // srv void Serialize(ErrorLog* errlog, char* buf[], uint32_t* buflen); // srv bool Deserialize(Input* in, char* buf, uint32_t* buflen); // srv @@ -164,6 +171,7 @@ namespace netprot { bool Deserialize(GameInfo* ginfo, char* buf, uint32_t* buflen); // cli bool Deserialize(Chat* chat, char* buf, uint32_t* buflen); // srv/cli bool Deserialize(ChunkMod* chmod, char* buf, uint32_t* buflen); // cli + bool Deserialize(BulletAdd* bull, char* buf, uint32_t* buflen); // cli bool Deserialize(ErrorLog* errlog, char* buf, uint32_t* buflen); // srv PACKET_TYPE getType(char* buf, uint32_t buflen); diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp index 39fed03..1e3ab99 100644 --- a/SQCSim-srv/connection.cpp +++ b/SQCSim-srv/connection.cpp @@ -95,7 +95,7 @@ void Connection::sendPacks(SOCKET sock, std::unordered_map= 1000) { outs -= 1000; Sync sync; - sync.hp = player.get()->GetHP(); + sync.hp = player->GetHP(); sync.timestamp = out.timestamp; sync.position = out.position; sync.sid = m_loginfo.sid; @@ -109,13 +109,14 @@ void Connection::sendPacks(SOCKET sock, std::unordered_mapSetDirection(in.direction); - player.get()->ApplyPhysics(player.get()->GetInput(in.keys.forward, - in.keys.backward, - in.keys.left, - in.keys.right, - in.keys.jump, false, el), world, el); + 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); - //if (in.keys.block) - // ChunkDiffs.push_back() + 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 (in.keys.shoot && m_shoot_acc <= 0.) - Bullets.push_back(Bullet(player.get()->GetPOV() + player.get()->GetDirection(), player.get()->GetDirection())); + Bullets.push_back(Bullet(player->GetPOV() + player->GetDirection(), player->GetDirection())); - - out.position = player.get()->GetPositionAbs(); + out.position = player->GetPositionAbs(); out.direction = in.direction; out.timestamp = in.timestamp; out.id = m_playinfo.id; m_output_manifest[out.timestamp] = out; m_output_vector.push_back(out); + tstamp = out.timestamp; ++m_last_in; } + + return tstamp; } void Connection::CleanInputManifest(Timestamp time) { @@ -161,3 +171,5 @@ void Connection::CleanInputManifest(Timestamp time) { // while (wat != m_input_manifest.begin()) // m_input_manifest.erase(wat--); } + +Timestamp Connection::GetTStamp() const { return m_tstamp; } diff --git a/SQCSim-srv/connection.h b/SQCSim-srv/connection.h index 7554f5a..091e7f4 100644 --- a/SQCSim-srv/connection.h +++ b/SQCSim-srv/connection.h @@ -20,7 +20,7 @@ public: PlayerInfo play); ~Connection(); - std::unique_ptr player = nullptr; + Player* player = nullptr; uint64_t GetHash(bool self = true) const; uint64_t GetTeamHash() const; @@ -36,7 +36,7 @@ public: void getPacks(SOCKET sock); void sendPacks(SOCKET sock, std::unordered_map conns, const uint32_t timer); - void Run(World* world); + Timestamp Run(World* world); void CleanInputManifest(Timestamp time); @@ -45,6 +45,8 @@ public: std::vector Bullets; std::vector ChunkDiffs; + Timestamp GetTStamp() const; + private: std::unordered_map m_input_manifest; std::vector m_input_vector; @@ -53,6 +55,7 @@ private: std::unordered_map m_chatlog; float m_shoot_acc = 0; + Timestamp m_tstamp = 0; SOCKET m_sock; sockaddr_in m_addr; diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index c4af364..aeba450 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -18,9 +18,9 @@ Server::~Server() { closesocket(m_sock_udp); if (m_sock_tcp) closesocket(m_sock_tcp); - for (const auto& [key, player] : m_players) + for (const auto& [key, player] : m_conns) closesocket(player->getSock()); - m_players.clear(); + m_conns.clear(); delete m_world; #ifdef _WIN32 WSACleanup(); @@ -165,7 +165,7 @@ int Server::Ready() { std::cout << m_game.seed << std::endl; Connection* conn = new Connection(sock, sockad, *log, play); - m_players[log->sid] = conn; + m_conns[log->sid] = conn; delete log; @@ -174,8 +174,8 @@ int Server::Ready() { } } } - for (auto& [keyin, playin] : m_players) // Not pretty, but it works. - for (auto& [keyout, playout] : m_players) { + for (auto& [keyin, playin] : m_conns) // Not pretty, but it works. + for (auto& [keyout, playout] : m_conns) { if (keyin == keyout) continue; sendPackTo(m_sock_udp, playout->getInfo(), &m_buf, playin->getAddr()); // et envoyer les infos des joueurs distants au nouveau joueur. @@ -192,17 +192,18 @@ void Server::Run() { Log("Debut de la partie...", false, false); - int players = m_players.size(); + int players = m_conns.size(); m_world = new World(); m_world->SetSeed(m_game.seed); m_world->GetChunks().Reset(nullptr); m_world->BuildWorld(); - for (auto& [key, conn] : m_players) { // Creation des instances de joueurs et premier sync. + for (auto& [key, conn] : m_conns) { // Creation des instances de joueurs et premier sync. int x = (rand() % (CHUNK_SIZE_X * WORLD_SIZE_X - 1)) - (CHUNK_SIZE_X * WORLD_SIZE_X / 2), y = (rand() % (CHUNK_SIZE_Y * WORLD_SIZE_Y - 1)) - (CHUNK_SIZE_Y * WORLD_SIZE_Y / 2); - conn->player = std::make_unique(Vector3f(x + .5f, CHUNK_SIZE_Y + 1.8f, y + .5f)); + conn->player = new Player(Vector3f(x + .5f, CHUNK_SIZE_Y + 1.8f, y + .5f)); + m_players[key] = conn->player; Sync sync; sync.position = conn->player->GetPositionAbs(); sync.hp = conn->player->GetHP(); @@ -212,11 +213,14 @@ void Server::Run() { sync.timer = m_game.countdown; sendPackTo(m_sock_udp, &sync, &m_buf, conn->getAddr()); } - + int timer = m_game.countdown, sync_acc = 0; std::chrono::high_resolution_clock::time_point start = std::chrono::high_resolution_clock::now(); Timestamp last = 0; std::vector chatlog; + std::vector chunkdiffs; + std::vector bullets, outbox_bullets; + std::vector netbull; while (!endgame) { using namespace std::chrono; @@ -230,13 +234,14 @@ void Server::Run() { --timer; } - for (auto& [key, conn] : m_players) { + for (auto& [key, conn] : m_conns) { /* In */ int deadplayers = 0; std::vector lsPck; Input in; Chat chat; Sync sync; + lsPck = recvPacks(m_sock_udp, &m_buf); for (auto& pck : lsPck) { uint32_t bsize = m_buf.len - (pck - m_buf.ptr); @@ -244,7 +249,7 @@ void Server::Run() { using enum netprot::PACKET_TYPE; case INPUT: if (Deserialize(&in, pck, &bsize)) - m_players[in.sid]->AddInput(in); + m_conns[in.sid]->AddInput(in); break; case SYNC: if (Deserialize(&sync, pck, &bsize)) {} @@ -264,25 +269,80 @@ void Server::Run() { if (conn->player->AmIDead()) { ++deadplayers; conn->m_nsync == false; - continue; } - conn->Run(m_world); + else { + Timestamp tstamp = conn->Run(m_world); + + for (auto& chmo : conn->ChunkDiffs) + chunkdiffs.emplace_back(chmo); + conn->ChunkDiffs.clear(); + + for (auto& bull : conn->Bullets) { + bullets.emplace_back(bull); + BulletAdd* nbul = new BulletAdd(); + nbul->pos = conn->player->GetPosition(); + nbul->dir = conn->player->GetDirection(); + nbul->id = key; + nbul->tstamp = tstamp; + + netbull.emplace_back(nbul); + } + conn->Bullets.clear(); + } /* Out */ - conn->sendPacks(m_sock_udp, m_players, timer); + conn->sendPacks(m_sock_udp, m_conns, timer); } - if (deadplayers == players - 1 || timer <= 0) endgame = true; } + for (auto& bull : netbull) { + for (auto& [key, conn] : m_conns) + sendPackTo(m_sock_udp, bull, &m_buf, conn->getAddr()); + } + + for (auto& bull : bullets) { + ChunkMod* cmod = nullptr; + if (bull->Update(m_world, (1. / 60.), 20, m_players, &cmod)) { + if (cmod) + chunkdiffs.emplace_back(cmod); + outbox_bullets.emplace_back(std::move(bull)); + } + } + for (auto& chat : chatlog) - for (auto& [key, conn] : m_players) + for (auto& [key, conn] : m_conns) sendPackTo(m_sock_udp, &chat, &m_buf, conn->getAddr()); + + for (auto& chmo : chunkdiffs) { + for (auto& [key, conn] : m_conns) + sendPackTo(m_sock_udp, chmo, &m_buf, conn->getAddr()); + delete chmo; + } + + for (auto& bull : outbox_bullets) + delete bull; + + for (auto& bull : netbull) + delete bull; + + outbox_bullets.clear(); + netbull.clear(); + chunkdiffs.clear(); chatlog.clear(); } + Chat end; + end.src_id = 0; + char endmess[] = "Game over, motherfuckers."; + + strcpy(end.mess, endmess); + + for (auto& [key, conn] : m_conns) + sendPackTo(m_sock_udp, &end, &m_buf, conn->getAddr()); + // TODO: Gérer les 2-3 secondes post-game avant le billboard pour pas avoir un whiplash à la fin de la game. } @@ -325,11 +385,11 @@ void Server::Log(std::string str, bool is_error = false, bool is_fatal = false) closesocket(m_sock_udp); if (m_sock_tcp) closesocket(m_sock_tcp); - for (const auto& [key, player] : m_players) { + for (const auto& [key, player] : m_conns) { closesocket(player->getSock()); } delete m_world; - m_players.clear(); + m_conns.clear(); #ifdef _WIN32 WSACleanup(); #endif diff --git a/SQCSim-srv/server.h b/SQCSim-srv/server.h index dd5a397..33e78df 100644 --- a/SQCSim-srv/server.h +++ b/SQCSim-srv/server.h @@ -36,7 +36,8 @@ private: Buffer m_buf; - std::unordered_map m_players; + std::unordered_map m_players; + std::unordered_map m_conns; std::unordered_map m_chatlog; std::vector m_ids; GameInfo m_game; diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 1a5bbd6..c188e97 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -1362,7 +1362,7 @@ void Engine::Render(float elapsedTime) { Sync sync; uint64_t id = m_conn.getId(); static std::vector lsPck; - static int sync_acc = 0; + static int sync_acc = 0, cmod_acc = 0; if (cmod) m_chunkmod_manifest.emplace_back(cmod); @@ -1371,6 +1371,7 @@ void Engine::Render(float elapsedTime) { last = tstamp; sync_acc += tstamp - last; + cmod_acc += tstamp - last; if (sync_acc >= 1000) { sync_acc -= 1000; @@ -1385,6 +1386,16 @@ void Engine::Render(float elapsedTime) { m_syncs[sync.timestamp] = sync; } + if (cmod_acc >= 1000) { + cmod_acc -= 1000; + if (!m_chunkmod_manifest.empty()) { + ChunkMod* cmod = m_chunkmod_manifest.front(); + m_chunkmod_manifest.pop_front(); + m_world.ChangeBlockAtPosition(cmod->old_b_type, cmod->pos); + delete cmod; + } + } + input.sid = id; input.direction = m_player.GetDirection(); input.timestamp = tstamp; @@ -1401,8 +1412,7 @@ void Engine::Render(float elapsedTime) { lsPck = recvPacks(m_conn.m_sock_udp, &m_buf); char* prevptr = nullptr; for (auto& pck : lsPck) { // We could make a few threads out of this. - Sync sync; - Output out; + Sync sync; Output out; ChunkMod cmod; BulletAdd bull; if (!prevptr) prevptr = m_buf.ptr; uint32_t bsize = m_buf.len - (pck - prevptr); @@ -1447,6 +1457,33 @@ void Engine::Render(float elapsedTime) { rt->Feed(out); } break; + case CHUNKMOD: + if (Deserialize(&cmod, pck, &bsize)) { + if (!std::erase_if(m_chunkmod_manifest, // Efface le chunkmod du manifeste s'il est dedans et reset le countdown, sinon fait la modification. + [cmod](ChunkMod* c) { + return cmod.pos == c->pos && + cmod.b_type == c->b_type && + cmod.old_b_type == c->old_b_type; + })) + m_world.ChangeBlockAtPosition(cmod.b_type, cmod.pos); + else cmod_acc = 0; + } + break; + case BULLET: + if (Deserialize(&bull, pck, &bsize)) { + Bullet* bult = new Bullet(bull.pos, bull.dir, bull.id); + 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] = bult; + 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] = bult; + } + m_audio.Create3DAudioObj(m_powpow, AUDIO_PATH "pow.wav", bull.pos, bull.dir * 10, false, .5f); + } + break; default: std::cout << "packet be no good."; break; diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index 6f23719..e9f4709 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -5,6 +5,7 @@ #include #include #include +#include #include "../SQCSim-common/array2d.h" #include "../SQCSim-common/blockinfo.h" #include "../SQCSim-common/boostinfo.h" @@ -87,8 +88,6 @@ private: Bullet* m_bullets[MAX_BULLETS]; //Menu - enum class GameState: uint8_t { MAIN_MENU, OPTIONS, QUIT, NEWG, PLAY, PAUSE, SINGLEMULTI }; - Vector3f m_otherplayerpos = Vector3f(999, 999, 999); World m_world = World(); @@ -172,7 +171,7 @@ private: bool m_selectedOptAudioMainBar = false; bool m_selectedOptAudioMusicBar = false; - bool m_selectedOptAudioSfxBar = false; + bool m_selectedOptAudioSfxBar = false; bool m_selectedGameplaySensitivityBar = false; bool m_damage = false; @@ -214,7 +213,7 @@ private: bool m_networkgame = false; Connector m_conn; - std::vector m_chunkmod_manifest; + std::deque m_chunkmod_manifest; std::chrono::high_resolution_clock::time_point m_startTime; std::unordered_map m_players; netprot::Buffer m_buf, m_bufout; From 464ba131c4541e25531ba7d4f3a36c70010aaefe Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Tue, 5 Dec 2023 13:44:54 -0500 Subject: [PATCH 06/82] Corrections merge de master hell. --- SQCSim-common/bullet.cpp | 11 +- SQCSim-common/bullet.h | 4 +- SQCSim-common/define.h | 4 + SQCSim-common/netprotocol.cpp | 32 ++--- SQCSim-common/player.cpp | 44 ++++--- SQCSim-common/player.h | 2 + SQCSim-common/world.cpp | 32 ++--- SQCSim-common/world.h | 3 +- SQCSim-srv/connection.cpp | 48 ++++--- SQCSim-srv/connection.h | 4 +- SQCSim-srv/server.cpp | 63 +++++----- SQCSim2021/booster.cpp | 4 +- SQCSim2021/cmake/CMakeLists.txt | 2 + SQCSim2021/connector.cpp | 8 +- SQCSim2021/define.h | 9 ++ SQCSim2021/engine.cpp | 217 ++++++++++++++++++++++---------- SQCSim2021/engine.h | 2 - SQCSim2021/openglcontext.cpp | 2 +- SQCSim2021/remoteplayer.cpp | 6 +- 19 files changed, 327 insertions(+), 170 deletions(-) diff --git a/SQCSim-common/bullet.cpp b/SQCSim-common/bullet.cpp index 9b26861..b5a38e4 100644 --- a/SQCSim-common/bullet.cpp +++ b/SQCSim-common/bullet.cpp @@ -7,7 +7,7 @@ Bullet::Bullet(Vector3f pos, Vector3f dir, uint64_t tid): m_startpos(pos), m_cur Bullet::~Bullet() {} -bool Bullet::Update(World* world, float elapsedtime, int perframe, std::unordered_map mapPlayer) { +bool Bullet::Update(World* world, float elapsedtime, int perframe, std::unordered_map mapPlayer, netprot::ChunkMod** chunkmod) { int max = 100 / perframe; float damage = 0.057f; for (int x = 0; x < max; ++x) { @@ -23,6 +23,15 @@ bool Bullet::Update(World* world, float elapsedtime, int perframe, std::unordere if (!world->ChunkAt(m_currentpos)) return true; else if (world->BlockAt(m_currentpos) != BTYPE_AIR) { + if (chunkmod) { + using namespace netprot; + ChunkMod* cmod = *chunkmod; + cmod = new ChunkMod(); + cmod->old_b_type = world->BlockAt(m_currentpos); + cmod->b_type = BTYPE_AIR; + cmod->pos = m_currentpos; + } + world->ChangeBlockAtPosition(BTYPE_AIR, m_currentpos); return true; } diff --git a/SQCSim-common/bullet.h b/SQCSim-common/bullet.h index 04bbfad..34b21bf 100644 --- a/SQCSim-common/bullet.h +++ b/SQCSim-common/bullet.h @@ -5,7 +5,7 @@ #include "define.h" #include "vector3.h" #include "player.h" - +#include "netprotocol.h" class World; class Player; @@ -16,7 +16,7 @@ public: Bullet(Vector3f pos, Vector3f dir, uint64_t tid); ~Bullet(); - bool Update(World* world, float elapsedtime, int perframe, std::unordered_map m_mapPlayer); + bool Update(World* world, float elapsedtime, int perframe, std::unordered_map m_mapPlayer, netprot::ChunkMod** chunkmod); void Transpose(int& x, int& z); Vector3f getPos() const; Vector3f getVel() const; diff --git a/SQCSim-common/define.h b/SQCSim-common/define.h index 4e7b0b0..685bf5d 100644 --- a/SQCSim-common/define.h +++ b/SQCSim-common/define.h @@ -41,8 +41,11 @@ typedef uint8_t BlockType; enum BLOCK_TYPE { BTYPE_AIR, BTYPE_DIRT, BTYPE_GRASS, BTYPE_METAL, BTYPE_ICE, BTYPE_GREENGRASS, BTYPE_LAST }; typedef uint8_t BoostType; enum BOOST_TYPE { BTYPE_SPEED, BTYPE_HEAL, BTYPE_DAMAGE, BTYPE_INVINCIBLE, BTYPE_BOOST_LAST }; + +//anim enum ANIM_TYPE { STILL = 0, SHOOTING = 8, JUMPING = 16, JUMPINGSHOOTING = 24, DEAD = 32, TYPE_LAST = 40}; enum ANIM_POS {FRONT, QUARTER_FRONT_LEFT, QUATER_FRONT_RIGHT, PROFIL_LEFT, PROFIL_RIGHT, QUARTER_BACK_LEFT, QUARTER_BACK_RIGHT, BACK , POS_LAST}; + typedef uint64_t Timestamp; #ifdef _WIN32 @@ -74,6 +77,7 @@ typedef uint64_t Timestamp; #include #include #include +#include #define flag_t unsigned int #define addrlen_t unsigned int diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index 25e033f..e087313 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -29,13 +29,13 @@ void netprot::Serialize(Input* in, char* buf[], uint32_t* buflen) { Keys keys = in->keys; uint8_t keys8 = // Reste un bit. - keys.forward & 0b10000000 | - keys.backward & 0b01000000 | - keys.left & 0b00100000 | - keys.right & 0b00010000 | - keys.jump & 0b00001000 | - keys.shoot & 0b00000100 | - keys.block & 0b00000010; + (keys.forward? 0b10000000: 0) | + (keys.backward? 0b01000000: 0) | + (keys.left? 0b00100000: 0) | + (keys.right? 0b00010000: 0) | + (keys.jump? 0b00001000: 0) | + (keys.shoot? 0b00000100: 0) | + (keys.block? 0b00000010: 0); memcpy(*buf + sizeof(uint64_t) * 2 + 1, &keys8, sizeof(uint8_t)); @@ -90,14 +90,14 @@ void netprot::Serialize(Output* out, char* buf[], uint32_t* buflen) { States states = out->states; uint8_t states8 = - states.jumping & 0b10000000 | - states.shooting & 0b01000000 | - states.hit & 0b00100000 | - states.powerup & 0b00010000 | - states.dead & 0b00001000 | - states.still & 0b00000100 | - states.jumpshot & 0b00000010 | - states.running & 0b00000001; + (states.jumping? 0b10000000: 0) | + (states.shooting? 0b01000000: 0) | + (states.hit? 0b00100000: 0) | + (states.powerup? 0b00010000: 0) | + (states.dead? 0b00001000: 0) | + (states.still? 0b00000100: 0) | + (states.jumpshot? 0b00000010: 0) | + (states.running? 0b00000001: 0); memcpy(*buf + sizeof(uint64_t) * 2 + 1, &states8, sizeof(uint8_t)); @@ -530,7 +530,7 @@ bool netprot::Deserialize(Input* in, char* buf, uint32_t *buflen) { (uint64_t)diff[5] << 16 | (uint64_t)diff[6] << 8 | (uint64_t)diff[7]; - + memcpy(diff, &buf[1 + sizeof(uint64_t)], sizeof(uint64_t)); in->sid = (uint64_t)diff[0] << 56 | diff --git a/SQCSim-common/player.cpp b/SQCSim-common/player.cpp index b88ba18..6e18197 100644 --- a/SQCSim-common/player.cpp +++ b/SQCSim-common/player.cpp @@ -14,43 +14,53 @@ void Player::TurnLeftRight(float value) { m_rotY += value; if (m_rotY > 360) m_rotY = 0; else if (m_rotY < -360) m_rotY = 0; + + float yrotrad = (m_rotY / 57.2957795056f); // 180/Pi = 57.295... + float xrotrad = (m_rotX / 57.2957795056f); + + m_direction = Vector3f(cos(xrotrad) * sin(yrotrad), + -sin(xrotrad), + cos(xrotrad) * -cos(yrotrad)); + + m_direction.Normalize(); } void Player::TurnTopBottom(float value) { m_rotX += value; if (m_rotX > 80) m_rotX = 80; else if (m_rotX < -80) m_rotX = -80; -} - -Vector3f Player::GetInput(bool front, bool back, bool left, bool right, bool jump, bool shoot, float elapsedTime) { - - Vector3f delta = Vector3f(0, 0, 0); float yrotrad = (m_rotY / 57.2957795056f); // 180/Pi = 57.295... float xrotrad = (m_rotX / 57.2957795056f); m_direction = Vector3f(cos(xrotrad) * sin(yrotrad), - -sin(xrotrad), - cos(xrotrad) * -cos(yrotrad)); + -sin(xrotrad), + cos(xrotrad) * -cos(yrotrad)); m_direction.Normalize(); +} + +Vector3f Player::GetInput(bool front, bool back, bool left, bool right, bool jump, bool shoot, float elapsedTime) { + Vector3f delta = Vector3f(0, 0, 0); + + Vector3f dir = m_direction; + + dir.y = 0; if (front) { - delta.x += float(sin(yrotrad)) * elapsedTime * 10.f; - delta.z += float(-cos(yrotrad)) * elapsedTime * 10.f; + delta += dir; } else if (back) { - delta.x += float(-sin(yrotrad)) * elapsedTime * 10.f; - delta.z += float(cos(yrotrad)) * elapsedTime * 10.f; + delta -= dir; } if (left) { - delta.x += float(-cos(yrotrad)) * elapsedTime * 10.f; - delta.z += float(-sin(yrotrad)) * elapsedTime * 10.f; + delta.x += dir.z; + delta.z += -dir.x; } else if (right) { - delta.x += float(cos(yrotrad)) * elapsedTime * 10.f; - delta.z += float(sin(yrotrad)) * elapsedTime * 10.f; + delta.x -= dir.z; + delta.z -= -dir.x; } delta.Normalize(); @@ -246,8 +256,12 @@ void Player::RemoveBooster(float elapsedtime) } void Player::SetDirection(Vector3f dir) { m_direction = dir; } +void Player::Move(Vector3f diff) { m_position -= diff; } + Vector3f Player::GetPosition() const { return Vector3f(m_position.x + CHUNK_SIZE_X * WORLD_SIZE_X / 2, m_position.y, m_position.z + CHUNK_SIZE_Z * WORLD_SIZE_Y / 2); } +Vector3f Player::GetPositionAbs() const { return m_position; } + Vector3f Player::GetVelocity() const { return m_velocity; } Vector3f Player::GetPOV() const { return Vector3f(GetPosition().x, m_POV, GetPosition().z); } diff --git a/SQCSim-common/player.h b/SQCSim-common/player.h index 4792d4a..b7f02db 100644 --- a/SQCSim-common/player.h +++ b/SQCSim-common/player.h @@ -25,7 +25,9 @@ public: void ApplyTransformation(Transformation& transformation, bool rel = true, bool rot = true) const; void SetDirection(Vector3f dir); + void Move(Vector3f diff); Vector3f GetPosition() const; + Vector3f GetPositionAbs() const; Vector3f GetDirection() const; Vector3f GetVelocity() const; Vector3f GetPOV() const; diff --git a/SQCSim-common/world.cpp b/SQCSim-common/world.cpp index 70d6eb6..2791ca1 100644 --- a/SQCSim-common/world.cpp +++ b/SQCSim-common/world.cpp @@ -169,31 +169,26 @@ void World::Update(Bullet* bullets[MAX_BULLETS], const Vector3f& player_pos, Blo UpdateWorld(player_pos, blockinfo); //TransposeWorld(player_pos, bullets); } -// -//void World::UpdateChunk(int& updates, unsigned int chx, unsigned int chy, BlockInfo* blockinfo[BTYPE_LAST]) { -// if (updates == 0 && ChunkAt(chx, 1, chy) && -// ChunkAt(chx, 1, chy)->IsDirty()) { -// ChunkAt(chx, 1, chy)->Update(blockinfo, this); -// updates = FRAMES_UPDATE_CHUNKS; -// } -// -//} -void World::ChangeBlockAtCursor(BlockType blockType, const Vector3f& player_pos, const Vector3f& player_dir, bool& block) { +netprot::ChunkMod* World::ChangeBlockAtCursor(BlockType blockType, const Vector3f& player_pos, const Vector3f& player_dir, bool& block, bool net) { Vector3f currentPos = player_pos; Vector3f currentBlock = currentPos; Vector3f ray = player_dir; + BlockType oldbtype; + netprot::ChunkMod* cmod = nullptr; bool found = false; - if (block) return; + if (block) return cmod; while ((currentPos - currentBlock).Length() <= MAX_SELECTION_DISTANCE && !found) { currentBlock += ray / 10.f; BlockType bt = BlockAt(currentBlock); - if (bt != BTYPE_AIR) + if (bt != BTYPE_AIR) { found = true; + oldbtype = bt; + } } if (found) @@ -219,21 +214,30 @@ void World::ChangeBlockAtCursor(BlockType blockType, const Vector3f& player_pos, (By == PyA || By == PyB || By == PyC) && - Bz == Pz)) + Bz == Pz)) { found = true; + oldbtype = bt; + } } } } if (found && (int)currentBlock.y < CHUNK_SIZE_Y) { + if (net) { + cmod = new netprot::ChunkMod(); + cmod->old_b_type = oldbtype; + cmod->b_type = blockType; + cmod->pos = currentBlock; + } int bx = (int)currentBlock.x % CHUNK_SIZE_X; int by = (int)currentBlock.y % CHUNK_SIZE_Y; int bz = (int)currentBlock.z % CHUNK_SIZE_Z; - ChunkAt(currentBlock)->SetBlock(bx, by, bz, blockType, this); ChunkAt(currentBlock)->MakeModified(); block = true; } + + return cmod; } void World::ChangeBlockAtPosition(BlockType blockType, Vector3f pos) { diff --git a/SQCSim-common/world.h b/SQCSim-common/world.h index e9b4840..06c513b 100644 --- a/SQCSim-common/world.h +++ b/SQCSim-common/world.h @@ -11,6 +11,7 @@ #include "array2d.h" #include "bullet.h" #include "chunk.h" +#include "netprotocol.h" class Chunk; class Bullet; @@ -37,7 +38,7 @@ public: void GetScope(unsigned int& x, unsigned int& y); - void ChangeBlockAtCursor(BlockType blockType, const Vector3f& player_pos, const Vector3f& player_dir, bool& block); + netprot::ChunkMod* ChangeBlockAtCursor(BlockType blockType, const Vector3f& player_pos, const Vector3f& player_dir, bool& block, bool net); void ChangeBlockAtPosition(BlockType blockType, Vector3f pos); void CleanUpWorld(int& deleteframes, bool clear); int GettbDeleted() const; diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp index 5dacb0f..1e3ab99 100644 --- a/SQCSim-srv/connection.cpp +++ b/SQCSim-srv/connection.cpp @@ -21,7 +21,7 @@ uint64_t Connection::GetTeamHash() const { return m_loginfo.tid; } std::string Connection::GetName() const { return m_loginfo.name; } -void Connection::AddInput(Input in) { m_input_manifest.insert({ in.timestamp, in }); } +void Connection::AddInput(Input in) { m_input_manifest.insert({ in.timestamp, in }); m_input_vector.push_back(in); } Output* Connection::getOutput(Timestamp time) { auto out = m_output_manifest.find(time); @@ -50,31 +50,39 @@ sockaddr_in* Connection::getAddr() const { return (sockaddr_in*)&m_addr; } void Connection::getPacks(SOCKET sock) { std::vector lsPck; Input in; - while (true) { + 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)) + 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(); - } } -void Connection::sendPacks(SOCKET sock, std::unordered_map conns) { - while (m_last_out < m_output_manifest.size()) { - Output out = m_output_manifest.at(m_last_out++); - +void Connection::sendPacks(SOCKET sock, std::unordered_map conns, const uint32_t timer) { + static int outs = 0; + static Timestamp last = 0; + while (!m_output_vector.empty()) { + Output out = m_output_vector.front(); for (auto& [key, conn] : conns) { - if (m_playinfo.id == conn->GetHash(true)) + if (m_playinfo.id == conn->GetHash(false)) continue; + //std::cout << m_playinfo.id << ": " << m_playinfo.name << ": " << conn->GetName() << std::endl; + //std::cout << out.id << ": " << out.position << std::endl; + sendPackTo(sock, &out, &m_bufout, conn->getAddr()); } ++outs; @@ -110,9 +118,17 @@ Timestamp Connection::Run(World* world) { if (m_input_manifest.size() < 2) return tstamp; - while (m_last_in < m_input_manifest.size()) { - in = m_input_manifest.at(m_last_in + 1); - last = m_input_manifest.at(m_last_in); + while (m_last_in < m_input_vector.size() - 1) { + in = m_input_vector.at(m_last_in + 1); + last = m_input_vector.at(m_last_in); + + el = (double)(in.timestamp - last.timestamp) / 1000.; + + if (m_shoot_acc > 0.) { + m_shoot_acc -= el; + if (m_shoot_acc < 0.) + m_shoot_acc = 0; + } player->SetDirection(in.direction); player->ApplyPhysics(player->GetInput(in.keys.forward, @@ -150,10 +166,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/SQCSim-srv/connection.h b/SQCSim-srv/connection.h index c50c891..091e7f4 100644 --- a/SQCSim-srv/connection.h +++ b/SQCSim-srv/connection.h @@ -34,7 +34,7 @@ public: sockaddr_in* getAddr() const; void getPacks(SOCKET sock); - void sendPacks(SOCKET sock, std::unordered_map conns); + void sendPacks(SOCKET sock, std::unordered_map conns, const uint32_t timer); Timestamp Run(World* world); @@ -49,7 +49,9 @@ public: private: std::unordered_map m_input_manifest; + std::vector m_input_vector; std::unordered_map m_output_manifest; + std::deque m_output_vector; std::unordered_map m_chatlog; float m_shoot_acc = 0; diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index a43b7c9..aeba450 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -69,15 +69,16 @@ int Server::Init() { } int Server::Ready() { - int nbrjoueurs = 0, + int nbrjoueurs = 0, nbrconn = 0; bool readystart = false; do { Log("Entrez la duree de la partie: ", false, false); std::cin.getline(m_buf.ptr, BUFFER_LENGTH); - try { + try { m_game.countdown = std::stoi(m_buf.ptr); - } catch(const std::exception& e) { + } + catch (const std::exception& e) { Log(e.what(), true, false); m_game.countdown = 0; } @@ -85,9 +86,10 @@ int Server::Ready() { do { Log("Entrez le seed de la partie: ", false, false); std::cin.getline(m_buf.ptr, BUFFER_LENGTH); - try { - m_game.seed = std::stoi(m_buf.ptr); - } catch(const std::exception& e) { + try { + m_game.seed = 9370707;//std::stoi(m_buf.ptr); + } + catch (const std::exception& e) { Log(e.what(), true, false); m_game.seed = 0; } @@ -95,9 +97,10 @@ int Server::Ready() { do { Log("Entrez le nombre de joueurs: ", false, false); std::cin.getline(m_buf.ptr, BUFFER_LENGTH); - try { + try { nbrjoueurs = std::stoi(m_buf.ptr); - } catch(const std::exception& e) { + } + catch (const std::exception& e) { Log(e.what(), true, false); nbrjoueurs = 0; } @@ -113,9 +116,9 @@ int Server::Ready() { } buildIdList(ID_LIST_SIZE); - + Log("A l'ecoute sur le port: " + std::to_string(SRV_PORT), false, false); - + while (!readystart) { sockaddr_in sockad; addrlen_t addrlen = sizeof(sockad); @@ -135,7 +138,7 @@ int Server::Ready() { if (pck.type != PACKET_TYPE::LOGINF) { Log("Paquet invalide.", true, false); if (pck.type != PACKET_TYPE::ERR) - netprot::emptyPack(pck); + netprot::emptyPack(pck); continue; // Passer au prochain appel si c'est pas un LoginInfo ou un LoginInfo invalide qui rentre. } LoginInfo* log = (LoginInfo*)pck.ptr; @@ -145,17 +148,21 @@ int Server::Ready() { Log(str.append(" Nom: ").append(log->name), false, false); str.clear(); - - Log(str.append(log->name).append(" SID: [").append(std::to_string(log->sid).append("]")), false, false); - sendPack(sock, log, &m_buf); - + + sendPackTo(m_sock_udp, log, &m_buf, &sockad); + play.id = getUniqueId(); + play.tid = log->tid; strcpy(play.name, log->name); - + + Log(str.append(play.name).append(" SID: [").append(std::to_string(log->sid)).append("]") + .append(" ID: [").append(std::to_string(play.id)).append("]") + .append(" TID: [").append(std::to_string(play.tid)).append("]"), false, false); play.tid = log->tid; - sendPack(sock, &m_game, &m_buf); + sendPackTo(m_sock_udp, &m_game, &m_buf, &sockad); + std::cout << m_game.seed << std::endl; Connection* conn = new Connection(sock, sockad, *log, play); m_conns[log->sid] = conn; @@ -182,7 +189,7 @@ void Server::Run() { Input in; sockaddr_in sockad; addrlen_t socklen = sizeof(sockad); - + Log("Debut de la partie...", false, false); int players = m_conns.size(); @@ -198,13 +205,13 @@ void Server::Run() { conn->player = new Player(Vector3f(x + .5f, CHUNK_SIZE_Y + 1.8f, y + .5f)); m_players[key] = conn->player; Sync sync; - sync.position = conn->player->GetPosition(); + sync.position = conn->player->GetPositionAbs(); sync.hp = conn->player->GetHP(); sync.sid = key; sync.ammo = 0; sync.timestamp = 0; sync.timer = m_game.countdown; - sendPack(conn->getSock(), &sync, &m_buf); + sendPackTo(m_sock_udp, &sync, &m_buf, conn->getAddr()); } int timer = m_game.countdown, sync_acc = 0; @@ -362,13 +369,13 @@ inline std::string Server::LogTimestamp() { void Server::Log(std::string str, bool is_error = false, bool is_fatal = false) { switch (m_log) { using enum LOG_DEST; // C++20! - case LOGFILE: - m_logfile << LogTimestamp() << (is_fatal ? "FATAL " : "") << (is_error ? "ERROR " : "") << str << std::endl; - break; - case CONSOLE: [[fallthrough]]; // Pour dire que c'est voulu que ça traverse vers le case en dessous (C++17!) - default: - std::cout << LogTimestamp() << (is_fatal ? "FATAL " : "") << (is_error ? "ERROR " : "") << str << std::endl; - break; + case LOGFILE: + m_logfile << LogTimestamp() << (is_fatal ? "FATAL " : "") << (is_error ? "ERROR " : "") << str << std::endl; + break; + case CONSOLE: [[fallthrough]]; // Pour dire que c'est voulu que ça traverse vers le case en dessous (C++17!) + default: + std::cout << LogTimestamp() << (is_fatal ? "FATAL " : "") << (is_error ? "ERROR " : "") << str << std::endl; + break; } if (is_fatal) { @@ -396,7 +403,7 @@ void Server::buildIdList(size_t size) { srand(time(NULL)); do lst.insert(((uint64_t)rand() << 32 | rand())); while (lst.size() < size); - + m_ids = std::vector(lst.begin(), lst.end()); } diff --git a/SQCSim2021/booster.cpp b/SQCSim2021/booster.cpp index 593e16e..4e7417f 100644 --- a/SQCSim2021/booster.cpp +++ b/SQCSim2021/booster.cpp @@ -1,4 +1,4 @@ -#include "booster.h"; +#include "booster.h" void Booster::RenderBillboard(const Vector3f pos, TextureAtlas& textureAtlas, Shader& shader, Transformation tran) { @@ -43,4 +43,4 @@ void Booster::RenderBillboard(const Vector3f pos, TextureAtlas& textureAtlas, S shader.Disable(); //tran.ApplyTranslation(-m_position); //glEnable(GL_DEPTH_TEST); -} \ No newline at end of file +} diff --git a/SQCSim2021/cmake/CMakeLists.txt b/SQCSim2021/cmake/CMakeLists.txt index 4da3eb4..d9ccd33 100644 --- a/SQCSim2021/cmake/CMakeLists.txt +++ b/SQCSim2021/cmake/CMakeLists.txt @@ -28,6 +28,7 @@ include_directories( add_library(SQCSim-common + "${SQCSIM_COMMON_DIR}boostinfo.cpp" "${SQCSIM_COMMON_DIR}blockinfo.cpp" "${SQCSIM_COMMON_DIR}bullet.cpp" "${SQCSIM_COMMON_DIR}chunk.cpp" @@ -40,6 +41,7 @@ add_library(SQCSim-common add_executable(SQCSim-client "../audio.cpp" + "../booster.cpp" "../connector.cpp" "../engine.cpp" "../mesh.cpp" diff --git a/SQCSim2021/connector.cpp b/SQCSim2021/connector.cpp index 867e36e..a35c790 100644 --- a/SQCSim2021/connector.cpp +++ b/SQCSim2021/connector.cpp @@ -72,13 +72,13 @@ int Connector::Connect(const char* srv_addr, std::string name) { //using namespace std::chrono_literals; //std::this_thread::sleep_for(100ms); - memset(bf.ptr, '\0', BUFFER_LENGTH); + //memset(bf.ptr, '\0', BUFFER_LENGTH); bool ready = false; int errors = 0; std::vector lsPck; while (!ready) { - lsPck = netprot::recvPacks(m_sock_tcp, &bf); + lsPck = netprot::recvPacks(m_sock_udp, &bf); for (auto& pck : lsPck) { uint32_t bsize = bf.len - (pck - bf.ptr); @@ -97,7 +97,9 @@ int Connector::Connect(const char* srv_addr, std::string name) { pl = new netprot::PlayerInfo(); if (!netprot::Deserialize(pl, pck, &bsize)) ++errors; - else m_players[pl->id] = pl; + else { + m_players[pl->id] = pl; + } break; case TEAMINF: // TODO: Faire dequoi avec TeamInfo si on fini par avoir des teams. diff --git a/SQCSim2021/define.h b/SQCSim2021/define.h index e8b9e47..cc5a3d1 100644 --- a/SQCSim2021/define.h +++ b/SQCSim2021/define.h @@ -28,8 +28,17 @@ #define BASE_WIDTH 640 #define BASE_HEIGHT 480 + #define ANIME_PATH_JUMP "./media/textures/AssetOtherPlayer/FinalPNGJumping/" #define ANIME_PATH_STILL "./media/textures/AssetOtherPlayer/FinalPNGStanding/" + +//1 = jump shoot sans anim, 2 = jump shoot avec anim +#define ANIM_PATH_JSHOOT1 "./media/textures/AssetOtherPlayer/FinalPNGJumpingShooting/" +#define ANIM_PATH_JSHOOT2 "./media/textures/AssetOtherPlayer/FinalPNGJumpingShooting/ShootingJump/" +//1 = shoot sans anim, 2 = shoot avec anim +#define ANIM_PATH_SSHOOT1 "./media/textures/AssetOtherPlayer/FinalPNGShooting/" +#define ANIM_PATH_SSHOOT2 "./media/textures/AssetOtherPlayer/FinalPNGShooting/Shooting/" + #define TEXTURE_PATH "./media/textures/" #define SHADER_PATH "./media/shaders/" #define AUDIO_PATH "./media/audio/" diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 13c0d4e..c188e97 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -29,32 +29,9 @@ Engine::~Engine() { } void Engine::Init() { - GLenum glewErr = glewInit(); - if (glewErr != GLEW_OK) { - std::cerr << " ERREUR GLEW : " << glewGetErrorString(glewErr) << std::endl; - abort(); - } uint64_t seed = SEED; - glDisable(GL_FRAMEBUFFER_SRGB); - glEnable(GL_DEPTH_TEST); - glEnable(GL_STENCIL_TEST); - glEnable(GL_POINT_SMOOTH); - glEnable(GL_BLEND); - glEnable(GL_TEXTURE_2D); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - gluPerspective(45.0f, (float)Width() / (float)Height(), 0.1f, VIEW_DISTANCE); - glShadeModel(GL_SMOOTH); - - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); - glDisable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glBlendEquation(GL_FUNC_SUBTRACT); - if (m_istarted) return; else m_istarted = true; @@ -70,6 +47,9 @@ void Engine::Init() { m_whoosh[x] = nullptr; } + // Init Chunks + m_world.GetChunks().Reset(nullptr); + char* ch = new char[2]; std::cout << "Jouer en ligne? [o/N] "; @@ -102,13 +82,16 @@ void Engine::Init() { if (!m_conn.Connect(srvname.c_str(), playname)) { // setup jeu en reseau. std::cout << "ID recu du serveur: " << std::to_string(m_conn.getId()) << "!" << std::endl; - std::cout << "Seed recu du serveur: " << std::to_string(m_conn.getSeed()) << "!" << std::endl; + //std::cout << "Seed recu du serveur: " << std::to_string(m_conn.getSeed()) << "!" << std::endl; m_player = Player(m_conn.getOrigin().position); - for (auto& [key, player] : m_conn.m_players) + for (auto& [key, player] : m_conn.m_players) { m_players[key] = new RemotePlayer(player); + RemotePlayer* rt = (RemotePlayer*)m_players[key]; + rt->SetPosition(Vector3f(555, 555, 555)); + } - seed = m_conn.getSeed(); + seed = 9370707;//m_conn.getSeed(); m_networkgame = true; } else std::cout << "Erreur de connexion." << std::endl; @@ -119,17 +102,41 @@ void Engine::Init() { m_world.SetSeed(seed); - // Init Chunks - m_world.GetChunks().Reset(nullptr); - m_startTime = std::chrono::high_resolution_clock::now(); - m_remotePlayer.SetPosition(Vector3f(.5, CHUNK_SIZE_Y + 10., .5)); + // Gestion de souris. + CenterMouse(); + HideCursor(); } void Engine::DeInit() {} void Engine::LoadResource() { + GLenum glewErr = glewInit(); + if (glewErr != GLEW_OK) { + std::cerr << " ERREUR GLEW : " << glewGetErrorString(glewErr) << std::endl; + abort(); + } + + glDisable(GL_FRAMEBUFFER_SRGB); + glEnable(GL_DEPTH_TEST); + glEnable(GL_STENCIL_TEST); + glEnable(GL_POINT_SMOOTH); + glEnable(GL_BLEND); + glEnable(GL_CULL_FACE); + glEnable(GL_TEXTURE_2D); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + gluPerspective(45.0f, (float)Width() / (float)Height(), 0.1f, VIEW_DISTANCE); + glShadeModel(GL_SMOOTH); + + glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); + glDisable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBlendEquation(GL_FUNC_SUBTRACT); + LoadTexture(m_skybox.GetTexture(), TEXTURE_PATH "skybox.png", true); LoadTexture(m_textureCrosshair, TEXTURE_PATH "cross.bmp", true); LoadTexture(m_textureFont, TEXTURE_PATH "font.bmp", true); @@ -180,29 +187,71 @@ void Engine::LoadResource() { //AJOUTER LES TEXTURES DANS L'ORDRE DE L'ÉNUM + //STILL//STANDING + TextureAtlas::TextureIndex StillFront = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueFrontRight.png"); + //TextureAtlas::TextureIndex StillQuarterFrontLeft = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueLeft.png"); + //TextureAtlas::TextureIndex StillQuarterFrontRight = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueRight.png"); + //TextureAtlas::TextureIndex StillProfiltLeft = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueProfilLeft.png"); + //TextureAtlas::TextureIndex StillProfiltRight = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueProfilRight.png"); + //TextureAtlas::TextureIndex StillQuarterBackLeft = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueLeftBack.png"); + //TextureAtlas::TextureIndex StillQuarterBackRight = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueRightBack.png"); + //TextureAtlas::TextureIndex StillBack = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueBackRight.png"); + + //SHOOTINGSTILL SANS TIRER + //TextureAtlas::TextureIndex StillFrontShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueFrontRightShootingRight.png"); + //TextureAtlas::TextureIndex StillQuarterFrontLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueFrontRightShootingRight.png"); + //TextureAtlas::TextureIndex StillQuarterFrontRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueRightShootingRight.png"); + //TextureAtlas::TextureIndex StillProfiltLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueProfilShootingLeft.png"); + //TextureAtlas::TextureIndex StillProfiltRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueProfilShootingRight.png"); + //TextureAtlas::TextureIndex StillQuarterBackLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueBackLeftShootingLeft.png"); + //TextureAtlas::TextureIndex StillQuarterBackRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueBackRightShootingRight.png"); + //TextureAtlas::TextureIndex StillBackShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueShootingBackRight.png"); + + //SHOOTINGSTILL TIRER + //TextureAtlas::TextureIndex StillFrontShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueFrontRightShootingRightShoot1.png"); + //TextureAtlas::TextureIndex StillQuarterFrontLeftFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueLeftShootingLeftShoot1.png"); + //TextureAtlas::TextureIndex StillQuarterFrontRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueRightShootingRightShoot1.png"); + //TextureAtlas::TextureIndex StillProfiltLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueProfilShootingLeftShoot1.png"); + //TextureAtlas::TextureIndex StillProfiltRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueProfilShootingRightShoot1.png"); + //TextureAtlas::TextureIndex StillQuarterBackLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueBackLeftShootingLeftShoot1.png"); + //TextureAtlas::TextureIndex StillQuarterBackRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueBackRightShootingRightShoot1.png"); + //TextureAtlas::TextureIndex StillBackShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueShootingBackRightShoot1.png"); + + //JUMP - //TextureAtlas::TextureIndex JumpBack = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueBackJumpRight.png"); //TextureAtlas::TextureIndex JumpFront = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueFrontJumpRight.png"); - //TextureAtlas::TextureIndex JumpQuarterBackLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeftBackJumpLeft.png"); - //TextureAtlas::TextureIndex JumpQuarterBackRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRightBackJumpRight.png"); - //TextureAtlas::TextureIndex JumpProfiltLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilJumpLeft.png"); - //TextureAtlas::TextureIndex JumpProfiltRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilJumpRight.png"); //TextureAtlas::TextureIndex JumpQuarterFrontLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeftFrontJumpLeft.png"); //TextureAtlas::TextureIndex JumpQuarterFrontRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRightFrontJumpRight.png"); + //TextureAtlas::TextureIndex JumpProfiltLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilJumpLeft.png"); + //TextureAtlas::TextureIndex JumpProfiltRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilJumpRight.png"); + //TextureAtlas::TextureIndex JumpQuarterBackLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeftBackJumpLeft.png"); + //TextureAtlas::TextureIndex JumpQuarterBackRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRightBackJumpRight.png"); + //TextureAtlas::TextureIndex JumpBack = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueBackJumpRight.png"); - //STILL - //TextureAtlas::TextureIndex StillBack = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueBackRight.png"); - TextureAtlas::TextureIndex StillFront = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueFrontRight.png"); - //TextureAtlas::TextureIndex StillQuarterBackLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeftBack.png"); - //TextureAtlas::TextureIndex StillQuarterBackRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRightBack.png"); - //TextureAtlas::TextureIndex StillProfiltLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilLeft.png"); - //TextureAtlas::TextureIndex StillProfiltRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilRight.png"); - //TextureAtlas::TextureIndex StillQuarterFrontLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeft.png"); - //TextureAtlas::TextureIndex StillQuarterFrontRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRight.png"); - //SHOOTINGSTILL - //SHOOTINGJUMP + //SHOOTINGJUMP SANS TIRER + //TextureAtlas::TextureIndex JumpFrontShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueFrontJumpRightShootingRight.png"); + //TextureAtlas::TextureIndex JumpQuarterFrontLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueFrontLeftJumpLeftShootingLeft.png"); + //TextureAtlas::TextureIndex JumpQuarterFrontRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueFrontRightJumpRightShootingRight.png"); + //TextureAtlas::TextureIndex JumpProfiltLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueProfilLeftJumpLeftShootingLeft.png"); + //TextureAtlas::TextureIndex JumpProfiltRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BluerProfilRightJumprightShootingRight.png"); + //TextureAtlas::TextureIndex JumpQuarterBackLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueBackLeftJumpLeftShootingLeft.png"); + //TextureAtlas::TextureIndex JumpQuarterBackRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueBackRightJumpRightShootingRight.png"); + //TextureAtlas::TextureIndex JumpBackShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueBackJumpRightShootingRight.png"); + + //SHOOTINGJUMP TIRER + //TextureAtlas::TextureIndex JumpFrontShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueFrontJumpRightShootingRightShoot1.png"); + //TextureAtlas::TextureIndex JumpQuarterFrontLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueFrontLeftJumpLeftShootingLeftShoot1.png"); + //TextureAtlas::TextureIndex JumpQuarterFrontRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueFrontRightJumpRightShootingRightShoot1.png"); + //TextureAtlas::TextureIndex JumpProfiltLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueProfilLeftJumpLeftShootingLeftShoot1.png"); + //TextureAtlas::TextureIndex JumpProfiltRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BluerProfilRightJumprightShootingRightShoot1.png"); + //TextureAtlas::TextureIndex JumpQuarterBackLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackLeftJumpLeftShootingLeftShoot1.png"); + //TextureAtlas::TextureIndex JumpQuarterBackRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackRightJumpRightShootingRightShoot1.png"); + //TextureAtlas::TextureIndex JumpBackShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackJumpRightShootingRightShoot1.png"); + + + if (!m_animeAtlas.Generate(TEXTURE_SIZE, false)) { std::cout << " Unable to generate texture atlas ..." << std::endl; abort(); @@ -360,6 +409,7 @@ void Engine::DisplayHud(int timer) { glBindTexture(GL_TEXTURE_2D, 0); glLoadIdentity(); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glClear(GL_STENCIL_BUFFER_BIT); float itemBackgroundWidthProportion = 0.25f; float itemBackgroundHeightProportion = 0.175f; @@ -655,7 +705,7 @@ void Engine::DisplayInfo(float elapsedTime, BlockType bloc) { fPosY = fPosYJump; fPosY -= charSize; - ss << " Velocity : " << m_remotePlayer.GetVelocity(); + ss << " Velocity : " << m_player.GetVelocity(); PrintText(fPosX, fPosY, ss.str()); ss.str(""); fPosY -= charSize; @@ -665,7 +715,7 @@ void Engine::DisplayInfo(float elapsedTime, BlockType bloc) { ss.str(""); fPosY -= charSize; - ss << " Remote Position : " << m_remotePlayer.GetPosition();//m_player.GetPosition(); + ss << " Remote Position : " << m_otherplayerpos; PrintText(fPosX, fPosY, ss.str()); ss.str(""); fPosY -= charSize; @@ -1225,10 +1275,11 @@ void Engine::Render(float elapsedTime) { 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) - m_world.ChangeBlockAtCursor(bloc, m_player.GetPosition(), m_player.GetDirection(), m_block); + 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]) { @@ -1250,12 +1301,12 @@ void Engine::Render(float elapsedTime) { } } else if (m_mouseR) - m_world.ChangeBlockAtCursor(BTYPE_AIR, m_player.GetPosition(), m_player.GetDirection(), m_block); + 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]) { for (int b = 0; b < BULLET_UPDATES_PER_FRAME; ++b) { - if (m_bullets[x]->Update(&m_world, elapsedTime, BULLET_UPDATES_PER_FRAME, m_players)) { + if (m_bullets[x]->Update(&m_world, elapsedTime, BULLET_UPDATES_PER_FRAME, m_players, m_networkgame ? &m_chunkmod : nullptr)) { m_bullets[x]->~Bullet(); if (m_whoosh[x]) m_whoosh[x]->drop(); @@ -1276,18 +1327,10 @@ void Engine::Render(float elapsedTime) { gameTime += elapsedTime * 10; - Vector3f dance = Vector3f(sin(gameTime), 0, cos(-gameTime)); - dance.Normalize(); - m_remotePlayer.ApplyPhysics(dance, &m_world, elapsedTime); m_world.Update(m_bullets, m_player.GetPosition(), m_blockinfo); m_renderer.UpdateMesh(&m_world, m_player.GetPosition(), m_blockinfo); - m_remotePlayer.Render(m_animeAtlas, m_shader01, all, elapsedTime); - m_booster.RenderBillboard({ 195,16,195 }, m_textureAtlas, m_shader01, all); - if (m_isSkybox) m_renderer.RenderWorld(&m_world, m_renderCount, m_player.GetPosition(), m_player.GetDirection(), all, m_shader01, m_textureAtlas); - - //glClear(GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - //m_remotePlayer.Render(m_textureAtlas, m_shader01, all, elapsedTime); + //m_booster.RenderBillboard({ 195,16,195 }, m_textureAtlas, m_shader01, all); m_renderer.RenderWorld(&m_world, m_renderCount, m_player.GetPosition(), m_player.GetDirection(), all, m_shader01, m_textureAtlas); @@ -1310,9 +1353,11 @@ void Engine::Render(float elapsedTime) { } if (m_networkgame) { // Pour se gerer le paquet. + static bool has_synced = false; using namespace std::chrono; using namespace netprot; Timestamp tstamp = duration_cast(high_resolution_clock::now() - m_startTime).count(); + static Timestamp last = 0; Input input; Sync sync; uint64_t id = m_conn.getId(); @@ -1332,9 +1377,13 @@ void Engine::Render(float elapsedTime) { sync_acc -= 1000; sync.sid = id; sync.timestamp = tstamp; - sync.position = m_player.GetPosition(); + sync.position = m_player.GetPositionAbs(); sync.hp = m_player.GetHP(); - // TODO: Garrocher ca quelque-part. + if (!has_synced) { + has_synced = true; + sendPackTo(m_conn.m_sock_udp, &sync, &m_bufout, &m_conn.m_srvsockaddr); + } + m_syncs[sync.timestamp] = sync; } if (cmod_acc >= 1000) { @@ -1372,15 +1421,40 @@ void Engine::Render(float elapsedTime) { using enum PACKET_TYPE; case SYNC: if (Deserialize(&sync, pck, &bsize)) { - if (sync.sid != m_conn.getId()) + if (sync.sid != m_conn.getId()) { + std::cout << "syncsid be no good."; break; - // TODO: Vérifier si les positions concordent au sync local. + } + if (m_syncs.count(sync.timestamp)) { + Sync comp = m_syncs[sync.timestamp]; + m_player.InflictDamage(sync.hp - comp.hp); + + Vector3f diff = sync.position - comp.position; + + if (diff.y < 1.) + diff.y = 0; + + if (diff.Length() > 1.5) { + diff.Normalize(); + m_player.Move(-diff); + } + + // TODO: Syncer sync.timer avec le timer + + m_syncs.erase(sync.timestamp); + } + else std::cout << "sync be no good."; } break; case OUTPUT: if (Deserialize(&out, pck, &bsize)) { - RemotePlayer* r = (RemotePlayer*)m_players[out.id]; - r->Feed(out); + if (!m_players.contains(out.id)) { + + std::cout << out.id << " is id no good." << std::endl; + break; + } + RemotePlayer* rt = static_cast(m_players[out.id]); + rt->Feed(out); } break; case CHUNKMOD: @@ -1411,11 +1485,22 @@ void Engine::Render(float elapsedTime) { } break; default: + std::cout << "packet be no good."; break; } } lsPck.clear(); + + glDisable(GL_CULL_FACE); + for (auto& [key, player] : m_players) { + RemotePlayer* rt = static_cast(player); + glClear(GL_STENCIL_BUFFER_BIT); + rt->Render(m_animeAtlas, m_shader01, all, elapsedTime); + m_otherplayerpos = player->GetPosition(); // Aller chercher GetPosition des deux façon, voir si ça chie. + } + glEnable(GL_CULL_FACE); } + } } diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index 50da61b..e9f4709 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -81,8 +81,6 @@ private: void PrintText(float x, float y, const std::string& t, float charSizeMultiplier = 1.0f); void ProcessNotificationQueue(); - Connector m_conn; - Audio m_audio = Audio(AUDIO_PATH "start.wav"); irrklang::ISound* m_powpow, * m_scream; irrklang::ISound* m_whoosh[MAX_BULLETS]; diff --git a/SQCSim2021/openglcontext.cpp b/SQCSim2021/openglcontext.cpp index 6284446..f0263cd 100644 --- a/SQCSim2021/openglcontext.cpp +++ b/SQCSim2021/openglcontext.cpp @@ -16,8 +16,8 @@ bool OpenglContext::Start(const std::string& title, int width, int height, bool m_fullscreen = fullscreen; InitWindow(width, height); - Init(); LoadResource(); + Init(); sf::Clock clock; diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index c2247ba..d203fb0 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -33,6 +33,7 @@ void RemotePlayer::Init() void RemotePlayer::Feed(const netprot::Output out) { + m_position = Vector3f(out.position); //current.position = out.position; //current.direction = out.direction; //current.states = out.states; @@ -75,17 +76,18 @@ void RemotePlayer::Feed(const netprot::Output out) { //previous.position = current.position; //previous.states = current.states; //previous.id = current.id; + + //m_direction = current.direction; + //m_position = current.position; } void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tran, float elapsedTime) { - float x = GetPosition().x; float y = GetPosition().y; float z = GetPosition().z; float width = 1.f; float height = 1.7f; - //Matrix4 mat4 = tran.GetMatrix(); //mat4 VP = pMatrix * vMatrix; From b11a484a5a63ecc222fa078c99fd916b55329d28 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Tue, 5 Dec 2023 14:25:21 -0500 Subject: [PATCH 07/82] :sunglasses: --- SQCSim-srv/connection.cpp | 9 +++++++-- SQCSim-srv/define.h | 8 ++++++++ SQCSim-srv/server.cpp | 38 ++++++++++++++++++++++++++++---------- SQCSim-srv/server.h | 1 + SQCSim2021/connector.cpp | 5 ----- SQCSim2021/engine.cpp | 10 +++++----- 6 files changed, 49 insertions(+), 22 deletions(-) diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp index 1e3ab99..941c7f1 100644 --- a/SQCSim-srv/connection.cpp +++ b/SQCSim-srv/connection.cpp @@ -136,6 +136,10 @@ Timestamp Connection::Run(World* world) { in.keys.left, in.keys.right, in.keys.jump, false, el), world, el); + + out.states.jumping = in.keys.jump; + out.states.running = player->GetVelocity().Length() > .3f; + out.states.dead = player->AmIDead(); if (in.keys.block) { bool block = false; @@ -147,14 +151,15 @@ Timestamp Connection::Run(World* world) { ChunkDiffs.emplace_back(cmod); } - if (in.keys.shoot && m_shoot_acc <= 0.) + if (in.keys.shoot && m_shoot_acc <= 0.) { Bullets.push_back(Bullet(player->GetPOV() + player->GetDirection(), player->GetDirection())); + out.states.shooting = true; + } out.position = player->GetPositionAbs(); out.direction = in.direction; out.timestamp = in.timestamp; out.id = m_playinfo.id; - m_output_manifest[out.timestamp] = out; m_output_vector.push_back(out); tstamp = out.timestamp; diff --git a/SQCSim-srv/define.h b/SQCSim-srv/define.h index e30bd49..2cb6378 100644 --- a/SQCSim-srv/define.h +++ b/SQCSim-srv/define.h @@ -11,4 +11,12 @@ #define ID_LIST_SIZE 127 #define SRV_MANUAL_SETUP true +std::vector DEATHMESSAGES = { "@ has gone to meet their maker.", + "@ has bit the dust, if you know what I mean.", + "@ has ceased to be.", + "@ is no more.", + "@ is like, super dead.", + "RIP, @.", + "So long, @, and thanks for all the lols!"}; + #endif diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index aeba450..5c27aa2 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -214,7 +214,7 @@ void Server::Run() { sendPackTo(m_sock_udp, &sync, &m_buf, conn->getAddr()); } - int timer = m_game.countdown, sync_acc = 0; + int timer = m_game.countdown, sync_acc = 0, deadplayers = 0; std::chrono::high_resolution_clock::time_point start = std::chrono::high_resolution_clock::now(); Timestamp last = 0; std::vector chatlog; @@ -238,7 +238,6 @@ void Server::Run() { /* In */ - int deadplayers = 0; std::vector lsPck; Input in; Chat chat; Sync sync; @@ -266,13 +265,20 @@ void Server::Run() { /* Process */ if (conn->m_nsync) { + Timestamp tstamp = conn->Run(m_world); + if (conn->player->AmIDead()) { + Chat* chat = new Chat(); + chat->dest_id = chat->dest_team_id = chat->src_id = 0; + + strcpy(chat->mess, getDeathMessage(conn->player->GetUsername()).c_str()); + + m_chatlog[tstamp] = chat; + ++deadplayers; conn->m_nsync == false; } else { - Timestamp tstamp = conn->Run(m_world); - for (auto& chmo : conn->ChunkDiffs) chunkdiffs.emplace_back(chmo); conn->ChunkDiffs.clear(); @@ -298,10 +304,11 @@ void Server::Run() { endgame = true; } - for (auto& bull : netbull) { + for (auto& bull : netbull) for (auto& [key, conn] : m_conns) - sendPackTo(m_sock_udp, bull, &m_buf, conn->getAddr()); - } + if (bull->id != conn->GetHash(false)) // Pour pas repitcher au joueur sa propre balle. + sendPackTo(m_sock_udp, bull, &m_buf, conn->getAddr()); + for (auto& bull : bullets) { ChunkMod* cmod = nullptr; @@ -336,7 +343,7 @@ void Server::Run() { Chat end; end.src_id = 0; - char endmess[] = "Game over, motherfuckers."; + char endmess[] = "Game over, mothereffers."; strcpy(end.mess, endmess); @@ -385,9 +392,9 @@ void Server::Log(std::string str, bool is_error = false, bool is_fatal = false) closesocket(m_sock_udp); if (m_sock_tcp) closesocket(m_sock_tcp); - for (const auto& [key, player] : m_conns) { + for (const auto& [key, player] : m_conns) closesocket(player->getSock()); - } + delete m_world; m_conns.clear(); #ifdef _WIN32 @@ -412,3 +419,14 @@ uint64_t Server::getUniqueId() { m_ids.pop_back(); return id; } + +std::string Server::getDeathMessage(std::string username) const { + std::string mess; + std::string temp = DEATHMESSAGES.at(rand() % DEATHMESSAGES.size()); + size_t ind = temp.find('@'); + mess.append(temp.substr(0, ind)); + mess.append(username)); + mess.append(temp.substr(ind + 1)); + + return mess; +} diff --git a/SQCSim-srv/server.h b/SQCSim-srv/server.h index 33e78df..b4f2d55 100644 --- a/SQCSim-srv/server.h +++ b/SQCSim-srv/server.h @@ -50,6 +50,7 @@ private: void buildIdList(size_t size); uint64_t getUniqueId(); + std::string getDeathMessage(std::string username) const; }; diff --git a/SQCSim2021/connector.cpp b/SQCSim2021/connector.cpp index a35c790..eb1d754 100644 --- a/SQCSim2021/connector.cpp +++ b/SQCSim2021/connector.cpp @@ -69,11 +69,6 @@ int Connector::Connect(const char* srv_addr, std::string name) { netprot::sendPack(m_sock_tcp, &log, &bf); - //using namespace std::chrono_literals; - //std::this_thread::sleep_for(100ms); - - //memset(bf.ptr, '\0', BUFFER_LENGTH); - bool ready = false; int errors = 0; std::vector lsPck; diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index c188e97..3ab80e7 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -249,9 +249,9 @@ void Engine::LoadResource() { //TextureAtlas::TextureIndex JumpQuarterBackLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackLeftJumpLeftShootingLeftShoot1.png"); //TextureAtlas::TextureIndex JumpQuarterBackRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackRightJumpRightShootingRightShoot1.png"); //TextureAtlas::TextureIndex JumpBackShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackJumpRightShootingRightShoot1.png"); - - - + + + if (!m_animeAtlas.Generate(TEXTURE_SIZE, false)) { std::cout << " Unable to generate texture atlas ..." << std::endl; abort(); @@ -1430,7 +1430,7 @@ void Engine::Render(float elapsedTime) { m_player.InflictDamage(sync.hp - comp.hp); Vector3f diff = sync.position - comp.position; - + if (diff.y < 1.) diff.y = 0; @@ -1449,7 +1449,7 @@ void Engine::Render(float elapsedTime) { case OUTPUT: if (Deserialize(&out, pck, &bsize)) { if (!m_players.contains(out.id)) { - + std::cout << out.id << " is id no good." << std::endl; break; } From 9c1cd885cfed7e86b44269cd29874c69cbf832a6 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Tue, 5 Dec 2023 15:02:31 -0500 Subject: [PATCH 08/82] Tehe. --- SQCSim-srv/define.h | 15 ++++++++------- SQCSim-srv/server.cpp | 6 +++--- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/SQCSim-srv/define.h b/SQCSim-srv/define.h index 2cb6378..f92b4bc 100644 --- a/SQCSim-srv/define.h +++ b/SQCSim-srv/define.h @@ -11,12 +11,13 @@ #define ID_LIST_SIZE 127 #define SRV_MANUAL_SETUP true -std::vector DEATHMESSAGES = { "@ has gone to meet their maker.", - "@ has bit the dust, if you know what I mean.", - "@ has ceased to be.", - "@ is no more.", - "@ is like, super dead.", - "RIP, @.", - "So long, @, and thanks for all the lols!"}; +const std::vector DEATHMESSAGES = { "@ has gone to meet their maker.", + "@ has bit the dust, if you know what I mean.", + "@ has ceased to be.", + "@ is no more.", + "@ is like, super dead.", + "RIP, @.", + "So long, @, and thanks for all the lols!", + "@ has a bad case of being dead." }; #endif diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index 5c27aa2..81ab798 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -268,10 +268,10 @@ void Server::Run() { Timestamp tstamp = conn->Run(m_world); if (conn->player->AmIDead()) { - Chat* chat = new Chat(); - chat->dest_id = chat->dest_team_id = chat->src_id = 0; + Chat chat; + chat.dest_id = chat.dest_team_id = chat.src_id = 0; - strcpy(chat->mess, getDeathMessage(conn->player->GetUsername()).c_str()); + strcpy(chat.mess, getDeathMessage(conn->player->GetUsername()).c_str()); m_chatlog[tstamp] = chat; From 0856f913d23f8248ef66e43f9b571a37aa6875de Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Wed, 6 Dec 2023 10:48:04 -0500 Subject: [PATCH 09/82] yay --- SQCSim2021/remoteplayer.cpp | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index 9a29ae3..f0ac72f 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -103,33 +103,39 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr Vector3f v4 = (playerPosition - CrossA * 0.5 * width - CrossB * 0.5 * height); Vector3f angleRemote = GetDirection(); - Vector3f angleCam = Vector3f(v2.z, 0, -v2.x); + Vector3f angleCam = (v1 - v2).Cross(v3 - v2); angleCam.y = 0; angleRemote.y = 0; angleCam.Normalize(); angleRemote.Normalize(); float angle = angleRemote.Dot(angleCam); - angle *= 100; + //angle *= 100; + //angle /= 57.2958; int index = 0; + + Vector3f side = angleRemote.Cross(angleCam); - if (angle >= -0.125 && angle <= 0.125) + //std::cout << "trying: " << trying.y << std::endl; + bool isLeft = side.y > 0; + if (angle >= 0.75 ) //Face //side positif index = 0; - else if (angle >= 0.125 && angle <= 0.375) + else if (angle >= 0.25 && isLeft) //Frontleft index = 1; - else if (angle >= 0.375 && angle <= 0.625) + else if (angle >= -0.25 && isLeft) //ProfileLeft index = 3; - else if (angle >= 0.625 && angle <= 0.875) + else if (angle >= -0.75 && isLeft) //BackLeft index = 5; - else if (angle >= 0.875 && angle <= -0.875) + else if (angle < -0.75) //Dos //side négatif index = 7; - else if (angle >= -0.875 && angle <= -0.625) - index = 6; - else if (angle >= -0.625 && angle <= -0.375) - index = 4; - else if (angle >= -0.375 && angle <= -0.125) + else if (angle >= 0.25 && !isLeft) //FrontRight index = 2; + else if (angle >= -0.25 && !isLeft) //ProfileRight + index = 4; + else if (angle >= -0.75 && !isLeft) //BackRight + index = 6; + std::cout << index << std::endl; std::cout << "angle: " << angle << std::endl; From 7a7dc1fad6260807ad8d493f80fe3a6850d8bf1b Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Wed, 6 Dec 2023 11:16:30 -0500 Subject: [PATCH 10/82] DomoAriGato --- SQCSim2021/engine.cpp | 88 ++++++++++++++++++------------------- SQCSim2021/remoteplayer.cpp | 4 +- 2 files changed, 45 insertions(+), 47 deletions(-) diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index a63664f..c35abf9 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -472,57 +472,57 @@ void Engine::LoadResource() { TextureAtlas::TextureIndex StillBack = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueBackRight.png"); //7 //SHOOTINGSTILL SANS TIRER - //TextureAtlas::TextureIndex StillFrontShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueFrontRightShootingRight.png"); - //TextureAtlas::TextureIndex StillQuarterFrontLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueFrontRightShootingRight.png"); - //TextureAtlas::TextureIndex StillQuarterFrontRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueRightShootingRight.png"); - //TextureAtlas::TextureIndex StillProfiltLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueProfilShootingLeft.png"); - //TextureAtlas::TextureIndex StillProfiltRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueProfilShootingRight.png"); - //TextureAtlas::TextureIndex StillQuarterBackLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueBackLeftShootingLeft.png"); - //TextureAtlas::TextureIndex StillQuarterBackRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueBackRightShootingRight.png"); - //TextureAtlas::TextureIndex StillBackShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueShootingBackRight.png"); + //TextureAtlas::TextureIndex StillFrontShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueFrontRightShootingRight.png"); ////9 + //TextureAtlas::TextureIndex StillQuarterFrontLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueFrontRightShootingRight.png"); ////10 + //TextureAtlas::TextureIndex StillQuarterFrontRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueRightShootingRight.png"); ////11 + //TextureAtlas::TextureIndex StillProfiltLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueProfilShootingLeft.png"); ////12 + //TextureAtlas::TextureIndex StillProfiltRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueProfilShootingRight.png"); ////13 + //TextureAtlas::TextureIndex StillQuarterBackLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueBackLeftShootingLeft.png"); ////14 + //TextureAtlas::TextureIndex StillQuarterBackRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueBackRightShootingRight.png"); ////15 + //TextureAtlas::TextureIndex StillBackShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueShootingBackRight.png"); ////16 //SHOOTINGSTILL TIRER - //TextureAtlas::TextureIndex StillFrontShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueFrontRightShootingRightShoot1.png"); - //TextureAtlas::TextureIndex StillQuarterFrontLeftFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueLeftShootingLeftShoot1.png"); - //TextureAtlas::TextureIndex StillQuarterFrontRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueRightShootingRightShoot1.png"); - //TextureAtlas::TextureIndex StillProfiltLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueProfilShootingLeftShoot1.png"); - //TextureAtlas::TextureIndex StillProfiltRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueProfilShootingRightShoot1.png"); - //TextureAtlas::TextureIndex StillQuarterBackLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueBackLeftShootingLeftShoot1.png"); - //TextureAtlas::TextureIndex StillQuarterBackRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueBackRightShootingRightShoot1.png"); - //TextureAtlas::TextureIndex StillBackShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueShootingBackRightShoot1.png"); + //TextureAtlas::TextureIndex StillFrontShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueFrontRightShootingRightShoot1.png"); ////17 + //TextureAtlas::TextureIndex StillQuarterFrontLeftFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueLeftShootingLeftShoot1.png"); ////18 + //TextureAtlas::TextureIndex StillQuarterFrontRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueRightShootingRightShoot1.png"); ////19 + //TextureAtlas::TextureIndex StillProfiltLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueProfilShootingLeftShoot1.png"); ////20 + //TextureAtlas::TextureIndex StillProfiltRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueProfilShootingRightShoot1.png"); ////21 + //TextureAtlas::TextureIndex StillQuarterBackLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueBackLeftShootingLeftShoot1.png"); ////22 + //TextureAtlas::TextureIndex StillQuarterBackRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueBackRightShootingRightShoot1.png"); ////23 + //TextureAtlas::TextureIndex StillBackShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueShootingBackRightShoot1.png"); ////24 //JUMP - //TextureAtlas::TextureIndex JumpFront = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueFrontJumpRight.png"); - //TextureAtlas::TextureIndex JumpQuarterFrontLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeftFrontJumpLeft.png"); - //TextureAtlas::TextureIndex JumpQuarterFrontRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRightFrontJumpRight.png"); - //TextureAtlas::TextureIndex JumpProfiltLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilJumpLeft.png"); - //TextureAtlas::TextureIndex JumpProfiltRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilJumpRight.png"); - //TextureAtlas::TextureIndex JumpQuarterBackLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeftBackJumpLeft.png"); - //TextureAtlas::TextureIndex JumpQuarterBackRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRightBackJumpRight.png"); - //TextureAtlas::TextureIndex JumpBack = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueBackJumpRight.png"); + //TextureAtlas::TextureIndex JumpFront = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueFrontJumpRight.png"); ////25 + //TextureAtlas::TextureIndex JumpQuarterFrontLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeftFrontJumpLeft.png"); ////26 + //TextureAtlas::TextureIndex JumpQuarterFrontRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRightFrontJumpRight.png"); ////27 + //TextureAtlas::TextureIndex JumpProfiltLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilJumpLeft.png"); ////28 + //TextureAtlas::TextureIndex JumpProfiltRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilJumpRight.png"); ////29 + //TextureAtlas::TextureIndex JumpQuarterBackLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeftBackJumpLeft.png"); ////30 + //TextureAtlas::TextureIndex JumpQuarterBackRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRightBackJumpRight.png"); ////31 + //TextureAtlas::TextureIndex JumpBack = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueBackJumpRight.png"); ////32 - //SHOOTINGJUMP SANS TIRER - //TextureAtlas::TextureIndex JumpFrontShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueFrontJumpRightShootingRight.png"); - //TextureAtlas::TextureIndex JumpQuarterFrontLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueFrontLeftJumpLeftShootingLeft.png"); - //TextureAtlas::TextureIndex JumpQuarterFrontRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueFrontRightJumpRightShootingRight.png"); - //TextureAtlas::TextureIndex JumpProfiltLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueProfilLeftJumpLeftShootingLeft.png"); - //TextureAtlas::TextureIndex JumpProfiltRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BluerProfilRightJumprightShootingRight.png"); - //TextureAtlas::TextureIndex JumpQuarterBackLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueBackLeftJumpLeftShootingLeft.png"); - //TextureAtlas::TextureIndex JumpQuarterBackRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueBackRightJumpRightShootingRight.png"); - //TextureAtlas::TextureIndex JumpBackShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueBackJumpRightShootingRight.png"); - + //SHOOTINGJUMP SANS TIRER + //TextureAtlas::TextureIndex JumpFrontShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueFrontJumpRightShootingRight.png"); ////33 + //TextureAtlas::TextureIndex JumpQuarterFrontLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueFrontLeftJumpLeftShootingLeft.png"); ////34 + //TextureAtlas::TextureIndex JumpQuarterFrontRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueFrontRightJumpRightShootingRight.png"); ////35 + //TextureAtlas::TextureIndex JumpProfiltLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueProfilLeftJumpLeftShootingLeft.png"); ////36 + //TextureAtlas::TextureIndex JumpProfiltRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BluerProfilRightJumprightShootingRight.png"); ////37 + //TextureAtlas::TextureIndex JumpQuarterBackLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueBackLeftJumpLeftShootingLeft.png"); ////38 + //TextureAtlas::TextureIndex JumpQuarterBackRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueBackRightJumpRightShootingRight.png"); ////39 + //TextureAtlas::TextureIndex JumpBackShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueBackJumpRightShootingRight.png"); ////40 + //SHOOTINGJUMP TIRER - //TextureAtlas::TextureIndex JumpFrontShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueFrontJumpRightShootingRightShoot1.png"); - //TextureAtlas::TextureIndex JumpQuarterFrontLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueFrontLeftJumpLeftShootingLeftShoot1.png"); - //TextureAtlas::TextureIndex JumpQuarterFrontRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueFrontRightJumpRightShootingRightShoot1.png"); - //TextureAtlas::TextureIndex JumpProfiltLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueProfilLeftJumpLeftShootingLeftShoot1.png"); - //TextureAtlas::TextureIndex JumpProfiltRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BluerProfilRightJumprightShootingRightShoot1.png"); - //TextureAtlas::TextureIndex JumpQuarterBackLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackLeftJumpLeftShootingLeftShoot1.png"); - //TextureAtlas::TextureIndex JumpQuarterBackRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackRightJumpRightShootingRightShoot1.png"); - //TextureAtlas::TextureIndex JumpBackShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackJumpRightShootingRightShoot1.png"); + //TextureAtlas::TextureIndex JumpFrontShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueFrontJumpRightShootingRightShoot1.png"); ////41 + //TextureAtlas::TextureIndex JumpQuarterFrontLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueFrontLeftJumpLeftShootingLeftShoot1.png"); ////42 + //TextureAtlas::TextureIndex JumpQuarterFrontRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueFrontRightJumpRightShootingRightShoot1.png"); ////43 + //TextureAtlas::TextureIndex JumpProfiltLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueProfilLeftJumpLeftShootingLeftShoot1.png"); ////44 + //TextureAtlas::TextureIndex JumpProfiltRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BluerProfilRightJumprightShootingRightShoot1.png"); ////45 + //TextureAtlas::TextureIndex JumpQuarterBackLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackLeftJumpLeftShootingLeftShoot1.png"); ////46 + //TextureAtlas::TextureIndex JumpQuarterBackRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackRightJumpRightShootingRightShoot1.png"); ////47 + //TextureAtlas::TextureIndex JumpBackShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackJumpRightShootingRightShoot1.png"); ////48 @@ -1249,8 +1249,8 @@ void Engine::Render(float elapsedTime) { m_renderer.UpdateMesh(&m_world, m_player.GetPosition(), m_blockinfo); //m_booster.RenderBillboard({ 195,16,195 }, m_textureAtlas, m_shader01, all); - m_remotePlayer.ApplyPhysics(Vector3f(0, 0, 0), &m_world, elapsedTime); - m_remotePlayer.Render(m_animeAtlas, m_shader01, all ,elapsedTime , m_player); + /* m_remotePlayer.ApplyPhysics(Vector3f(0, 0, 0), &m_world, elapsedTime); + m_remotePlayer.Render(m_animeAtlas, m_shader01, all ,elapsedTime , m_player);*/ m_renderer.RenderWorld(&m_world, m_renderCount, m_player.GetPosition(), m_player.GetDirection(), all, m_shader01, m_textureAtlas); diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index f0ac72f..fb30c3e 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -110,13 +110,11 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr angleRemote.Normalize(); float angle = angleRemote.Dot(angleCam); - //angle *= 100; - //angle /= 57.2958; int index = 0; Vector3f side = angleRemote.Cross(angleCam); - //std::cout << "trying: " << trying.y << std::endl; + bool isLeft = side.y > 0; if (angle >= 0.75 ) //Face //side positif index = 0; From c975265901bad7709c25558f8ff80ef24f6fded3 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 11:16:39 -0500 Subject: [PATCH 11/82] Timer iznogoud. --- SQCSim-common/bullet.cpp | 21 ++++++++++++---- SQCSim-common/bullet.h | 4 +-- SQCSim-common/netprotocol.cpp | 4 +-- SQCSim-common/player.cpp | 19 ++++++--------- SQCSim-common/player.h | 4 +++ SQCSim-srv/connection.cpp | 14 +++++++++-- SQCSim-srv/connection.h | 4 +-- SQCSim-srv/define.h | 11 +++++++-- SQCSim-srv/server.cpp | 46 ++++++++++++++++++++++++----------- SQCSim-srv/server.h | 2 +- SQCSim2021/engine.cpp | 41 ++++++++++++++++++++++--------- SQCSim2021/engine.h | 2 +- 12 files changed, 118 insertions(+), 54 deletions(-) diff --git a/SQCSim-common/bullet.cpp b/SQCSim-common/bullet.cpp index b5a38e4..b2731f6 100644 --- a/SQCSim-common/bullet.cpp +++ b/SQCSim-common/bullet.cpp @@ -3,7 +3,7 @@ Bullet::Bullet(Vector3f pos, Vector3f dir) : m_startpos(pos), m_currentpos(pos), m_velocity(dir) {} -Bullet::Bullet(Vector3f pos, Vector3f dir, uint64_t tid): m_startpos(pos), m_currentpos(pos), m_velocity(dir), m_tid(tid) {} +Bullet::Bullet(Vector3f pos, Vector3f dir, uint64_t shooter_id): m_startpos(pos), m_currentpos(pos), m_velocity(dir), m_shooter_id(shooter_id) {} Bullet::~Bullet() {} @@ -14,8 +14,19 @@ bool Bullet::Update(World* world, float elapsedtime, int perframe, std::unordere m_currentpos += m_velocity * elapsedtime; for (auto& [key, player] : mapPlayer) { - if ((m_currentpos - player->GetPosition()).Length() < .4f) { + bool hit = false; + if ((m_currentpos - player->GetPosition()).Length() < .6f) + hit = true; + if ((m_currentpos - player->GetPOV()).Length() < .2f) { + damage *= 2; // HEADSHOT! + hit = true; + } + if (hit && !player->AmIDead()) { player->InflictDamage(damage); + + if (player->AmIDead()) + player->Killer = m_shooter_id; + return true; } } @@ -56,6 +67,6 @@ Vector3f Bullet::getVel() const { return m_velocity; } -uint64_t Bullet::getTeamID(){ - return m_tid; -} +//uint64_t Bullet::getTeamID(){ +// return m_tid; +//} diff --git a/SQCSim-common/bullet.h b/SQCSim-common/bullet.h index 34b21bf..3f875d9 100644 --- a/SQCSim-common/bullet.h +++ b/SQCSim-common/bullet.h @@ -20,13 +20,13 @@ public: void Transpose(int& x, int& z); Vector3f getPos() const; Vector3f getVel() const; - uint64_t getTeamID(); + //uint64_t getTeamID(); private: Vector3f m_startpos, m_currentpos, m_velocity; - uint64_t m_tid = 0; + uint64_t m_shooter_id = 0; }; diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index e087313..bcd03a7 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -447,7 +447,7 @@ void netprot::Serialize(BulletAdd* bull, char* buf[], uint32_t* buflen) { memcpy(*buf + 1, ts8, sizeof(uint64_t)); - uint64_t tid = bull->tid; + uint64_t tid = bull->id; uint8_t tid8[sizeof(uint64_t)] = { (uint8_t)((tid >> 56) & 0xFF), (uint8_t)((tid >> 48) & 0xFF), @@ -964,7 +964,7 @@ bool netprot::Deserialize(BulletAdd* bull, char* buf, uint32_t* buflen) { (uint64_t)tst[7]; memcpy(tst, &buf[1 + sizeof(uint64_t)], sizeof(uint64_t)); - bull->tid = + bull->id = (uint64_t)tst[0] << 56 | (uint64_t)tst[1] << 48 | (uint64_t)tst[2] << 40 | diff --git a/SQCSim-common/player.cpp b/SQCSim-common/player.cpp index 6e18197..dae069e 100644 --- a/SQCSim-common/player.cpp +++ b/SQCSim-common/player.cpp @@ -282,20 +282,17 @@ bool Player::AmIDead() } -void Player::InflictDamage(float hitPoints) -{ - +void Player::InflictDamage(float hitPoints) { m_hp -= hitPoints; - - - if (AmIDead()) - { // Quand le joueur est mort. - - - - } + //if (AmIDead()) + //{ // Quand le joueur est mort. + //} } +int Player::getScore() const { return m_score; } + +void Player::addPoint() { ++m_score; } + uint64_t Player::getId() const { return id; } diff --git a/SQCSim-common/player.h b/SQCSim-common/player.h index b7f02db..ece5699 100644 --- a/SQCSim-common/player.h +++ b/SQCSim-common/player.h @@ -37,6 +37,9 @@ public: bool AmIDead(); void InflictDamage(float hitPoints); + int getScore() const; + void addPoint(); + uint64_t Killer = 0; private: uint64_t getId() const; @@ -48,6 +51,7 @@ protected: std::string m_username; uint64_t id = 0; + int m_score = 0; float m_rotX = 0; float m_rotY = 0; diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp index 941c7f1..3ced157 100644 --- a/SQCSim-srv/connection.cpp +++ b/SQCSim-srv/connection.cpp @@ -137,9 +137,19 @@ Timestamp Connection::Run(World* world) { in.keys.right, in.keys.jump, false, el), world, el); + if (player->GetPosition().y < -10.) { + player->InflictDamage(9000); + player->Killer = GetHash(true); + } + out.states.jumping = in.keys.jump; out.states.running = player->GetVelocity().Length() > .3f; - out.states.dead = player->AmIDead(); + + if (player->AmIDead()) { + in.keys.shoot = false; + in.keys.block = false; + out.states.dead = true; + } if (in.keys.block) { bool block = false; @@ -152,7 +162,7 @@ Timestamp Connection::Run(World* world) { } if (in.keys.shoot && m_shoot_acc <= 0.) { - Bullets.push_back(Bullet(player->GetPOV() + player->GetDirection(), player->GetDirection())); + Bullets.emplace_back(new Bullet(player->GetPOV() + player->GetDirection(), player->GetDirection(), GetHash(true))); out.states.shooting = true; } diff --git a/SQCSim-srv/connection.h b/SQCSim-srv/connection.h index 091e7f4..7a019e2 100644 --- a/SQCSim-srv/connection.h +++ b/SQCSim-srv/connection.h @@ -42,8 +42,8 @@ public: bool m_nsync = true; - std::vector Bullets; - std::vector ChunkDiffs; + std::vector Bullets; + std::vector ChunkDiffs; Timestamp GetTStamp() const; diff --git a/SQCSim-srv/define.h b/SQCSim-srv/define.h index f92b4bc..a334446 100644 --- a/SQCSim-srv/define.h +++ b/SQCSim-srv/define.h @@ -11,13 +11,20 @@ #define ID_LIST_SIZE 127 #define SRV_MANUAL_SETUP true +// @ = Dead guy, $ = Killer. const std::vector DEATHMESSAGES = { "@ has gone to meet their maker.", "@ has bit the dust, if you know what I mean.", "@ has ceased to be.", "@ is no more.", "@ is like, super dead.", - "RIP, @.", + "Requiescat In Pace, @.", "So long, @, and thanks for all the lols!", - "@ has a bad case of being dead." }; + "@ has a bad case of being dead.", + "@ has finally seen the light!", + "Thought @ was hot; guess what? He's not. He is dead, dead, dead.", + "@ did not want to live forever.", + "$ made @ die for their country.", + "$ has become death, destroyer of @.", + "$ did not make @ feel lucky." }; #endif diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index 81ab798..aabc548 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -200,8 +200,8 @@ void Server::Run() { m_world->BuildWorld(); for (auto& [key, conn] : m_conns) { // Creation des instances de joueurs et premier sync. - int x = (rand() % (CHUNK_SIZE_X * WORLD_SIZE_X - 1)) - (CHUNK_SIZE_X * WORLD_SIZE_X / 2), - y = (rand() % (CHUNK_SIZE_Y * WORLD_SIZE_Y - 1)) - (CHUNK_SIZE_Y * WORLD_SIZE_Y / 2); + int x = 0,// (rand() % (CHUNK_SIZE_X * WORLD_SIZE_X - 1)),// -(CHUNK_SIZE_X * WORLD_SIZE_X / 2), + y = 0;// (rand() % (CHUNK_SIZE_Y * WORLD_SIZE_Y - 1));// -(CHUNK_SIZE_Y * WORLD_SIZE_Y / 2); conn->player = new Player(Vector3f(x + .5f, CHUNK_SIZE_Y + 1.8f, y + .5f)); m_players[key] = conn->player; Sync sync; @@ -270,8 +270,10 @@ void Server::Run() { if (conn->player->AmIDead()) { Chat chat; chat.dest_id = chat.dest_team_id = chat.src_id = 0; + + std::string killer = m_conns.at(key)->player->GetUsername(); - strcpy(chat.mess, getDeathMessage(conn->player->GetUsername()).c_str()); + strcpy(chat.mess, getDeathMessage(conn->player->GetUsername(), killer).c_str()); m_chatlog[tstamp] = chat; @@ -285,9 +287,10 @@ void Server::Run() { for (auto& bull : conn->Bullets) { bullets.emplace_back(bull); + Log("POW!", false, false); BulletAdd* nbul = new BulletAdd(); - nbul->pos = conn->player->GetPosition(); - nbul->dir = conn->player->GetDirection(); + nbul->pos = bull->getPos(); + nbul->dir = bull->getVel(); nbul->id = key; nbul->tstamp = tstamp; @@ -300,10 +303,10 @@ void Server::Run() { conn->sendPacks(m_sock_udp, m_conns, timer); } - if (deadplayers == players - 1 || timer <= 0) - endgame = true; + //if (/*(deadplayers == players - 1 && deadplayers != 0) || */timer <= 0) + //endgame = true; } - + for (auto& bull : netbull) for (auto& [key, conn] : m_conns) if (bull->id != conn->GetHash(false)) // Pour pas repitcher au joueur sa propre balle. @@ -319,9 +322,11 @@ void Server::Run() { } } - for (auto& chat : chatlog) - for (auto& [key, conn] : m_conns) + for (auto& chat : chatlog) { + Log(chat.mess, false, false); + for (auto& [key, conn] : m_conns) sendPackTo(m_sock_udp, &chat, &m_buf, conn->getAddr()); + } for (auto& chmo : chunkdiffs) { for (auto& [key, conn] : m_conns) @@ -420,13 +425,26 @@ uint64_t Server::getUniqueId() { return id; } -std::string Server::getDeathMessage(std::string username) const { +std::string Server::getDeathMessage(std::string username, std::string killer) const { std::string mess; std::string temp = DEATHMESSAGES.at(rand() % DEATHMESSAGES.size()); size_t ind = temp.find('@'); - mess.append(temp.substr(0, ind)); - mess.append(username)); - mess.append(temp.substr(ind + 1)); + size_t indk = temp.find('$'); + + if (ind < indk) { + mess.append(temp.substr(0, ind)); + mess.append(username); + mess.append(temp.substr(ind + 1, indk)); + mess.append(killer); + mess.append(temp.substr(indk + 1)); + } + else { + mess.append(temp.substr(0, indk)); + mess.append(killer); + mess.append(temp.substr(indk + 1, ind)); + mess.append(username); + mess.append(temp.substr(ind + 1)); + } return mess; } diff --git a/SQCSim-srv/server.h b/SQCSim-srv/server.h index b4f2d55..33fde93 100644 --- a/SQCSim-srv/server.h +++ b/SQCSim-srv/server.h @@ -50,7 +50,7 @@ private: void buildIdList(size_t size); uint64_t getUniqueId(); - std::string getDeathMessage(std::string username) const; + std::string getDeathMessage(std::string username, std::string killer) const; }; diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 3ab80e7..d623682 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -530,12 +530,12 @@ void Engine::DrawHud(float elapsedTime, BlockType bloc) { glPushMatrix(); int timer = GetCountdown(elapsedTime); - for (int i = 1; i < WORLD_SIZE_X; i++) { + /*for (int i = 1; i < WORLD_SIZE_X; i++) { if (timer <= COUNTDOWN - m_timerReductionChunk * i) { m_world.RemoveChunk(m_nbReductionChunk * i); m_renderer.RemoveChunk(m_nbReductionChunk * i); } - } + }*/ if (m_keyK) { SystemNotification(m_messageNotification); m_keyK = false; @@ -663,8 +663,8 @@ int Engine::GetCountdown(float elapsedTime) { m_countdown = m_time + COUNTDOWN; m_resetcountdown = false; } - if (m_countdown < m_time) - Stop(); + if (m_countdown < m_time) {} + //Stop(); if (!m_stopcountdown) m_time += elapsedTime; return m_countdown - (int)m_time; @@ -1409,10 +1409,12 @@ void Engine::Render(float elapsedTime) { sendPackTo(m_conn.m_sock_udp, &input, &m_bufout, &m_conn.m_srvsockaddr); + std::cout << "."; + lsPck = recvPacks(m_conn.m_sock_udp, &m_buf); char* prevptr = nullptr; for (auto& pck : lsPck) { // We could make a few threads out of this. - Sync sync; Output out; ChunkMod cmod; BulletAdd bull; + Sync sync; Output out; ChunkMod cmod; BulletAdd bull; Chat chat; if (!prevptr) prevptr = m_buf.ptr; uint32_t bsize = m_buf.len - (pck - prevptr); @@ -1420,9 +1422,10 @@ void Engine::Render(float elapsedTime) { switch (getType(pck, 1)) { using enum PACKET_TYPE; case SYNC: + std::cout << "snyc"; if (Deserialize(&sync, pck, &bsize)) { if (sync.sid != m_conn.getId()) { - std::cout << "syncsid be no good."; + SystemNotification("syncsid be no good."); break; } if (m_syncs.count(sync.timestamp)) { @@ -1439,18 +1442,18 @@ void Engine::Render(float elapsedTime) { m_player.Move(-diff); } - // TODO: Syncer sync.timer avec le timer + m_countdown = sync.timer; m_syncs.erase(sync.timestamp); } - else std::cout << "sync be no good."; + else SystemNotification("sync be no good."); } break; case OUTPUT: + std::cout << "out"; if (Deserialize(&out, pck, &bsize)) { if (!m_players.contains(out.id)) { - - std::cout << out.id << " is id no good." << std::endl; + SystemNotification(std::to_string(out.id).append(" is id no good.")); break; } RemotePlayer* rt = static_cast(m_players[out.id]); @@ -1458,6 +1461,7 @@ void Engine::Render(float elapsedTime) { } break; case CHUNKMOD: + std::cout << "cmod"; if (Deserialize(&cmod, pck, &bsize)) { if (!std::erase_if(m_chunkmod_manifest, // Efface le chunkmod du manifeste s'il est dedans et reset le countdown, sinon fait la modification. [cmod](ChunkMod* c) { @@ -1468,10 +1472,12 @@ void Engine::Render(float elapsedTime) { m_world.ChangeBlockAtPosition(cmod.b_type, cmod.pos); else cmod_acc = 0; } + else SystemNotification("cmod iznogoud."); break; case BULLET: + std::cout << "pow"; if (Deserialize(&bull, pck, &bsize)) { - Bullet* bult = new Bullet(bull.pos, bull.dir, bull.id); + Bullet* bult = new Bullet(bull.pos, bull.dir); 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] = bult; @@ -1483,14 +1489,23 @@ void Engine::Render(float elapsedTime) { } m_audio.Create3DAudioObj(m_powpow, AUDIO_PATH "pow.wav", bull.pos, bull.dir * 10, false, .5f); } + else SystemNotification("Bullet is kraput."); + break; + case CHAT: + std::cout << "cat"; + if (Deserialize(&chat, pck, &bsize)) + SystemNotification(chat.mess); + else SystemNotification("Chat iznogoud."); break; default: - std::cout << "packet be no good."; + std::cout << "wtf"; + SystemNotification("packet be no good."); break; } } lsPck.clear(); + glDisable(GL_CULL_FACE); for (auto& [key, player] : m_players) { RemotePlayer* rt = static_cast(player); @@ -1607,6 +1622,8 @@ void Engine::KeyPressEvent(unsigned char key) { } break; case 36: // ESC - Quitter + if (m_networkgame) + break; if (m_gamestate == GameState::PLAY) { m_gamestate = GameState::PAUSE; } diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index e9f4709..ef0cb73 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -99,7 +99,7 @@ private: BlockInfo* m_blockinfo[BTYPE_LAST]; BoostInfo* m_boostinfo[BTYPE_BOOST_LAST]; - GameState m_gamestate = GameState::SPLASH; + GameState m_gamestate = GameState::PLAY; Shader m_shader01; From 4841e8d5ba5bcb91a27005780f5748cf525de640 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 12:08:44 -0500 Subject: [PATCH 12/82] Make Debug Great Again --- SQCSim-srv/server.cpp | 8 ++++---- SQCSim2021/engine.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index aabc548..920f366 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -334,11 +334,11 @@ void Server::Run() { delete chmo; } - for (auto& bull : outbox_bullets) - delete bull; + //for (auto& bull : outbox_bullets) + //delete bull; - for (auto& bull : netbull) - delete bull; + //for (auto& bull : netbull) + //delete bull; outbox_bullets.clear(); netbull.clear(); diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 48515e5..20a8d36 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -1625,7 +1625,7 @@ void Engine::KeyPressEvent(unsigned char key) { break; case 36: // ESC - Quitter if (m_networkgame) - break; + Stop(); if (m_gamestate == GameState::PLAY) { m_gamestate = GameState::PAUSE; } From 988b2c330cc13a93285a19aaa93ab0bcb6235d37 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 12:17:47 -0500 Subject: [PATCH 13/82] 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]) { From adf36c8905946dca2f80319178649eb33ccaf7f0 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 12:25:34 -0500 Subject: [PATCH 14/82] Whooooooooo are you? --- SQCSim-srv/server.cpp | 2 ++ SQCSim2021/engine.cpp | 41 ----------------------------------------- 2 files changed, 2 insertions(+), 41 deletions(-) diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index 920f366..f9e173b 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -232,6 +232,8 @@ void Server::Run() { if (sync_acc >= 1000) { sync_acc -= 1000; --timer; + std::string str = "Timer: "; + Log(str.append(std::to_string(timer)), false, false); } for (auto& [key, conn] : m_conns) { diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 91d741d..4db7aa5 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -1300,34 +1300,6 @@ void Engine::Render(float elapsedTime) { else if (m_mouseR) 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]) { for (int b = 0; b < BULLET_UPDATES_PER_FRAME; ++b) { @@ -1354,11 +1326,6 @@ void Engine::Render(float elapsedTime) { m_world.Update(m_bullets, m_player.GetPosition(), m_blockinfo); m_renderer.UpdateMesh(&m_world, m_player.GetPosition(), m_blockinfo); - - //m_booster.RenderBillboard({ 195,16,195 }, m_textureAtlas, m_shader01, all); - /* m_remotePlayer.ApplyPhysics(Vector3f(0, 0, 0), &m_world, elapsedTime); - m_remotePlayer.Render(m_animeAtlas, m_shader01, all ,elapsedTime , m_player);*/ - m_renderer.RenderWorld(&m_world, m_renderCount, m_player.GetPosition(), m_player.GetDirection(), all, m_shader01, m_textureAtlas); if (m_isSkybox) m_skybox.Render(skybox); @@ -1436,8 +1403,6 @@ void Engine::Render(float elapsedTime) { sendPackTo(m_conn.m_sock_udp, &input, &m_bufout, &m_conn.m_srvsockaddr); - std::cout << "."; - lsPck = recvPacks(m_conn.m_sock_udp, &m_buf); char* prevptr = nullptr; for (auto& pck : lsPck) { // We could make a few threads out of this. @@ -1449,7 +1414,6 @@ void Engine::Render(float elapsedTime) { switch (getType(pck, 1)) { using enum PACKET_TYPE; case SYNC: - std::cout << "snyc"; if (Deserialize(&sync, pck, &bsize)) { if (sync.sid != m_conn.getId()) { SystemNotification("syncsid be no good."); @@ -1477,7 +1441,6 @@ void Engine::Render(float elapsedTime) { } break; case OUTPUT: - std::cout << "out"; if (Deserialize(&out, pck, &bsize)) { if (!m_players.contains(out.id)) { SystemNotification(std::to_string(out.id).append(" is id no good.")); @@ -1488,7 +1451,6 @@ void Engine::Render(float elapsedTime) { } break; case CHUNKMOD: - std::cout << "cmod"; if (Deserialize(&cmod, pck, &bsize)) { if (!std::erase_if(m_chunkmod_manifest, // Efface le chunkmod du manifeste s'il est dedans et reset le countdown, sinon fait la modification. [cmod](ChunkMod* c) { @@ -1502,7 +1464,6 @@ void Engine::Render(float elapsedTime) { else SystemNotification("cmod iznogoud."); break; case BULLET: - std::cout << "pow"; if (Deserialize(&bull, pck, &bsize)) { Bullet* bult = new Bullet(bull.pos, bull.dir); for (int x = 0; x < MAX_BULLETS; ++x) // Ajouter une balle dans l'array (aussi connu sous le nom de "faire pow pow"). @@ -1519,13 +1480,11 @@ void Engine::Render(float elapsedTime) { else SystemNotification("Bullet is kraput."); break; case CHAT: - std::cout << "cat"; if (Deserialize(&chat, pck, &bsize)) SystemNotification(chat.mess); else SystemNotification("Chat iznogoud."); break; default: - std::cout << "wtf"; SystemNotification("packet be no good."); break; } From 3b0f9650d4776f09e686ab9270d8d8b2d1575b0c Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 12:32:26 -0500 Subject: [PATCH 15/82] What a big mess. --- SQCSim-srv/server.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index f9e173b..f277f12 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -233,7 +233,7 @@ void Server::Run() { sync_acc -= 1000; --timer; std::string str = "Timer: "; - Log(str.append(std::to_string(timer)), false, false); + Log(str.append(std::to_string(timer).append(" SyncAcc: ").append(std::to_string(sync_acc))), false, false); } for (auto& [key, conn] : m_conns) { @@ -275,7 +275,9 @@ void Server::Run() { std::string killer = m_conns.at(key)->player->GetUsername(); - strcpy(chat.mess, getDeathMessage(conn->player->GetUsername(), killer).c_str()); + std::string mess = getDeathMessage(conn->player->GetUsername(), killer); + + strcpy(chat.mess, mess.c_str()); m_chatlog[tstamp] = chat; From 63d8a624291c370148edf3b68aee95e3c6659aa7 Mon Sep 17 00:00:00 2001 From: mduval76 <9343789@etu.cegepsth.qc.ca> Date: Wed, 6 Dec 2023 13:14:51 -0500 Subject: [PATCH 16/82] =?UTF-8?q?Push=20tin=20to=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQCSim2021/define.h | 1 + SQCSim2021/engine.cpp | 174 +- SQCSim2021/engine.h | 4 +- .../textures/menus/backgrounds/bgLobby.png | Bin 0 -> 517565 bytes .../engine.cpp | 1893 +++++++++++++++++ 5 files changed, 2008 insertions(+), 64 deletions(-) create mode 100644 SQCSim2021/media/textures/menus/backgrounds/bgLobby.png create mode 100644 enc_temp_folder/b3c3cb753ef72fdaf31cb22525389b8/engine.cpp diff --git a/SQCSim2021/define.h b/SQCSim2021/define.h index e8b9e47..c9b3322 100644 --- a/SQCSim2021/define.h +++ b/SQCSim2021/define.h @@ -39,6 +39,7 @@ enum GameState { MAIN_MENU, SPLASH, + LOBBY, OPTIONS, QUIT, PLAY, diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index d7b675a..1fdb750 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -70,61 +70,12 @@ void Engine::Init() { m_whoosh[x] = nullptr; } - char* ch = new char[2]; - - std::cout << "Jouer en ligne? [o/N] "; - std::cin.getline(ch, 2); - std::cout << std::endl; - - if (*ch == 'o' || *ch == 'O') { - char* input = new char[32]; - std::string playname, srvname; - - while (playname.size() < 1) { - std::cout << "Veuillez entrer un nom de joueur: "; - std::cin.getline(input, 32); - std::cout << std::endl; - playname = input; - if (playname.size() < 1 || playname.size() > 32) - std::puts("Nom invalide."); - } - while (srvname.size() < 1) { - std::cout << "Veuillez entrer une adresse de serveur: "; - std::cin.getline(input, 32); - std::cout << std::endl; - srvname = input; - if (srvname.size() < 1 || srvname.size() > 32) - std::puts("Adresse serveur invalide."); - } - delete[] input; - - if (!m_conn.Init()) { - if (!m_conn.Connect(srvname.c_str(), playname)) { - // setup jeu en reseau. - std::cout << "ID recu du serveur: " << std::to_string(m_conn.getId()) << "!" << std::endl; - std::cout << "Seed recu du serveur: " << std::to_string(m_conn.getSeed()) << "!" << std::endl; - m_player = Player(m_conn.getOrigin().position); - - for (auto& [key, player] : m_conn.m_players) - m_players[key] = new RemotePlayer(player); - - seed = m_conn.getSeed(); - m_networkgame = true; - } - else std::cout << "Erreur de connexion." << std::endl; - } - else std::cout << "Erreur de creation de socket." << std::endl; - } - delete[] ch; - m_world.SetSeed(seed); // Init Chunks m_world.GetChunks().Reset(nullptr); m_startTime = std::chrono::high_resolution_clock::now(); - - m_remotePlayer.SetPosition(Vector3f(.5, CHUNK_SIZE_Y + 10., .5)); } void Engine::DeInit() {} @@ -136,8 +87,9 @@ void Engine::LoadResource() { LoadTexture(m_textureGun, TEXTURE_PATH "gun01.png", false); LoadTexture(m_texturePovGun, TEXTURE_PATH "GUN.png", false); + LoadTexture(m_textureLobbyMenu, TEXTURE_PATH "menus/backgrounds/bgLobby.png", false); LoadTexture(m_textureMainMenu, TEXTURE_PATH "menus/backgrounds/bgMainMenu.png", false); - LoadTexture(m_texturePauseMenu, TEXTURE_PATH "menus/backgrounds/bgPause.png", false); + //LoadTexture(m_texturePauseMenu, TEXTURE_PATH "menus/backgrounds/bgPause.png", false); LoadTexture(m_textureOptionsMenu, TEXTURE_PATH "menus/backgrounds/bgOptions.png", false); LoadTexture(m_textureSplashScreen, TEXTURE_PATH "menus/backgrounds/bgSplash.png", false); @@ -550,14 +502,10 @@ void Engine::DisplayPovGun() { glLoadIdentity(); glTranslated(xTranslation, 0, 0); glBegin(GL_QUADS); - glTexCoord2f(0, 0); - glVertex2i(0, 0); - glTexCoord2f(1, 0); - glVertex2i(quadWidth, 0); - glTexCoord2f(1, 1); - glVertex2i(quadWidth, quadHeight); - glTexCoord2f(0, 1); - glVertex2i(0, quadHeight); + glTexCoord2f(0, 0); glVertex2i(0, 0); + glTexCoord2f(1, 0); glVertex2i(quadWidth, 0); + glTexCoord2f(1, 1); glVertex2i(quadWidth, quadHeight); + glTexCoord2f(0, 1); glVertex2i(0, quadHeight); glEnd(); // Reset du blend function @@ -624,6 +572,60 @@ int Engine::GetOptionsChoice() { return m_selectedOption; } +void Engine::StartMultiplayerGame() { + char* ch = new char[2]; + + //std::cout << "Jouer en ligne? [o/N] "; + //std::cin.getline(ch, 2); + //std::cout << std::endl; + + char* input = new char[32]; + std::string playname, srvname; + + /*if (*ch == 'o' || *ch == 'O') { + char* input = new char[32]; + std::string playname, srvname; + + while (playname.size() < 1) { + std::cout << "Veuillez entrer un nom de joueur: "; + std::cin.getline(input, 32); + std::cout << std::endl; + playname = input; + if (playname.size() < 1 || playname.size() > 32) + std::puts("Nom invalide."); + } + while (srvname.size() < 1) { + std::cout << "Veuillez entrer une adresse de serveur: "; + std::cin.getline(input, 32); + std::cout << std::endl; + srvname = input; + if (srvname.size() < 1 || srvname.size() > 32) + std::puts("Adresse serveur invalide."); + } + delete[] input; + + + } + delete[] ch;*/ + + if (!m_conn.Init()) { + if (!m_conn.Connect(srvname.c_str(), playname)) { + // setup jeu en reseau. + std::cout << "ID recu du serveur: " << std::to_string(m_conn.getId()) << "!" << std::endl; + std::cout << "Seed recu du serveur: " << std::to_string(m_conn.getSeed()) << "!" << std::endl; + m_player = Player(m_conn.getOrigin().position); + + for (auto& [key, player] : m_conn.m_players) + m_players[key] = new RemotePlayer(player); + + //seed = m_conn.getSeed(); + m_networkgame = true; + } + else std::cout << "Erreur de connexion." << std::endl; + } + else std::cout << "Erreur de creation de socket." << std::endl; +} + void Engine::DisplayInfo(float elapsedTime, BlockType bloc) { m_textureFont.Bind(); std::ostringstream ss; @@ -709,15 +711,60 @@ void Engine::DisplaySplashScreen() { glPopMatrix(); } -void Engine::DisplayPauseMenu() { +void Engine::DisplayLobbyMenu() { + GLint viewport[4]; + glGetIntegerv(GL_VIEWPORT, viewport); - m_texturePauseMenu.Bind(); + glDisable(GL_STENCIL_TEST); + glDisable(GL_DEPTH_TEST); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBlendEquation(GL_FUNC_ADD); + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + + glLoadIdentity(); + glOrtho(0, Width(), 0, Height(), -1, 1); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + + m_textureLobbyMenu.Bind(); glBegin(GL_QUADS); glTexCoord2f(0, 0); glVertex2i(0, 0); glTexCoord2f(1, 0); glVertex2i(Width(), 0); glTexCoord2f(1, 1); glVertex2i(Width(), Height()); glTexCoord2f(0, 1); glVertex2i(0, Height()); glEnd(); + + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE); + + m_textureFont.Bind(); + std::ostringstream ss; + + + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + + glBindTexture(GL_TEXTURE_2D, 0); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(Width() * 0.6, Height() * 0.425); + glTexCoord2f(1, 0); glVertex2i(Width() * 0.95, Height() * 0.425); + glTexCoord2f(1, 1); glVertex2i(Width() * 0.95, Height() * 0.475); + glTexCoord2f(0, 1); glVertex2i(Width() * 0.6, Height() * 0.475); + glEnd(); + + glViewport(viewport[0], viewport[1], viewport[2], viewport[3]); + + glEnable(GL_STENCIL_TEST); + glEnable(GL_DEPTH_TEST); + + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); } void Engine::DisplayMainMenu() { @@ -1155,8 +1202,8 @@ void Engine::Render(float elapsedTime) { return; } - if (m_gamestate == GameState::PAUSE) { - DisplayPauseMenu(); + if (m_gamestate == GameState::LOBBY) { + DisplayLobbyMenu(); return; } @@ -1697,7 +1744,8 @@ void Engine::MousePressEvent(const MOUSE_BUTTON& button, int x, int y) { } else if (x > leftButton && x < rightButton && y > bottomSecond && y < topSecond) { if (m_selectedPlayOptions) { - m_gamestate = GameState::PLAY; + m_gamestate = GameState::LOBBY; + StartMultiplayerGame(); } else { m_gamestate = GameState::OPTIONS; diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index aff6ebd..8161620 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -45,6 +45,7 @@ private: int GetFps(float elapsedTime) const; int GetCountdown(float elapsedTime); int GetOptionsChoice(); + void StartMultiplayerGame(); bool LoadTexture(Texture& texture, const std::string& filename, bool useMipmaps = true, bool stopOnError = true); @@ -61,7 +62,7 @@ private: void DisplayInfo(float elapsedTime, BlockType bloc); void DisplaySplashScreen(); - void DisplayPauseMenu(); + void DisplayLobbyMenu(); void DisplayMainMenu(); void DrawButtonBackgrounds(float centerX, float centerY, int iterations); @@ -122,6 +123,7 @@ private: Texture m_texturePovGun; Texture m_textureSkybox; + Texture m_textureLobbyMenu; Texture m_textureMainMenu; Texture m_textureOptionsMenu; Texture m_texturePauseMenu; diff --git a/SQCSim2021/media/textures/menus/backgrounds/bgLobby.png b/SQCSim2021/media/textures/menus/backgrounds/bgLobby.png new file mode 100644 index 0000000000000000000000000000000000000000..fab655028c230a126ca389c4e8fba0fcc13e54e4 GIT binary patch literal 517565 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%0AJ5-?zr;b3dNGKIil6dfWF_TYs~7@t>S0GL`eI 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≫&pzTOrYfz>TgO&u^j_Bg*VQWpd-vW< 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ξ+NST%Nbv^ZP$M~ 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℞d`I$-}~d{GKR_- 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 +#include +#include +#include +#include +#include +#include + +// Define a structure to represent notifications +struct Notification { + std::string message; + float displayStartTime = 0.0f; +}; + +// Use a queue to manage notifications +//std::queue notificationQueue; +// Use a vector to manage notifications +std::vector notifications; + +Engine::Engine() : m_remotePlayer(&m_pinfo), m_pinfo() {} + +Engine::~Engine() { + m_world.CleanUpWorld(m_renderCount, true); + for (int x = 0; x < WORLD_SIZE_X; ++x) + for (int y = 0; y < WORLD_SIZE_Y; ++y) + if (m_world.GetChunks().Get(x, y)) + m_world.GetChunks().Get(x, y)->~Chunk(); +} + +void Engine::Init() { + GLenum glewErr = glewInit(); + if (glewErr != GLEW_OK) { + std::cerr << " ERREUR GLEW : " << glewGetErrorString(glewErr) << std::endl; + abort(); + } + + uint64_t seed = SEED; + + glDisable(GL_FRAMEBUFFER_SRGB); + glEnable(GL_DEPTH_TEST); + glEnable(GL_STENCIL_TEST); + glEnable(GL_POINT_SMOOTH); + glEnable(GL_BLEND); + glEnable(GL_TEXTURE_2D); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + gluPerspective(45.0f, (float)Width() / (float)Height(), 0.1f, VIEW_DISTANCE); + glShadeModel(GL_SMOOTH); + + glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); + glDisable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBlendEquation(GL_FUNC_SUBTRACT); + + if (m_istarted) + return; + else m_istarted = true; + + // Objet de skybox avec sa propre texture et son propre shader! + m_skybox.Init(0.2f); + // Objet de musique! + //m_audio.ToggleMusicState(); + + // Array pour les balles. + for (int x = 0; x < MAX_BULLETS; ++x) { + m_bullets[x] = nullptr; + m_whoosh[x] = nullptr; + } + + m_world.SetSeed(seed); + + // Init Chunks + m_world.GetChunks().Reset(nullptr); + + m_startTime = std::chrono::high_resolution_clock::now(); +} + +void Engine::DeInit() {} + +void Engine::LoadResource() { + LoadTexture(m_skybox.GetTexture(), TEXTURE_PATH "skybox.png", true); + LoadTexture(m_textureCrosshair, TEXTURE_PATH "cross.bmp", true); + LoadTexture(m_textureFont, TEXTURE_PATH "font.bmp", true); + LoadTexture(m_textureGun, TEXTURE_PATH "gun01.png", false); + LoadTexture(m_texturePovGun, TEXTURE_PATH "GUN.png", false); + + LoadTexture(m_textureLobbyMenu, TEXTURE_PATH "menus/backgrounds/bgLobby.png", false); + LoadTexture(m_textureMainMenu, TEXTURE_PATH "menus/backgrounds/bgMainMenu.png", false); + //LoadTexture(m_texturePauseMenu, TEXTURE_PATH "menus/backgrounds/bgPause.png", false); + LoadTexture(m_textureOptionsMenu, TEXTURE_PATH "menus/backgrounds/bgOptions.png", false); + LoadTexture(m_textureSplashScreen, TEXTURE_PATH "menus/backgrounds/bgSplash.png", false); + + LoadTexture(m_textureCheck, TEXTURE_PATH "menus/others/check.png", false); + LoadTexture(m_textureChecked, TEXTURE_PATH "menus/others/checked.png", false); + + LoadTexture(m_textureOptAudio, TEXTURE_PATH "menus/buttons/options/optAudio.png", false); + LoadTexture(m_textureOptBack, TEXTURE_PATH "menus/buttons/options/optBack.png", false); + LoadTexture(m_textureOptGameplay, TEXTURE_PATH "menus/buttons/options/optGameplay.png", false); + LoadTexture(m_textureOptGraphics, TEXTURE_PATH "menus/buttons/options/optGraphics.png", false); + LoadTexture(m_textureOptMain, TEXTURE_PATH "menus/buttons/options/optMain.png", false); + LoadTexture(m_textureOptMusic, TEXTURE_PATH "menus/buttons/options/optMusic.png", false); + LoadTexture(m_textureOptOptions, TEXTURE_PATH "menus/buttons/options/optOptions.png", false); + LoadTexture(m_textureOptResolution, TEXTURE_PATH "menus/buttons/options/optResolution.png", false); + LoadTexture(m_textureOptSensitivity, TEXTURE_PATH "menus/buttons/options/optSensitivity.png", false); + LoadTexture(m_textureOptSfx, TEXTURE_PATH "menus/buttons/options/optSfx.png", false); + + LoadTexture(m_textureHd, TEXTURE_PATH "menus/labels/labelHd.png", false); + LoadTexture(m_textureFhd, TEXTURE_PATH "menus/labels/labelFhd.png", false); + LoadTexture(m_textureQhd, TEXTURE_PATH "menus/labels/labelQhd.png", false); + LoadTexture(m_textureUhd, TEXTURE_PATH "menus/labels/labelUhd.png", false); + LoadTexture(m_textureMenuTitle, TEXTURE_PATH "menus/labels/labelTitle.png", false); + + LoadTexture(m_textureMenuBack, TEXTURE_PATH "menus/buttons/main/mainBack.png", false); + LoadTexture(m_textureMenuMulti, TEXTURE_PATH "menus/buttons/main/mainMulti.png", false); + LoadTexture(m_textureMenuOptions, TEXTURE_PATH "menus/buttons/main/mainOptions.png", false); + LoadTexture(m_textureMenuPlay, TEXTURE_PATH "menus/buttons/main/mainPlay.png", false); + LoadTexture(m_textureMenuQuit, TEXTURE_PATH "menus/buttons/main/mainQuit.png", false); + LoadTexture(m_textureMenuSingle, TEXTURE_PATH "menus/buttons/main/mainSingle.png", false); + + TextureAtlas::TextureIndex texDirtIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "metal3.png"); + TextureAtlas::TextureIndex texIceIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "metal2.png"); + TextureAtlas::TextureIndex texGrassIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "grass.png"); + TextureAtlas::TextureIndex texMetalIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "dirt.png"); + TextureAtlas::TextureIndex texGreenGrassIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "greengrass.png"); + TextureAtlas::TextureIndex texBoostHeal = m_textureAtlas.AddTexture(BOOSTER_TEXTURE_PATH "BoosterVert.png"); + TextureAtlas::TextureIndex texBoostDmg = m_textureAtlas.AddTexture(BOOSTER_TEXTURE_PATH "BoosterRouge.png"); + TextureAtlas::TextureIndex texBoostSpd = m_textureAtlas.AddTexture(BOOSTER_TEXTURE_PATH "BoosterBleu.png"); + TextureAtlas::TextureIndex texBoostInv = m_textureAtlas.AddTexture(BOOSTER_TEXTURE_PATH "BoosterJaune.png"); + + //AJOUTER LES TEXTURES DANS L'ORDRE DE L'ÉNUM + + //JUMP + //TextureAtlas::TextureIndex JumpBack = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueBackJumpRight.png"); + //TextureAtlas::TextureIndex JumpFront = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueFrontJumpRight.png"); + //TextureAtlas::TextureIndex JumpQuarterBackLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeftBackJumpLeft.png"); + //TextureAtlas::TextureIndex JumpQuarterBackRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRightBackJumpRight.png"); + //TextureAtlas::TextureIndex JumpProfiltLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilJumpLeft.png"); + //TextureAtlas::TextureIndex JumpProfiltRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilJumpRight.png"); + //TextureAtlas::TextureIndex JumpQuarterFrontLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeftFrontJumpLeft.png"); + //TextureAtlas::TextureIndex JumpQuarterFrontRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRightFrontJumpRight.png"); + + //STILL + //TextureAtlas::TextureIndex StillBack = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueBackRight.png"); + TextureAtlas::TextureIndex StillFront = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueFrontRight.png"); + //TextureAtlas::TextureIndex StillQuarterBackLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeftBack.png"); + //TextureAtlas::TextureIndex StillQuarterBackRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRightBack.png"); + //TextureAtlas::TextureIndex StillProfiltLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilLeft.png"); + //TextureAtlas::TextureIndex StillProfiltRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilRight.png"); + //TextureAtlas::TextureIndex StillQuarterFrontLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeft.png"); + //TextureAtlas::TextureIndex StillQuarterFrontRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRight.png"); + + //SHOOTINGSTILL + //SHOOTINGJUMP + + if (!m_animeAtlas.Generate(TEXTURE_SIZE, false)) { + std::cout << " Unable to generate texture atlas ..." << std::endl; + abort(); + } + + if (!m_textureAtlas.Generate(TEXTURE_SIZE, false)) { + std::cout << " Unable to generate texture atlas ..." << std::endl; + abort(); + } + + float u, v, s; + m_textureAtlas.TextureIndexToCoord(texDirtIndex, u, v, s, s); + m_blockinfo[BTYPE_DIRT] = new BlockInfo(BTYPE_DIRT, "Dirt", u, v, s, 1); + m_textureAtlas.TextureIndexToCoord(texGrassIndex, u, v, s, s); + m_blockinfo[BTYPE_GRASS] = new BlockInfo(BTYPE_GRASS, "Grass", u, v, s, 1); + m_textureAtlas.TextureIndexToCoord(texMetalIndex, u, v, s, s); + m_blockinfo[BTYPE_METAL] = new BlockInfo(BTYPE_METAL, "Metal", u, v, s, 1); + m_textureAtlas.TextureIndexToCoord(texIceIndex, u, v, s, s); + m_blockinfo[BTYPE_ICE] = new BlockInfo(BTYPE_ICE, "Ice", u, v, s, 1); + m_textureAtlas.TextureIndexToCoord(texGreenGrassIndex, u, v, s, s); + m_blockinfo[BTYPE_GREENGRASS] = new BlockInfo(BTYPE_GREENGRASS, "GreenGrass", u, v, s, 1); + m_textureAtlas.TextureIndexToCoord(texBoostHeal, u, v, s, s); + m_boostinfo[BTYPE_HEAL] = new BoostInfo(BTYPE_HEAL, "Heal", u, v, s, 1); + m_textureAtlas.TextureIndexToCoord(texBoostDmg, u, v, s, s); + m_boostinfo[BTYPE_DAMAGE] = new BoostInfo(BTYPE_DAMAGE, "Dmg", u, v, s, 1); + m_textureAtlas.TextureIndexToCoord(texBoostSpd, u, v, s, s); + m_boostinfo[BTYPE_SPEED] = new BoostInfo(BTYPE_SPEED, "Spd", u, v, s, 1); + m_textureAtlas.TextureIndexToCoord(texIceIndex, u, v, s, s); + m_boostinfo[BTYPE_INVINCIBLE] = new BoostInfo(BTYPE_INVINCIBLE, "Inv", u, v, s, 1); + + m_animeAtlas.TextureIndexToCoord(0, u, v, s, s); + + std::cout << " Loading and compiling shaders ..." << std::endl; + if (!m_shader01.Load(SHADER_PATH "shader01.vert", SHADER_PATH "shader01.frag", true)) { + std::cout << " Failed to load shader " << std::endl; + exit(1); + } + + if (!m_skybox.GetShader().Load(SHADER_PATH "skybox.vert", SHADER_PATH "skybox.frag", true)) { + std::cout << " Failed to load shader " << std::endl; + exit(1); + } +} + +void Engine::UnloadResource() {} + + + +void Engine::InstantDamage() { + m_player.InflictDamage(0.10f); + m_damage = false; +} + +void Engine::SystemNotification(std::string systemLog) { + std::string message = ""; + + message = systemLog; + + DisplayNotification(message); +} + +void Engine::KillNotification(Player killer, Player killed) { + std::string message = ""; + + message = killed.GetUsername() + " killed by -> " + killer.GetUsername(); + + DisplayNotification(message); +} + +void Engine::DisplayNotification(std::string message) { + + if (message.length() > 45) { + message = message.substr(0, 45); + } + // Create a new notification and add it to the queue + Notification newNotification; + newNotification.message = message; + newNotification.displayStartTime = m_time; + + notifications.push_back(newNotification); +} + +// Add a method to process the notification queue +void Engine::ProcessNotificationQueue() { + //PrintText(fPosX, fUsernamePosY, ss.str(), 1.5f); + //float fPosX = (Width() / 100.0f) * scaleX; + //float fPosY = Height() - (Height() * 0.05) * scaleY; + + m_textureFont.Bind(); + float xOffset = Width() * 0.66f; + float yOffset = Height() * 0.83f; + + for (auto it = notifications.begin(); it != notifications.end(); ) { + float timeSinceDisplay = m_time - it->displayStartTime; + + float y = yOffset - (20.0f * (it - notifications.begin())); + + glDisable(GL_STENCIL_TEST); + glDisable(GL_DEPTH_TEST); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE); + glBlendEquation(GL_FUNC_ADD); + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + + glLoadIdentity(); + glOrtho(0, Width(), 0, Height(), -1, 1); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + + PrintText(xOffset, y, it->message); + + glBlendFunc(GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR); + glBlendEquation(GL_FUNC_SUBTRACT); + + glEnable(GL_STENCIL_TEST); + glEnable(GL_DEPTH_TEST); + + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); + + if (timeSinceDisplay >= 4.0f) { + it = notifications.erase(it); + } + else { + ++it; + } + } +} + +void Engine::DisplayCrosshair() { + m_textureCrosshair.Bind(); + static const int crossSize = 32; + glLoadIdentity(); + glTranslated(Width() / 2 - crossSize / 2, Height() / 2 - crossSize / 2, 0); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); + glVertex2i(0, 0); + glTexCoord2f(1, 0); + glVertex2i(crossSize, 0); + glTexCoord2f(1, 1); + glVertex2i(crossSize, crossSize); + glTexCoord2f(0, 1); + glVertex2i(0, crossSize); + glEnd(); +} + +void Engine::DisplayCurrentItem() {} + +void Engine::DisplayHud(int timer) { + glBindTexture(GL_TEXTURE_2D, 0); + glLoadIdentity(); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + float itemBackgroundWidthProportion = 0.25f; + float itemBackgroundHeightProportion = 0.175f; + float itemBackgroundWidth = Width() * itemBackgroundWidthProportion; + float itemBackgroundHeight = Height() * itemBackgroundHeightProportion; + float itemBackgroundXOffset = Width() * 0.05f; + float itemBackgroundYOffset = Height() * 0.6f; + float itemBackgroundXPos = itemBackgroundXOffset; + float itemBackgroundYPos = Height() - itemBackgroundHeight - itemBackgroundYOffset; + + // Selected item background + glColor4f(1.0f, 1.0f, 1.0f, 0.2f); + glBegin(GL_QUADS); + glVertex2f(itemBackgroundXPos, itemBackgroundYPos); + glVertex2f(itemBackgroundXPos + itemBackgroundWidth, itemBackgroundYPos); + glVertex2f(itemBackgroundXPos + itemBackgroundWidth, itemBackgroundYPos + itemBackgroundHeight); + glVertex2f(itemBackgroundXPos, itemBackgroundYPos + itemBackgroundHeight); + glEnd(); + + // HP Bar + float playerHp = m_player.GetHP(); + float facteurOmbrage = m_displayInfo ? 0.5f : 1.0f; + + float hpBarWidthProportion = 0.25f; + float hpBarHeightProportion = 0.045f; + float hpBarWidth = Width() * hpBarWidthProportion; + float hpBarHeight = Height() * hpBarHeightProportion; + float hpBarXOffset = Width() * 0.05f; + float hpBarYOffset = Height() * 0.7f; + float hpBarYPos = Height() - hpBarHeight - hpBarYOffset; + + // HP Bar Background + glColor3f(1.0f * facteurOmbrage, 1.0f * facteurOmbrage, 1.0f * facteurOmbrage); + glBegin(GL_QUADS); + glVertex2f(itemBackgroundXPos, hpBarYPos - hpBarHeight); + glVertex2f(itemBackgroundXPos + itemBackgroundWidth, hpBarYPos - hpBarHeight); + glVertex2f(itemBackgroundXPos + itemBackgroundWidth, hpBarYPos); + glVertex2f(itemBackgroundXPos, hpBarYPos); + glEnd(); + + //TODO: Associer avec mechanique de vie du joueur + + // Barre HP + glColor3f(0.0f * facteurOmbrage, 1.0f * facteurOmbrage, 0.0f * facteurOmbrage); + glBegin(GL_QUADS); + glVertex2f(itemBackgroundXPos, hpBarYPos - hpBarHeight); + glVertex2f(itemBackgroundXPos + itemBackgroundWidth * playerHp, hpBarYPos - hpBarHeight); + glVertex2f(itemBackgroundXPos + itemBackgroundWidth * playerHp, hpBarYPos); + glVertex2f(itemBackgroundXPos, hpBarYPos); + glEnd(); + + // Equip Bar + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glColor3f(1.0f * facteurOmbrage, 1.0f * facteurOmbrage, 1.0f * facteurOmbrage); + + float equipWidthProportion = 0.8f; + float equipHeightProportion = 0.7f; + float equipWidth = itemBackgroundWidth * equipWidthProportion; + float equipHeight = itemBackgroundHeight * equipHeightProportion; + float equipXOffset = itemBackgroundXPos + (itemBackgroundWidth - equipWidth) * 0.1f; + float equipYOffset = itemBackgroundYPos + (itemBackgroundHeight - equipHeight) * 0.75f; + + glTranslatef(equipXOffset, equipYOffset, 0); + + m_textureGun.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2f(0, 0); + glTexCoord2f(1, 0); glVertex2f(equipWidth, 0); + glTexCoord2f(1, 1); glVertex2f(equipWidth, equipHeight); + glTexCoord2f(0, 1); glVertex2f(0, equipHeight); + glEnd(); + + // Username + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE); + glColor3f(1.0f, 1.0f, 1.0f); + + m_textureFont.Bind(); + std::ostringstream ss; + float fUsernamePosY = hpBarYPos - (hpBarHeight * 2); + + ss.str(""); + ss << m_player.GetUsername(); + PrintText(itemBackgroundXPos, fUsernamePosY, ss.str(), 1.5f); + + ss.str(""); + ss << m_player.GetHP() * 100 << "%"; + PrintText(itemBackgroundXPos * 5.25f, fUsernamePosY, ss.str(), 1.5f); + + float countdownXOffset = Width() * 0.2f; + float countdownYOffset = Height() * 0.1f; + float countdownXPos = Width() - countdownXOffset; + float countdownYPos = Height() - countdownYOffset; + + // Countdown + ss.str(""); + ss << "Time: " << (int)(timer / 60) << ":" << std::setw(2) << std::setfill('0') << timer % 60; + PrintText(countdownXPos, countdownYPos, ss.str(), 2.0f); +} + +void Engine::DrawHud(float elapsedTime, BlockType bloc) { + // Setter le blend function, tout ce qui sera noir sera transparent + glDisable(GL_STENCIL_TEST); + glDisable(GL_DEPTH_TEST); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE); + glBlendEquation(GL_FUNC_ADD); + glEnable(GL_BLEND); + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + + glLoadIdentity(); + glOrtho(0, Width(), 0, Height(), -1, 1); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + + int timer = GetCountdown(elapsedTime); + for (int i = 1; i < WORLD_SIZE_X; i++) { + if (timer <= COUNTDOWN - m_timerReductionChunk * i) { + m_world.RemoveChunk(m_nbReductionChunk * i); + m_renderer.RemoveChunk(m_nbReductionChunk * i); + } + } + if (m_keyK) { + SystemNotification(m_messageNotification); + m_keyK = false; + } + if (m_keyL) { + + KillNotification(m_player, m_player); + m_keyL = false; + } + + if (m_displayInfo) { + DisplayInfo(elapsedTime, bloc); + } + + if (m_displayHud) { + DisplayHud(timer); + } + + if (m_displayCrosshair) { + DisplayCrosshair(); + } + + glBlendFunc(GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR); + glBlendEquation(GL_FUNC_SUBTRACT); + + glEnable(GL_STENCIL_TEST); + glEnable(GL_DEPTH_TEST); + + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); +} + +void Engine::DisplayPovGun() { + // Setter le blend function, tout ce qui sera noir sera transparent + glDisable(GL_STENCIL_TEST); + glDisable(GL_DEPTH_TEST); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBlendEquation(GL_FUNC_ADD); + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + + glLoadIdentity(); + glOrtho(0, Width(), 0, Height(), -1, 1); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + + float baseXOffsetPercentage = 0.4958; + float baseWidthPercentage = 0.4688; + float baseHeightPercentage = 0.5787; + + float xTranslation = baseXOffsetPercentage * Width(); + float quadWidth = baseWidthPercentage * Width(); + float quadHeight = baseHeightPercentage * Height(); + + m_texturePovGun.Bind(); + glLoadIdentity(); + glTranslated(xTranslation, 0, 0); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(0, 0); + glTexCoord2f(1, 0); glVertex2i(quadWidth, 0); + glTexCoord2f(1, 1); glVertex2i(quadWidth, quadHeight); + glTexCoord2f(0, 1); glVertex2i(0, quadHeight); + glEnd(); + + // Reset du blend function + glBlendFunc(GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR); + glBlendEquation(GL_FUNC_SUBTRACT); + + glEnable(GL_STENCIL_TEST); + glEnable(GL_DEPTH_TEST); + + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); +} + +void Engine::PrintText(float x, float y, const std::string& t, float charSizeMultiplier) { + float windowWidth = static_cast(Width()); + float windowHeight = static_cast(Height()); + + float posX = x * windowWidth; + float posY = y * windowHeight; + + float baseCharSize = 20 + (24 - 20) * (windowWidth - 1600) / (1920 - 1600); + float charSize = baseCharSize * charSizeMultiplier; + + glPushMatrix(); + glLoadIdentity(); + glTranslated(x, y, 0); + + for (unsigned int i = 0; i < t.length(); ++i) { + float left = (float)((t[i] - 32) % 16) / 16.f; + float top = (float)((t[i] - 32) / 16) / 16.f; + top += 0.5f; + + glBegin(GL_QUADS); + glTexCoord2f(left, 1.f - top - .0625f); glVertex2f(0, 0); + glTexCoord2f(left + .0625f, 1.f - top - .0625f); glVertex2f(charSize, 0); + glTexCoord2f(left + .0625f, 1.f - top); glVertex2f(charSize, charSize); + glTexCoord2f(left, 1.f - top); glVertex2f(0, charSize); + glEnd(); + + glTranslated(0.5555f * charSize, 0, 0); + } + glPopMatrix(); +} + +int Engine::GetFps(float elapsedTime) const { return 1 / elapsedTime; } + +int Engine::GetCountdown(float elapsedTime) { + if (m_resetcountdown) { + m_nbReductionChunk = 4; + m_timerReductionChunk = 30; + m_countdown = m_time + COUNTDOWN; + m_resetcountdown = false; + } + if (m_countdown < m_time) + Stop(); + if (!m_stopcountdown) + m_time += elapsedTime; + return m_countdown - (int)m_time; +} + +int Engine::GetOptionsChoice() { + return m_selectedOption; +} + +void Engine::StartMultiplayerGame() { + char* ch = new char[2]; + + //std::cout << "Jouer en ligne? [o/N] "; + //std::cin.getline(ch, 2); + //std::cout << std::endl; + + char* input = new char[32]; + std::string playname, srvname; + + /*if (*ch == 'o' || *ch == 'O') { + char* input = new char[32]; + std::string playname, srvname; + + while (playname.size() < 1) { + std::cout << "Veuillez entrer un nom de joueur: "; + std::cin.getline(input, 32); + std::cout << std::endl; + playname = input; + if (playname.size() < 1 || playname.size() > 32) + std::puts("Nom invalide."); + } + while (srvname.size() < 1) { + std::cout << "Veuillez entrer une adresse de serveur: "; + std::cin.getline(input, 32); + std::cout << std::endl; + srvname = input; + if (srvname.size() < 1 || srvname.size() > 32) + std::puts("Adresse serveur invalide."); + } + delete[] input; + + + } + delete[] ch;*/ + + if (!m_conn.Init()) { + if (!m_conn.Connect(srvname.c_str(), playname)) { + // setup jeu en reseau. + std::cout << "ID recu du serveur: " << std::to_string(m_conn.getId()) << "!" << std::endl; + std::cout << "Seed recu du serveur: " << std::to_string(m_conn.getSeed()) << "!" << std::endl; + m_player = Player(m_conn.getOrigin().position); + + for (auto& [key, player] : m_conn.m_players) + m_players[key] = new RemotePlayer(player); + + //seed = m_conn.getSeed(); + m_networkgame = true; + } + else std::cout << "Erreur de connexion." << std::endl; + } + else std::cout << "Erreur de creation de socket." << std::endl; +} + +void Engine::DisplayInfo(float elapsedTime, BlockType bloc) { + m_textureFont.Bind(); + std::ostringstream ss; + + float marginX = Width() * 0.01; + float marginY = Height() * 0.05; + + float fPosX = marginX; + float fPosY = Height() - marginY; + + float charSize = 20 + (24 - 20) * (Width() - 1600) / (1920 - 1600); + + ss << " Fps : " << GetFps(elapsedTime); + PrintText(fPosX, fPosY, ss.str()); + ss.str(""); + fPosY -= charSize; + + ss << " Rendered Chunks : " << m_renderCount; + PrintText(fPosX, fPosY, ss.str()); + ss.str(""); + fPosY -= charSize; + + ss << " To-Be-Deleted Chunks : " << m_world.GettbDeleted(); + PrintText(fPosX, fPosY, ss.str()); + ss.str(""); + fPosY -= charSize; + + float fPosYJump = Height() * 0.09; + fPosY = fPosYJump; + fPosY -= charSize; + + ss << " Velocity : " << m_remotePlayer.GetVelocity(); + PrintText(fPosX, fPosY, ss.str()); + ss.str(""); + fPosY -= charSize; + + ss << " Player Position : " << m_player.GetPosition(); + PrintText(fPosX, fPosY, ss.str()); + ss.str(""); + fPosY -= charSize; + + ss << " Remote Position : " << m_remotePlayer.GetPosition();//m_player.GetPosition(); + PrintText(fPosX, fPosY, ss.str()); + ss.str(""); + fPosY -= charSize; + + ss << " Block : "; + if (bloc == BTYPE_LAST) + ss << "Weapon"; + else + ss << (int)bloc; + PrintText(fPosX, fPosYJump, ss.str()); +} + +void Engine::DisplaySplashScreen() { + glDisable(GL_LIGHTING); + glDisable(GL_DEPTH_TEST); + glDisable(GL_STENCIL_TEST); + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + glOrtho(-Width() / 2, Width() / 2, -Height() / 2, Height() / 2, -1, 1); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + + int imageWidth = Width(); + int imageHeight = Height(); + + m_textureSplashScreen.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(-imageWidth / 2, -imageHeight / 2); + glTexCoord2f(1, 0); glVertex2i(imageWidth / 2, -imageHeight / 2); + glTexCoord2f(1, 1); glVertex2i(imageWidth / 2, imageHeight / 2); + glTexCoord2f(0, 1); glVertex2i(-imageWidth / 2, imageHeight / 2); + glEnd(); + + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); +} + +void Engine::DisplayLobbyMenu() { + GLint viewport[4]; + glGetIntegerv(GL_VIEWPORT, viewport); + + glDisable(GL_STENCIL_TEST); + glDisable(GL_DEPTH_TEST); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBlendEquation(GL_FUNC_ADD); + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + + glLoadIdentity(); + glOrtho(0, Width(), 0, Height(), -1, 1); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + + m_textureLobbyMenu.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(0, 0); + glTexCoord2f(1, 0); glVertex2i(Width(), 0); + glTexCoord2f(1, 1); glVertex2i(Width(), Height()); + glTexCoord2f(0, 1); glVertex2i(0, Height()); + glEnd(); + + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + + glBindTexture(GL_TEXTURE_2D, 0); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(Width() * 0.6, Height() * 0.425); + glTexCoord2f(1, 0); glVertex2i(Width() * 0.95, Height() * 0.425); + glTexCoord2f(1, 1); glVertex2i(Width() * 0.95, Height() * 0.475); + glTexCoord2f(0, 1); glVertex2i(Width() * 0.6, Height() * 0.475); + glEnd(); + + glViewport(viewport[0], viewport[1], viewport[2], viewport[3]); + + glEnable(GL_STENCIL_TEST); + glEnable(GL_DEPTH_TEST); + + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); +} + +void Engine::DisplayMainMenu() { + GLint viewport[4]; + glGetIntegerv(GL_VIEWPORT, viewport); + + glDisable(GL_STENCIL_TEST); + glDisable(GL_DEPTH_TEST); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBlendEquation(GL_FUNC_ADD); + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + + glLoadIdentity(); + glOrtho(0, Width(), 0, Height(), -1, 1); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + + // Background + m_textureMainMenu.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0.0f, 0.0f); glVertex2f(0.0f, 0.0f); + glTexCoord2f(1.0f, 0.0f); glVertex2f(Width(), 0.0f); + glTexCoord2f(1.0f, 1.0f); glVertex2f(Width(), Height()); + glTexCoord2f(0.0f, 1.0f); glVertex2f(0.0f, Height()); + glEnd(); + + // Title + float centerX = Width() * 0.5f; + float centerY = Height() * 0.5f; + + glColor4f(1.0f, 0.5f, 0.0f, 1.0f); + m_textureMenuTitle.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0.0f, 0.0f); glVertex2f(centerX + Width() * 0.05, centerY + Height() * 0.05); + glTexCoord2f(1.0f, 0.0f); glVertex2f(centerX + Width() * 0.45, centerY + Height() * 0.05); + glTexCoord2f(1.0f, 1.0f); glVertex2f(centerX + Width() * 0.45, centerY + Height() * 0.45); + glTexCoord2f(0.0f, 1.0f); glVertex2f(centerX + Width() * 0.05, centerY + Height() * 0.45); + glEnd(); + + DrawButtonBackgrounds(centerX, centerY, 3); + + if (m_gamestate == GameState::MAIN_MENU) { + if (m_selectedPlayOptions) { + DrawSingleMultiButtons(centerX, centerY); + } + else { + DrawMainMenuButtons(centerX, centerY); + } + } + + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + + glViewport(viewport[0], viewport[1], viewport[2], viewport[3]); + + glEnable(GL_STENCIL_TEST); + glEnable(GL_DEPTH_TEST); + + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); + + ShowCursor(); +} + +void Engine::DrawMainMenuButtons(float centerX, float centerY) { + m_textureMenuPlay.Bind(); + glColor4f(0.75f, 0.05f, 0.0f, 1.0f); + glBegin(GL_QUADS); + glTexCoord2f(0.0f, 0.0f); glVertex2f(centerX + Width() * 0.16, centerY - Height() * 0.065); + glTexCoord2f(1.0f, 0.0f); glVertex2f(centerX + Width() * 0.34, centerY - Height() * 0.065); + glTexCoord2f(1.0f, 1.0f); glVertex2f(centerX + Width() * 0.34, centerY - Height() * 0.01); + glTexCoord2f(0.0f, 1.0f); glVertex2f(centerX + Width() * 0.16, centerY - Height() * 0.01); + glEnd(); + + m_textureMenuOptions.Bind(); + glColor4f(0.75f, 0.05f, 0.0f, 1.0f); + glBegin(GL_QUADS); + glTexCoord2f(0.0f, 0.0f); glVertex2f(centerX + Width() * 0.08, centerY - Height() * 0.165); + glTexCoord2f(1.0f, 0.0f); glVertex2f(centerX + Width() * 0.42, centerY - Height() * 0.165); + glTexCoord2f(1.0f, 1.0f); glVertex2f(centerX + Width() * 0.42, centerY - Height() * 0.11); + glTexCoord2f(0.0f, 1.0f); glVertex2f(centerX + Width() * 0.08, centerY - Height() * 0.11); + glEnd(); + + m_textureMenuQuit.Bind(); + glColor4f(0.75f, 0.05f, 0.0f, 1.0f); + glBegin(GL_QUADS); + glTexCoord2f(0.0f, 0.0f); glVertex2f(centerX + Width() * 0.16, centerY - Height() * 0.265); + glTexCoord2f(1.0f, 0.0f); glVertex2f(centerX + Width() * 0.34, centerY - Height() * 0.265); + glTexCoord2f(1.0f, 1.0f); glVertex2f(centerX + Width() * 0.34, centerY - Height() * 0.21); + glTexCoord2f(0.0f, 1.0f); glVertex2f(centerX + Width() * 0.16, centerY - Height() * 0.21); + glEnd(); +} + +void Engine::DrawSingleMultiButtons(float centerX, float centerY) { + m_textureMenuSingle.Bind(); + glColor4f(0.75f, 0.05f, 0.0f, 1.0f); + glBegin(GL_QUADS); + glTexCoord2f(0.0f, 0.0f); glVertex2f(centerX + Width() * 0.06, centerY - Height() * 0.065); + glTexCoord2f(1.0f, 0.0f); glVertex2f(centerX + Width() * 0.44, centerY - Height() * 0.065); + glTexCoord2f(1.0f, 1.0f); glVertex2f(centerX + Width() * 0.44, centerY - Height() * 0.01); + glTexCoord2f(0.0f, 1.0f); glVertex2f(centerX + Width() * 0.06, centerY - Height() * 0.01); + glEnd(); + + m_textureMenuMulti.Bind(); + glColor4f(0.75f, 0.05f, 0.0f, 1.0f); + glBegin(GL_QUADS); + glTexCoord2f(0.0f, 0.0f); glVertex2f(centerX + Width() * 0.08, centerY - Height() * 0.165); + glTexCoord2f(1.0f, 0.0f); glVertex2f(centerX + Width() * 0.42, centerY - Height() * 0.165); + glTexCoord2f(1.0f, 1.0f); glVertex2f(centerX + Width() * 0.42, centerY - Height() * 0.11); + glTexCoord2f(0.0f, 1.0f); glVertex2f(centerX + Width() * 0.08, centerY - Height() * 0.11); + glEnd(); + + m_textureMenuBack.Bind(); + glColor4f(0.75f, 0.05f, 0.0f, 1.0f); + glBegin(GL_QUADS); + glTexCoord2f(0.0f, 0.0f); glVertex2f(centerX + Width() * 0.16, centerY - Height() * 0.265); + glTexCoord2f(1.0f, 0.0f); glVertex2f(centerX + Width() * 0.34, centerY - Height() * 0.265); + glTexCoord2f(1.0f, 1.0f); glVertex2f(centerX + Width() * 0.34, centerY - Height() * 0.21); + glTexCoord2f(0.0f, 1.0f); glVertex2f(centerX + Width() * 0.16, centerY - Height() * 0.21); + glEnd(); +} + +void Engine::DrawButtonBackgrounds(float centerX, float centerY, int iterations) { + glColor4f(1.0f, 1.0f, 1.0f, 0.5f); + glBindTexture(GL_TEXTURE_2D, 0); + + float bottomOffset = 0.075f; + float topOffset = 0.0f; + float distanceBetween = 0.1f; + + for (int i = 0; i < iterations; i++) { + glBegin(GL_QUADS); + glTexCoord2f(0.0f, 0.0f); glVertex2f(centerX + Width() * 0.05, centerY - Height() * bottomOffset); + glTexCoord2f(1.0f, 0.0f); glVertex2f(centerX + Width() * 0.45, centerY - Height() * bottomOffset); + glTexCoord2f(1.0f, 1.0f); glVertex2f(centerX + Width() * 0.45, centerY - Height() * topOffset); + glTexCoord2f(0.0f, 1.0f); glVertex2f(centerX + Width() * 0.05, centerY - Height() * topOffset); + glEnd(); + + bottomOffset += distanceBetween; + topOffset += distanceBetween; + } +} + +void Engine::DisplayOptionsMenu() { + static const int sTitle = 400; + static const int sButton = 225; + + float centerX = Width() * 0.5f; + float centerY = Height() * 0.5f; + + GLint viewport[4]; + glGetIntegerv(GL_VIEWPORT, viewport); + + glDisable(GL_STENCIL_TEST); + glDisable(GL_DEPTH_TEST); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBlendEquation(GL_FUNC_ADD); + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + glOrtho(0, Width(), 0, Height(), -1, 1); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + + m_textureOptionsMenu.Bind(); + glLoadIdentity(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(0, 0); + glTexCoord2f(1, 0); glVertex2i(Width(), 0); + glTexCoord2f(1, 1); glVertex2i(Width(), Height()); + glTexCoord2f(0, 1); glVertex2i(0, Height()); + glEnd(); + + glColor4f(1.0f, 0.0f, 1.0f, 1.0f); + m_textureOptOptions.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.175, centerY + Height() * 0.35); + glTexCoord2f(1, 0); glVertex2i(centerX + Width() * 0.175, centerY + Height() * 0.35); + glTexCoord2f(1, 1); glVertex2i(centerX + Width() * 0.175, centerY + Height() * 0.45); + glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.175, centerY + Height() * 0.45); + glEnd(); + + if (m_selectedOption == 0) { + glColor4f(0.5f, 1.0f, 0.0f, 1.0f); + } + m_textureOptAudio.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.35, centerY + Height() * 0.2); + glTexCoord2f(1, 0); glVertex2i(centerX - Width() * 0.2, centerY + Height() * 0.2); + glTexCoord2f(1, 1); glVertex2i(centerX - Width() * 0.2, centerY + Height() * 0.25); + glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.35, centerY + Height() * 0.25); + glEnd(); + + glColor4f(1.0f, 0.0f, 1.0f, 1.0f); + if (m_selectedOption == 1) { + glColor4f(0.5f, 1.0f, 0.0f, 1.0f); + } + m_textureOptGraphics.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.4, centerY + Height() * 0.05); + glTexCoord2f(1, 0); glVertex2i(centerX - Width() * 0.2, centerY + Height() * 0.05); + glTexCoord2f(1, 1); glVertex2i(centerX - Width() * 0.2, centerY + Height() * 0.1); + glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.4, centerY + Height() * 0.1); + glEnd(); + + glColor4f(1.0f, 0.0f, 1.0f, 1.0f); + if (m_selectedOption == 2) { + glColor4f(0.5f, 1.0f, 0.0f, 1.0f); + } + m_textureOptGameplay.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.375, centerY - Height() * 0.1); + glTexCoord2f(1, 0); glVertex2i(centerX - Width() * 0.2, centerY - Height() * 0.1); + glTexCoord2f(1, 1); glVertex2i(centerX - Width() * 0.2, centerY - Height() * 0.05); + glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.375, centerY - Height() * 0.05); + glEnd(); + + // Séparateur + glColor4f(0.0f, 0.0f, 0.0f, 1.0f); + glBindTexture(GL_TEXTURE_2D, 0); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.175, centerY - Height() * 0.1); + glTexCoord2f(1, 0); glVertex2i(centerX - Width() * 0.18, centerY - Height() * 0.1); + glTexCoord2f(1, 1); glVertex2i(centerX - Width() * 0.18, centerY + Height() * 0.25); + glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.175, centerY + Height() * 0.25); + glEnd(); + + glColor4f(1.0f, 0.0f, 1.0f, 1.0f); + m_textureOptBack.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.075, centerY - Height() * 0.25); + glTexCoord2f(1, 0); glVertex2i(centerX + Width() * 0.075, centerY - Height() * 0.25); + glTexCoord2f(1, 1); glVertex2i(centerX + Width() * 0.075, centerY - Height() * 0.2); + glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.075, centerY - Height() * 0.2); + glEnd(); + + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + + if (m_selectedOption == 0) { + DisplayAudioMenu(centerX, centerY); + } + else if (m_selectedOption == 1) { + DisplayGraphicsMenu(centerX, centerY); + } + else if (m_selectedOption == 2) { + DisplayGameplayMenu(centerX, centerY); + } + + glViewport(viewport[0], viewport[1], viewport[2], viewport[3]); + + glEnable(GL_STENCIL_TEST); + glEnable(GL_DEPTH_TEST); + + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); +} + +void Engine::DisplayAudioMenu(float centerX, float centerY) { + float minBar = centerX - Width() * 0.15; + float maxBar = centerX + Width() * 0.3; + float percentPosX = centerX + Width() * 0.31f; + + glColor4f(1.0f, 1.0f, 0.0f, 1.0f); + m_textureOptMain.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.215); + glTexCoord2f(1, 0); glVertex2i(centerX - Width() * 0.075, centerY + Height() * 0.215); + glTexCoord2f(1, 1); glVertex2i(centerX - Width() * 0.075, centerY + Height() * 0.25); + glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.25); + glEnd(); + + float principalBottom = centerY + Height() * 0.165f; + float principalTop = centerY + Height() * 0.2f; + + DrawSliderBackground(centerX, centerY, minBar, maxBar, principalBottom, principalTop); + DrawSlider(centerX, centerY, m_volPrincipal, minBar, maxBar, principalBottom, principalTop); + DisplayBarPercentValue(centerX, centerY, percentPosX, principalBottom, minBar, maxBar, m_volPrincipal); + + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBlendEquation(GL_FUNC_ADD); + + glColor4f(1.0f, 1.0f, 0.0f, 1.0f); + m_textureOptMusic.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.09); + glTexCoord2f(1, 0); glVertex2i(centerX - Width() * 0.05, centerY + Height() * 0.09); + glTexCoord2f(1, 1); glVertex2i(centerX - Width() * 0.05, centerY + Height() * 0.125); + glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.125); + glEnd(); + + float musiqueBottom = centerY + Height() * 0.04f; + float musiqueTop = centerY + Height() * 0.075f; + + DrawSliderBackground(centerX, centerY, minBar, maxBar, musiqueBottom, musiqueTop); + DrawSlider(centerX, centerY, m_volMusique, minBar, maxBar, musiqueBottom, musiqueTop); + DisplayBarPercentValue(centerX, centerY, percentPosX, musiqueBottom, minBar, maxBar, m_volMusique); + + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBlendEquation(GL_FUNC_ADD); + + glColor4f(1.0f, 1.0f, 0.0f, 1.0f); + m_textureOptSfx.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.15, centerY - Height() * 0.035); + glTexCoord2f(1, 0); glVertex2i(centerX - Width() * 0.075, centerY - Height() * 0.035); + glTexCoord2f(1, 1); glVertex2i(centerX - Width() * 0.075, centerY - Height() * 0.00001); + glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.15, centerY - Height() * 0.00001); + glEnd(); + + float effectsBottom = centerY - Height() * 0.085f; + float effectsTop = centerY - Height() * 0.05f; + + DrawSliderBackground(centerX, centerY, minBar, maxBar, effectsBottom, effectsTop); + DrawSlider(centerX, centerY, m_volEffets, minBar, maxBar, effectsBottom, effectsTop); + DisplayBarPercentValue(centerX, centerY, percentPosX, effectsBottom, minBar, maxBar, m_volEffets); + + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); +} + +void Engine::DisplayGraphicsMenu(float centerX, float centerY) { + glColor4f(1.0f, 1.0f, 0.0f, 1.0f); + m_textureOptResolution.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.215); + glTexCoord2f(1, 0); glVertex2i(centerX, centerY + Height() * 0.215); + glTexCoord2f(1, 1); glVertex2i(centerX, centerY + Height() * 0.25); + glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.25); + glEnd(); + + glColor4f(1.0f, 1.0f, 1.0f, 0.5f); + glBindTexture(GL_TEXTURE_2D, 0); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.16, centerY + Height() * 0.165); + glTexCoord2f(1, 0); glVertex2i(centerX + Width() * 0.1, centerY + Height() * 0.165); + glTexCoord2f(1, 1); glVertex2i(centerX + Width() * 0.1, centerY - Height() * 0.04); + glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.16, centerY - Height() * 0.04); + glEnd(); + + glColor4f(0.0f, 0.0f, 0.0f, 1.0f); + m_textureHd.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.125); + glTexCoord2f(1, 0); glVertex2i(centerX + Width() * 0.05, centerY + Height() * 0.125); + glTexCoord2f(1, 1); glVertex2i(centerX + Width() * 0.05, centerY + Height() * 0.15); + glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.15); + glEnd(); + + m_textureFhd.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.075); + glTexCoord2f(1, 0); glVertex2i(centerX, centerY + Height() * 0.075); + glTexCoord2f(1, 1); glVertex2i(centerX, centerY + Height() * 0.1); + glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.1); + glEnd(); + + m_textureQhd.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.025); + glTexCoord2f(1, 0); glVertex2i(centerX, centerY + Height() * 0.025); + glTexCoord2f(1, 1); glVertex2i(centerX, centerY + Height() * 0.05); + glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.05); + glEnd(); + + m_textureUhd.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.15, centerY - Height() * 0.025); + glTexCoord2f(1, 0); glVertex2i(centerX + Width() * 0.015, centerY - Height() * 0.025); + glTexCoord2f(1, 1); glVertex2i(centerX + Width() * 0.015, centerY); + glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.15, centerY); + glEnd(); + + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + + float heightRatioBottom = 0.125f; + float heightRatioTop = 0.15; + + // Checkboxes + for (int i = 0; i < 4; i++) { + if (static_cast(m_resolution) == i) { + m_textureChecked.Bind(); + } + else { + m_textureCheck.Bind(); + } + + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(centerX + Width() * 0.075, centerY + Height() * heightRatioBottom); + glTexCoord2f(1, 0); glVertex2i(centerX + Width() * 0.09, centerY + Height() * heightRatioBottom); + glTexCoord2f(1, 1); glVertex2i(centerX + Width() * 0.09, centerY + Height() * heightRatioTop); + glTexCoord2f(0, 1); glVertex2i(centerX + Width() * 0.075, centerY + Height() * heightRatioTop); + glEnd(); + + heightRatioBottom -= 0.05f; + heightRatioTop -= 0.05f; + } + + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); +} + +void Engine::Render(float elapsedTime) { + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); + + if (m_gamestate == GameState::SPLASH) { + if (m_splashTime > 0.0f) { + DisplaySplashScreen(); + } + else { + m_gamestate = GameState::MAIN_MENU; + } + + m_splashTime -= elapsedTime; + return; + } + + if (m_gamestate == GameState::MAIN_MENU) { + DisplayMainMenu(); + return; + } + + if (m_gamestate == GameState::OPTIONS) { + DisplayOptionsMenu(); + return; + } + + if (m_gamestate == GameState::LOBBY) { + DisplayLobbyMenu(); + return; + } + + if (m_gamestate == GameState::PLAY) { + HideCursor(); + CenterMouse(); //D�placement de centermouse dans l'action de jouer + + //static float gameTime = elapsedTime; + static irrklang::ISound* step; // Pour les sons de pas. + static float pollTime = 0; + static float bulletTime = 0; + static float gameTime = 0; + static BlockType bloc = 1; + + if (elapsedTime > 0.1f) return; + + //gameTime += elapsedTime; + pollTime += elapsedTime; + + Transformation all; + Transformation skybox; + Transformation remotePlayer; + + Vector3f vstep; + + // Transformations initiales + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + if (bulletTime > 0.f) bulletTime -= elapsedTime; + if (bulletTime < 0.f) bulletTime = 0.f; + + static bool leftright = false; + if (pollTime >= .005f) { + Player::Sound snd = m_player.ApplyPhysics(m_player.GetInput(m_keyW, m_keyS, m_keyA, m_keyD, m_keySpace, (bloc == BTYPE_LAST && bulletTime <= 0.f && m_mouseL), elapsedTime), &m_world, elapsedTime); + switch (snd) { + case Player::Sound::STEP: + if (leftright) + vstep = Vector3f(m_player.GetPosition().x + m_player.GetDirection().z, m_player.GetPosition().y - 1.7f, m_player.GetPosition().z + m_player.GetDirection().x); + else vstep = Vector3f(m_player.GetPosition().x - m_player.GetDirection().z, m_player.GetPosition().y - 1.7f, m_player.GetPosition().z - m_player.GetDirection().x); + m_audio.Create3DAudioObj(step, AUDIO_PATH "step.wav", vstep, m_player.GetVelocity(), false, .8f); + leftright = !leftright; + break; + case Player::Sound::FALL: + m_audio.Create3DAudioObj(step, AUDIO_PATH "hit.wav", m_player.GetPosition(), m_player.GetVelocity(), false, 1.f); + break; + default: break; + } + m_audio.Update3DAudio(m_player.GetPOV(), m_player.GetDirection(), m_player.GetVelocity()); // Ajustement du positionnement 3D avec les coordonnees du joueur et + // son vecteur de velocite (pour l'effet Doppler) + pollTime = 0; + } + + m_player.ApplyTransformation(all); + + m_player.ApplyTransformation(skybox, false); // Version d'ApplyTransformation qui ne tient compte que de la rotation + // (donc l'objet ne bouge pas relativement au joueur, ce qui est pratique pour une skybox!). + + m_player.ApplyTransformation(remotePlayer, true, false); + + 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. + m_mouseWU = m_mouseWD = m_key1 = m_key2 = false; + + if (m_mouseL) { + if (bloc != BTYPE_LAST) + m_world.ChangeBlockAtCursor(bloc, m_player.GetPosition(), m_player.GetDirection(), m_block); + 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) + m_world.ChangeBlockAtCursor(BTYPE_AIR, m_player.GetPosition(), m_player.GetDirection(), m_block); + + for (int x = 0; x < MAX_BULLETS; ++x) { // Array de bullets en jeu. + if (m_bullets[x]) { + for (int b = 0; b < BULLET_UPDATES_PER_FRAME; ++b) { + if (m_bullets[x]->Update(&m_world, elapsedTime, BULLET_UPDATES_PER_FRAME, m_players)) { + m_bullets[x]->~Bullet(); + if (m_whoosh[x]) + m_whoosh[x]->drop(); + m_bullets[x] = nullptr; + m_whoosh[x] = nullptr; + break; + } + else if (!m_whoosh[x]) { + m_whoosh[x] = m_audio.Create3DAudioObj(m_whoosh[x], AUDIO_PATH "noise.wav", m_bullets[x]->getPos(), m_bullets[x]->getVel(), true, (m_bullets[x]->getPos() - m_player.GetPosition()).Length()); + } + else { + Vector3f pos = m_bullets[x]->getPos(), vel = m_bullets[x]->getVel(); + m_audio.Render3DAudioObj(m_whoosh[x], pos, vel, 5 - (m_bullets[x]->getPos() - m_player.GetPosition()).Length()); + } + } + } + } + + gameTime += elapsedTime * 10; + + Vector3f dance = Vector3f(sin(gameTime), 0, cos(-gameTime)); + dance.Normalize(); + m_remotePlayer.ApplyPhysics(dance, &m_world, elapsedTime); + m_world.Update(m_bullets, m_player.GetPosition(), m_blockinfo); + m_renderer.UpdateMesh(&m_world, m_player.GetPosition(), m_blockinfo); + m_remotePlayer.Render(m_animeAtlas, m_shader01, all, elapsedTime); + m_booster.RenderBillboard({ 195,16,195 }, m_textureAtlas, m_shader01, all); + + if (m_isSkybox) m_renderer.RenderWorld(&m_world, m_renderCount, m_player.GetPosition(), m_player.GetDirection(), all, m_shader01, m_textureAtlas); + + //glClear(GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); + //m_remotePlayer.Render(m_textureAtlas, m_shader01, all, elapsedTime); + + m_renderer.RenderWorld(&m_world, m_renderCount, m_player.GetPosition(), m_player.GetDirection(), all, m_shader01, m_textureAtlas); + + if (m_isSkybox) m_skybox.Render(skybox); + + DrawHud(elapsedTime, bloc); + DisplayPovGun(); + ProcessNotificationQueue(); + if (m_damage) { + InstantDamage(); + } + static bool fell = false; + if (m_player.GetPosition().y < 1.7f && !fell) { + m_audio.Create3DAudioObj(m_scream, AUDIO_PATH "scream.wav", m_player.GetPOV(), m_player.GetVelocity(), false, 1.f); + fell = true; + } + else if (m_player.GetPosition().y < -20.f) { + m_player = Player(Vector3f(.5f, CHUNK_SIZE_Y + 1.8f, .5f)); // Respawn si le bonho- joueur tombe en bas du monde. + fell = false; + } + + if (m_networkgame) { // Pour se gerer le paquet. + using namespace std::chrono; + using namespace netprot; + Timestamp tstamp = duration_cast(high_resolution_clock::now() - m_startTime).count(); + Input input; + Sync sync; + uint64_t id = m_conn.getId(); + static std::vector lsPck; + + if (false) { // TODO: Faire un checkup pour chaque ~1000ms. + sync.sid = id; + sync.timestamp = tstamp; + sync.position = m_player.GetPosition(); + sync.hp = m_player.GetHP(); + // TODO: Garrocher ca quelque-part. + } + + input.sid = id; + input.direction = m_player.GetDirection(); + input.timestamp = tstamp; + input.keys.forward = m_keyW; + input.keys.backward = m_keyS; + input.keys.left = m_keyA; + input.keys.right = m_keyD; + input.keys.jump = m_keySpace; + input.keys.block = m_mouseR; + input.keys.shoot = m_mouseL; + + sendPackTo(m_conn.m_sock_udp, &input, &m_bufout, &m_conn.m_srvsockaddr); + + lsPck = recvPacks(m_conn.m_sock_udp, &m_buf); + char* prevptr = nullptr; + for (auto& pck : lsPck) { // We could make a few threads out of this. + Sync sync; + Output out; + if (!prevptr) + prevptr = m_buf.ptr; + uint32_t bsize = m_buf.len - (pck - prevptr); + prevptr = pck; + switch (getType(pck, 1)) { + using enum PACKET_TYPE; + case SYNC: + if (Deserialize(&sync, pck, &bsize)) { + if (sync.sid != m_conn.getId()) + break; + // TODO: Vérifier si les positions concordent au sync local. + } + break; + case OUTPUT: + if (Deserialize(&out, pck, &bsize)) { + RemotePlayer* r = (RemotePlayer*)m_players[out.id]; + r->Feed(out); + } + break; + default: + break; + } + } + lsPck.clear(); + } + } +} + +void Engine::DisplayGameplayMenu(float centerX, float centerY) { + float minBar = centerX - Width() * 0.15; + float maxBar = centerX + Width() * 0.3; + float percentPosX = centerX + Width() * 0.31f; + + glColor4f(1.0f, 1.0f, 0.0f, 1.0f); + m_textureOptSensitivity.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.215); + glTexCoord2f(1, 0); glVertex2i(centerX, centerY + Height() * 0.215); + glTexCoord2f(1, 1); glVertex2i(centerX, centerY + Height() * 0.25); + glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.25); + glEnd(); + + float sensibleBottom = centerY + Height() * 0.165f; + float sensibleTop = centerY + Height() * 0.2f; + + DrawSliderBackground(centerX, centerY, minBar, maxBar, sensibleBottom, sensibleTop); + DrawSlider(centerX, centerY, m_volSensible, minBar, maxBar, sensibleBottom, sensibleTop); + DisplayBarPercentValue(centerX, centerY, percentPosX, sensibleBottom, minBar, maxBar, m_volSensible); + + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); +} + +void Engine::DrawSliderBackground(float centerX, float centerY, float minVal, float maxVal, float bottomSideValue, float topSideValue) { + glColor4f(0.0f, 0.0f, 0.0f, 1.0f); + glBindTexture(GL_TEXTURE_2D, 0); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(minVal, bottomSideValue); + glTexCoord2f(1, 0); glVertex2i(maxVal, bottomSideValue); + glTexCoord2f(1, 1); glVertex2i(maxVal, topSideValue); + glTexCoord2f(0, 1); glVertex2i(minVal, topSideValue); + glEnd(); +} + +void Engine::DisplayBarPercentValue(float centerX, float centerY, float posX, float posY, float minVal, float maxVal, float value) { + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE); + + float percentage = (value / (maxVal - minVal)) * 100; + + if (percentage < 0.0f) { + percentage = 0.0f; + } + else if (percentage > 100.0f) { + percentage = 100.0f; + } + + m_textureFont.Bind(); + std::ostringstream ss; + ss.str(""); + ss << std::fixed << std::setprecision(2); + ss << percentage << "%"; + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + PrintText(posX, posY, ss.str(), 2.0f); + + glDisable(GL_BLEND); +} + +void Engine::DrawSlider(float centerX, float centerY, float value, float minVal, float maxVal, float bottomSideValue, float topSideValue) { + if (value < 0.0f) { + value = 0.0f; + } + else if (value > (maxVal - minVal)) { + value = (maxVal - minVal); + } + + if (value >= 0.0f && value <= (maxVal - minVal)) { + glColor4f(0.0f, 1.0f, 0.0f, 1.0f); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(minVal, bottomSideValue); + glTexCoord2f(1, 0); glVertex2i(minVal + value, bottomSideValue); + glTexCoord2f(1, 1); glVertex2i(minVal + value, topSideValue); + glTexCoord2f(0, 1); glVertex2i(minVal, topSideValue); + glEnd(); + } +} + + + +void Engine::KeyPressEvent(unsigned char key) { + switch (key) { + case 0: // A - Gauche + if (!m_keyA) { + m_keyA = true; + } + break; + case 3: // D - Droite + if (!m_keyD) { + m_keyD = true; + } + break; + case 18: // S - Reculer + if (!m_keyS) { + m_keyS = true; + } + break; + case 22: // W - Avancer + if (!m_keyW) { + m_keyW = true; + } + break; + case 36: // ESC - Quitter + if (m_gamestate == GameState::PLAY) { + m_gamestate = GameState::PAUSE; + } + else if (m_gamestate == GameState::PAUSE) { + m_gamestate = GameState::PLAY; + } + //Stop(); + break; + case 57: // Space - Sauter + if (!m_keySpace) { + m_keySpace = true; + } + break; + case 94: // F10 - Plein �cran + IsFullscreen() ? SetFullscreen(false) : SetFullscreen(true); + //SetFullscreen(!IsFullscreen()); + break; + case 2: // C - Ignorer + break; + case 5: // F - Ignorer + break; + case 10: // K - Debugging DisplayNotification() + m_keyK = true; + m_messageNotification = "notifications systeme peuvent etre affichees"; + break; + case 11: // L - Debugging DisplayNotification() + m_keyL = true; + break; + case 6: // G - Ignorer + break; + case 12: // M - Ignorer + break; + case 7: // H - Ignorer + break; + case 8: // I - Ignorer + break; + case 9: // J - InstantDamage + m_damage = true; + case 15: // P - Ignorer + break; + case 17: // R - Ignorer + break; + case 19: // T - Ignorer + break; + case 24: // Y - Ignorer + break; + case 27: // 1 + break; + case 28: // 2 + break; + case 255: // Fn - Ignorer + break; + default: + std::cout << "Unhandled key: " << (int)key << std::endl; + } +} + +void Engine::KeyReleaseEvent(unsigned char key) { + switch (key) { + case 0: // A - Stop gauche + m_keyA = false; + break; + case 2: // C - Toggle crosshair + m_displayCrosshair = !m_displayCrosshair; + break; + case 3: // D - Stop droite + m_keyD = false; + break; + case 5: // F - Toggle flash + m_flash = !m_flash; + break; + case 6: // G - Toggle Stop Countdown + m_stopcountdown = !m_stopcountdown; + std::cout << "STOP COUNTDOWN " << (m_stopcountdown ? "enabled" : "disabled") << std::endl; + break; + case 7: // H - Toggle HUD + m_displayHud = !m_displayHud; + std::cout << "DISPLAY HUD " << (m_displayHud ? "enabled" : "disabled") << std::endl; + break; + case 8: // I - Toggle render data + m_displayInfo = !m_displayInfo; + std::cout << "DISPLAY INFO " << (m_displayInfo ? "enabled" : "disabled") << std::endl; + break; + case 10: // K + m_keyK = false; + break; + case 11: // L - Debugging DisplayNotification() + m_keyL = false; + break; + case 12: // M - Toggle music + m_audio.ToggleMusicState(); + break; + case 15: + 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() - Vector3f(1.f, 0.f, 1.f), Vector3f(1.f, 0.f, 1.f)); + 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() - Vector3f(1.f, 0.f, 1.f), Vector3f(1.f, 0.f, 1.f)); + } + break; + case 17: // R - Toggle skybox + m_isSkybox = !m_isSkybox; + break; + case 18: // S - Stop reculer + m_keyS = false; + break; + case 19: // T -Reset countdown + m_resetcountdown = true; + std::cout << "RESET COUNTDOWN" << std::endl; + break; + case 22: // W - Stop avancer + m_keyW = false; + break; + case 24: // Y - Wireframe + m_wireframe = !m_wireframe; + if (m_wireframe) + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + else + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + break; + case 27: // 1 + m_key1 = true; + break; + case 28: // 2 + m_key2 = true; + break; + case 57: // Espace - Stop sauter + m_keySpace = false; + break; + } +} + +void Engine::MouseMoveEvent(int x, int y) { + if (m_gamestate == GameState::PLAY) { + m_player.TurnLeftRight(x - (Width() / 2)); + m_player.TurnTopBottom(y - (Height() / 2)); + + // Centrer la souris seulement si elle n'est pas d�j� centr�e + // Il est n�cessaire de faire la v�rification pour �viter de tomber + // dans une boucle infinie o� l'appel � CenterMouse g�n�re un + // MouseMoveEvent, qui rapelle CenterMouse qui rapelle un autre + // MouseMoveEvent, etc + if (x == (Width() / 2) && y == (Height() / 2)) + return; + } + else if (m_gamestate == GameState::MAIN_MENU) { + DisplayMainMenu(); + } + else if (m_gamestate == GameState::OPTIONS) { + float centerX = Width() * 0.5f; + float centerY = Height() * 0.5f; + float leftBar = centerX - Width() * 0.15f; + float rightBar = centerX + Width() * 0.3f; + + if (m_selectedOption == 0 && m_selectedOptAudioMainBar) { + m_volPrincipal = x - leftBar; + } + else if (m_selectedOption == 0 && m_selectedOptAudioMusicBar) { + m_volMusique = x - leftBar; + } + else if (m_selectedOption == 0 && m_selectedOptAudioSfxBar) { + m_volEffets = x - leftBar; + } + else if (m_selectedOption == 2 && m_selectedGameplaySensitivityBar) { + m_volSensible = x - leftBar; + } + } +} + +void Engine::MousePressEvent(const MOUSE_BUTTON& button, int x, int y) { + m_mousemx = x; + m_mousemy = y; + float centerX = Width() * 0.5f; + float centerY = Height() * 0.5f; + + if (m_gamestate == GameState::PLAY) { + switch (button) { + case MOUSE_BUTTON_LEFT: + m_mouseL = true; + break; + case MOUSE_BUTTON_RIGHT: + m_mouseR = true; + break; + case MOUSE_BUTTON_MIDDLE: + m_mouseC = true; + break; + case MOUSE_BUTTON_WHEEL_UP: + m_mouseWU = true; + break; + case MOUSE_BUTTON_WHEEL_DOWN: + m_mouseWD = true; + break; + case MOUSE_BUTTON_NONE: break; + } + } + else if (m_gamestate == GameState::MAIN_MENU) { + + float leftButton = centerX + Width() * 0.045f; + float rightButton = centerX + Width() * 0.4455f; + + float topFirst = centerY + Height() * 0.073f; + float bottomFirst = centerY; + + float topSecond = centerY + Height() * 0.177f; + float bottomSecond = centerY + Height() * 0.105f; + + float topThird = centerY + Height() * 0.275f; + float bottomThird = centerY + Height() * 0.198f; + + if (x > leftButton && x < rightButton && y > bottomFirst && y < topFirst) { + if (m_selectedPlayOptions) { + m_gamestate = GameState::PLAY; + } + else { + m_selectedPlayOptions = true; + } + } + else if (x > leftButton && x < rightButton && y > bottomSecond && y < topSecond) { + if (m_selectedPlayOptions) { + m_gamestate = GameState::LOBBY; + StartMultiplayerGame(); + } + else { + m_gamestate = GameState::OPTIONS; + } + } + else if (x > leftButton && x < rightButton && y > bottomThird && y < topThird) { + if (m_selectedPlayOptions) { + m_selectedPlayOptions = false; + } + else { + m_gamestate = GameState::QUIT; + } + } + } + else if (m_gamestate == GameState::OPTIONS) { + float leftAudio = centerX - Width() * 0.35f; + float rightAudio = centerX - Width() * 0.2f; + float topAudio = (Height() * 0.25f) + ((Height() * 0.25f) - (Height() * 0.2f)); + float bottomAudio = (Height() * 0.2f) + ((Height() * 0.25f) - (Height() * 0.2f)); + + float leftGraph = centerX - Width() * 0.4f; + float rightGraph = centerX - Width() * 0.2f; + float topGraph = centerY - Height() * 0.05f; + float bottomGraph = centerY - Height() * 0.1f; + + float leftGameplay = centerX - Width() * 0.375f; + float rightGameplay = centerX - Width() * 0.2f; + float topGameplay = centerY + Height() * 0.1f; + float bottomGameplay = centerY + Height() * 0.05f; + + float leftBack = centerX - Width() * 0.075f; + float rightBack = centerX + Width() * 0.075f; + float topBack = centerY + Height() * 0.25f; + float bottomBack = centerY + Height() * 0.2f; + + if (x > leftAudio && x < rightAudio && y > bottomAudio && y < topAudio) { + m_selectedOption = 0; // Volume + } + else if (x > leftGraph && x < rightGraph && y > bottomGraph && y < topGraph) { + m_selectedOption = 1; // Graphics + } + else if (x > leftGameplay && x < rightGameplay && y > bottomGameplay && y < topGameplay) { + m_selectedOption = 2; // Gameplay + } + else if (x > leftBack && x < rightBack && y > bottomBack && y < topBack) { + m_gamestate = GameState::MAIN_MENU; + } + + // Audio + float leftBar = centerX - Width() * 0.15f; + float rightBar = centerX + Width() * 0.3f; + + float topBarPrincipal = centerY - Height() * 0.165f; + float bottomBarPrincipal = centerY - Height() * 0.2f; + + float topBarMusique = centerY - Height() * 0.0415f; + float bottomBarMusique = centerY - Height() * 0.075f; + + float topBarEffets = centerY + Height() * 0.085f; + float bottomBarEffets = centerY + Height() * 0.05f; + + if (m_selectedOption == 0 && x > leftBar && x < rightBar && y > bottomBarPrincipal && y < topBarPrincipal) { + m_volPrincipal = x - leftBar; + m_selectedOptAudioMainBar = true; + } + else if (m_selectedOption == 0 && x > leftBar && x < rightBar && y > bottomBarMusique && y < topBarMusique) { + m_volMusique = x - leftBar; + m_selectedOptAudioMusicBar = true; + } + else if (m_selectedOption == 0 && x > leftBar && x < rightBar && y > bottomBarEffets && y < topBarEffets) { + m_volEffets = x - leftBar; + m_selectedOptAudioSfxBar = true; + } + + // Resolution + float leftChk = centerX + Width() * 0.075f; + float rightChk = centerX + Width() * 0.09f; + + float topChkHD = centerY - Height() * 0.125f; + float bottomChkHD = centerY - Height() * 0.155f; + + float topChkFHD = centerY - Height() * 0.0725f; + float bottomChkFHD = centerY - Height() * 0.1f; + + float topChkQHD = centerY - Height() * 0.025f; + float bottomChkQHD = centerY - Height() * 0.05f; + + float topChkUHD = centerY + Height() * 0.025f; + float bottomChkUHD = centerY; + + if (m_selectedOption == 1 && leftChk && x < rightChk && y > bottomChkHD && y < topChkHD) { + m_resolution = HD; + } + else if (m_selectedOption == 1 && x > leftChk && x < rightChk && y > bottomChkFHD && y < topChkFHD) { + m_resolution = FHD; + } + else if (m_selectedOption == 1 && x > leftChk && x < rightChk && y > bottomChkQHD && y < topChkQHD) { + m_resolution = QHD; + } + else if (m_selectedOption == 1 && x > leftChk && x < rightChk && y > bottomChkUHD && y < topChkUHD) { + m_resolution = UHD; + } + + // Gameplay + if (m_selectedOption == 2 && x > leftBar && x < rightBar && y > bottomBarPrincipal && y < topBarPrincipal) { + m_volSensible = x - leftBar; + m_selectedGameplaySensitivityBar = true; + } + } +} + +void Engine::MouseReleaseEvent(const MOUSE_BUTTON& button, int x, int y) { + switch (button) { + case MOUSE_BUTTON_LEFT: + m_mouseL = false; + m_block = false; + m_selectedOptAudioMainBar = false; + m_selectedOptAudioMusicBar = false; + m_selectedOptAudioSfxBar = false; + m_selectedGameplaySensitivityBar = false; + break; + case MOUSE_BUTTON_RIGHT: + m_mouseR = false; + m_block = false; + break; + case MOUSE_BUTTON_MIDDLE: + m_mouseC = false; + break; + case MOUSE_BUTTON_WHEEL_UP: + m_mouseWU = false; + break; + case MOUSE_BUTTON_WHEEL_DOWN: + m_mouseWD = false; + break; + case MOUSE_BUTTON_NONE: break; + } +} + +bool Engine::LoadTexture(Texture& texture, const std::string& filename, bool useMipmaps, bool stopOnError) { + texture.Load(filename, useMipmaps); + if (!texture.IsValid()) { + std::cerr << "Unable to load texture (" << filename << ")" << std::endl; + if (stopOnError) + Stop(); + + return false; + } + + return true; +} + + From 176204375772985ecb9d2078c3d027f095f7c8bd Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 13:23:33 -0500 Subject: [PATCH 17/82] =?UTF-8?q?Bonne=20id=C3=A9e.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQCSim-common/player.h | 2 +- SQCSim-srv/connection.cpp | 5 +++++ SQCSim-srv/server.cpp | 26 +++++++++++++++++--------- SQCSim2021/engine.cpp | 19 +++++++++---------- 4 files changed, 32 insertions(+), 20 deletions(-) diff --git a/SQCSim-common/player.h b/SQCSim-common/player.h index ece5699..7503105 100644 --- a/SQCSim-common/player.h +++ b/SQCSim-common/player.h @@ -40,6 +40,7 @@ public: int getScore() const; void addPoint(); uint64_t Killer = 0; + std::string m_username; private: uint64_t getId() const; @@ -49,7 +50,6 @@ protected: Vector3f m_velocity; Vector3f m_direction; - std::string m_username; uint64_t id = 0; int m_score = 0; diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp index b41dff2..bf33ddd 100644 --- a/SQCSim-srv/connection.cpp +++ b/SQCSim-srv/connection.cpp @@ -118,6 +118,11 @@ Timestamp Connection::Run(World* world) { if (m_input_manifest.size() < 2) return tstamp; + if (player->AmIDead()) { + m_input_manifest.clear(); + return tstamp; + } + while (m_last_in < m_input_vector.size() - 1) { in = m_input_vector.at(m_last_in + 1); last = m_input_vector.at(m_last_in); diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index f277f12..bc33f34 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -203,6 +203,7 @@ void Server::Run() { int x = 0,// (rand() % (CHUNK_SIZE_X * WORLD_SIZE_X - 1)),// -(CHUNK_SIZE_X * WORLD_SIZE_X / 2), y = 0;// (rand() % (CHUNK_SIZE_Y * WORLD_SIZE_Y - 1));// -(CHUNK_SIZE_Y * WORLD_SIZE_Y / 2); conn->player = new Player(Vector3f(x + .5f, CHUNK_SIZE_Y + 1.8f, y + .5f)); + conn->player->m_username = conn->GetName(); m_players[key] = conn->player; Sync sync; sync.position = conn->player->GetPositionAbs(); @@ -230,7 +231,8 @@ void Server::Run() { last = tstamp; sync_acc += tstamp - last; if (sync_acc >= 1000) { - sync_acc -= 1000; + while (sync_acc >= 1000) + sync_acc -= 1000; --timer; std::string str = "Timer: "; Log(str.append(std::to_string(timer).append(" SyncAcc: ").append(std::to_string(sync_acc))), false, false); @@ -269,18 +271,18 @@ void Server::Run() { if (conn->m_nsync) { Timestamp tstamp = conn->Run(m_world); - if (conn->player->AmIDead()) { + if (conn->player->AmIDead() && tstamp) { Chat chat; chat.dest_id = chat.dest_team_id = chat.src_id = 0; std::string killer = m_conns.at(key)->player->GetUsername(); std::string mess = getDeathMessage(conn->player->GetUsername(), killer); - - strcpy(chat.mess, mess.c_str()); + + strcpy(chat.mess, 140, mess.c_str()); + Log("You is dead", false, false); m_chatlog[tstamp] = chat; - ++deadplayers; conn->m_nsync == false; } @@ -434,13 +436,19 @@ std::string Server::getDeathMessage(std::string username, std::string killer) co std::string temp = DEATHMESSAGES.at(rand() % DEATHMESSAGES.size()); size_t ind = temp.find('@'); size_t indk = temp.find('$'); + bool bypass = false; - if (ind < indk) { + if (indk == std::string::npos) + bypass = true; + + if (ind < indk || bypass) { mess.append(temp.substr(0, ind)); mess.append(username); - mess.append(temp.substr(ind + 1, indk)); - mess.append(killer); - mess.append(temp.substr(indk + 1)); + if (!bypass) { + mess.append(temp.substr(ind + 1, indk)); + mess.append(killer); + mess.append(temp.substr(indk + 1)); + } } else { mess.append(temp.substr(0, indk)); diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 4db7aa5..cec5c3a 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -431,6 +431,8 @@ void Engine::DisplayHud(int timer) { // HP Bar float playerHp = m_player.GetHP(); + if (playerHp < 0.) + playerHp == 0; float facteurOmbrage = m_displayInfo ? 0.5f : 1.0f; float hpBarWidthProportion = 0.25f; @@ -720,11 +722,11 @@ void Engine::DisplayInfo(float elapsedTime, BlockType bloc) { ss.str(""); fPosY -= charSize; - ss << " Block : "; - if (bloc == BTYPE_LAST) - ss << "Weapon"; - else - ss << (int)bloc; + //ss << " Block : "; + //if (bloc == BTYPE_LAST) + // ss << "Weapon"; + //else + // ss << (int)bloc; PrintText(fPosX, fPosYJump, ss.str()); } @@ -1341,10 +1343,6 @@ void Engine::Render(float elapsedTime) { m_audio.Create3DAudioObj(m_scream, AUDIO_PATH "scream.wav", m_player.GetPOV(), m_player.GetVelocity(), false, 1.f); fell = true; } - else if (m_player.GetPosition().y < -20.f) { - m_player = Player(Vector3f(.5f, CHUNK_SIZE_Y + 1.8f, .5f)); // Respawn si le bonho- joueur tombe en bas du monde. - fell = false; - } if (m_networkgame) { // Pour se gerer le paquet. static bool has_synced = false; @@ -1381,7 +1379,8 @@ void Engine::Render(float elapsedTime) { } if (cmod_acc >= 1000) { - cmod_acc -= 1000; + while (cmod_acc >= 1000) + cmod_acc -= 1000; if (!m_chunkmod_manifest.empty()) { ChunkMod* cmod = m_chunkmod_manifest.front(); m_chunkmod_manifest.pop_front(); From c47b36726b3f709eb5b2beb1ae9966eaa36bd846 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 13:42:15 -0500 Subject: [PATCH 18/82] :> --- SQCSim-common/player.cpp | 3 +++ SQCSim-srv/server.cpp | 22 ++++++++++++---------- SQCSim2021/engine.cpp | 1 + 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/SQCSim-common/player.cpp b/SQCSim-common/player.cpp index 4227abe..3d4f56d 100644 --- a/SQCSim-common/player.cpp +++ b/SQCSim-common/player.cpp @@ -284,6 +284,9 @@ bool Player::AmIDead() void Player::InflictDamage(float hitPoints) { m_hp -= hitPoints; + + if (m_hp < 0) + m_hp == 0; //if (AmIDead()) //{ // Quand le joueur est mort. //} diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index bc33f34..1b9e467 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -218,7 +218,7 @@ void Server::Run() { int timer = m_game.countdown, sync_acc = 0, deadplayers = 0; std::chrono::high_resolution_clock::time_point start = std::chrono::high_resolution_clock::now(); Timestamp last = 0; - std::vector chatlog; + std::vector chatlog; std::vector chunkdiffs; std::vector bullets, outbox_bullets; std::vector netbull; @@ -237,6 +237,7 @@ void Server::Run() { std::string str = "Timer: "; Log(str.append(std::to_string(timer).append(" SyncAcc: ").append(std::to_string(sync_acc))), false, false); } + last = tstamp; for (auto& [key, conn] : m_conns) { @@ -258,8 +259,8 @@ void Server::Run() { if (Deserialize(&sync, pck, &bsize)) {} break; case CHAT: - if (Deserialize(&chat, pck, &bsize)) - chatlog.push_back(chat); + //if (Deserialize(&chat, pck, &bsize)) + //chatlog.push_back(chat); break; default: break; } @@ -272,17 +273,17 @@ void Server::Run() { Timestamp tstamp = conn->Run(m_world); if (conn->player->AmIDead() && tstamp) { - Chat chat; - chat.dest_id = chat.dest_team_id = chat.src_id = 0; + Chat* chat = new Chat(); + chat->dest_id = chat->dest_team_id = chat->src_id = 0; std::string killer = m_conns.at(key)->player->GetUsername(); std::string mess = getDeathMessage(conn->player->GetUsername(), killer); - strcpy(chat.mess, 140, mess.c_str()); - Log("You is dead", false, false); + strcpy(chat->mess, 140, mess.c_str()); + Log(mess, false, false); - m_chatlog[tstamp] = chat; + chatlog.emplace_back(chat); ++deadplayers; conn->m_nsync == false; } @@ -329,9 +330,10 @@ void Server::Run() { } for (auto& chat : chatlog) { - Log(chat.mess, false, false); + Log(chat->mess, false, false); for (auto& [key, conn] : m_conns) - sendPackTo(m_sock_udp, &chat, &m_buf, conn->getAddr()); + sendPackTo(m_sock_udp, chat, &m_buf, conn->getAddr()); + delete chat; } for (auto& chmo : chunkdiffs) { diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index cec5c3a..79fd8f1 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -1421,6 +1421,7 @@ void Engine::Render(float elapsedTime) { if (m_syncs.count(sync.timestamp)) { Sync comp = m_syncs[sync.timestamp]; m_player.InflictDamage(sync.hp - comp.hp); + Vector3f diff = sync.position - comp.position; From 64b40023aa115fd24d41e2485196f1624d04e79d Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 13:43:33 -0500 Subject: [PATCH 19/82] Ah ben lol. --- SQCSim2021/remoteplayer.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index fb30c3e..4680211 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -34,6 +34,7 @@ void RemotePlayer::Init() void RemotePlayer::Feed(const netprot::Output out) { m_position = Vector3f(out.position); + m_direction = Vector3f(out.direction); //current.position = out.position; //current.direction = out.direction; //current.states = out.states; From 3760e140ae38d5ffb747f948128045c2b43578e1 Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Wed, 6 Dec 2023 13:46:24 -0500 Subject: [PATCH 20/82] HiiIIIiiiIiI --- SQCSim2021/remoteplayer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index 4680211..0b53f3e 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -112,7 +112,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr float angle = angleRemote.Dot(angleCam); int index = 0; - + angle = -angle; Vector3f side = angleRemote.Cross(angleCam); From f835853605d73c59394369c0a33f69ce5a24d180 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 13:46:43 -0500 Subject: [PATCH 21/82] Chamone --- SQCSim-srv/server.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index 1b9e467..f6bb326 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -310,8 +310,8 @@ void Server::Run() { conn->sendPacks(m_sock_udp, m_conns, timer); } - //if (/*(deadplayers == players - 1 && deadplayers != 0) || */timer <= 0) - //endgame = true; + if ((deadplayers == players - 1 && deadplayers != 0) || timer <= 0) + endgame = true; } for (auto& bull : netbull) From dc61488809d7c41ef757471606b291e81d609a43 Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Wed, 6 Dec 2023 13:49:11 -0500 Subject: [PATCH 22/82] cout out --- SQCSim2021/remoteplayer.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index 0b53f3e..e9c1739 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -134,9 +134,6 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else if (angle >= -0.75 && !isLeft) //BackRight index = 6; - std::cout << index << std::endl; - - std::cout << "angle: " << angle << std::endl; float u, v, w, h; From 59d30604442cfbdb7babae3d7029d069a2662301 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 13:49:59 -0500 Subject: [PATCH 23/82] eh? --- SQCSim-srv/server.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index f6bb326..edf310a 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -272,7 +272,7 @@ void Server::Run() { if (conn->m_nsync) { Timestamp tstamp = conn->Run(m_world); - if (conn->player->AmIDead() && tstamp) { + if (conn->player->AmIDead()) { Chat* chat = new Chat(); chat->dest_id = chat->dest_team_id = chat->src_id = 0; From a79bf0d1ebd7b076bcbe0c9dc328297fba883f6f Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Wed, 6 Dec 2023 14:31:04 -0500 Subject: [PATCH 24/82] :oncoming_bus: --- SQCSim2021/remoteplayer.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index e9c1739..b6ba86c 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -35,6 +35,16 @@ void RemotePlayer::Feed(const netprot::Output out) { m_position = Vector3f(out.position); m_direction = Vector3f(out.direction); + + std::cout << "dead " << out.states.dead << std::endl; + std::cout << "hit " << out.states.hit << std::endl; + std::cout << "Jump " << out.states.jumping << std::endl; + std::cout << "JumpShot " << out.states.jumpshot << std::endl; + std::cout << "powerUp " << out.states.powerup << std::endl; + std::cout << "Running " << out.states.running << std::endl; + std::cout << "Shooting " << out.states.shooting << std::endl; + std::cout << "Still " << out.states.still << std::endl; + //current.position = out.position; //current.direction = out.direction; //current.states = out.states; From 242250f2513ba5b9b686bb7af14d3ba3e83d8d89 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 14:31:05 -0500 Subject: [PATCH 25/82] Oh oh oh oh oh!!! --- SQCSim-common/netprotocol.cpp | 28 +++++++++++++++++++++++----- SQCSim-common/netprotocol.h | 8 +++++--- SQCSim-srv/connection.cpp | 7 ++----- SQCSim-srv/server.cpp | 15 ++++----------- SQCSim2021/engine.cpp | 10 ++++++---- 5 files changed, 40 insertions(+), 28 deletions(-) diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index bcd03a7..33a4533 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -181,8 +181,6 @@ void netprot::Serialize(Sync* sync, char* buf[], uint32_t* buflen) { memcpy(*buf + sizeof(uint64_t) * 2 + sizeof(uint32_t) + 1, ammo8, sizeof(uint16_t)); - memcpy(*buf + sizeof(uint64_t) * 2 + sizeof(uint32_t) + sizeof(uint16_t) + 1, &sync->hp, sizeof(uint8_t)); - uint32_t vec[3]; memcpy(vec, &sync->position, sizeof(Vector3f)); // Pour d�naturer les floats. @@ -202,7 +200,17 @@ void netprot::Serialize(Sync* sync, char* buf[], uint32_t* buflen) { memcpy(*buf + sizeof(uint64_t) * 2 + sizeof(uint32_t) + sizeof(uint16_t) + 2, vec8, sizeof(uint32_t) * 3); - *buflen = sizeof(uint64_t) * 2 + sizeof(uint32_t) * 4 + sizeof(uint16_t) + 2; + uint32_t hp; + + memcpy(&hp, &sync->hp, sizeof(float)); + + uint8_t hp8[4] = { + (uint8_t)((hp >> 24) & 0xFF), + (uint8_t)((hp >> 16) & 0xFF), + (uint8_t)((hp >> 8) & 0xFF), + (uint8_t)(hp & 0xFF) }; + + *buflen = sizeof(uint64_t) * 2 + sizeof(uint32_t) * 4 + sizeof(uint16_t) + sizeof(float) + 1; } void netprot::Serialize(TeamInfo* tinfo, char* buf[], uint32_t* buflen) { @@ -691,7 +699,6 @@ bool netprot::Deserialize(Sync* sync, char* buf, uint32_t *buflen) { (uint16_t)diff[0] << 8 | (uint16_t)diff[1]; - memcpy(&sync->hp, &buf[1 + sizeof(uint64_t) * 2 + sizeof(uint32_t) + sizeof(uint16_t)], sizeof(uint8_t)); uint8_t subvec[3 * sizeof(uint32_t)] = { 0,0,0,0,0,0,0,0,0,0,0,0 }; memcpy(subvec, &buf[2 + sizeof(uint64_t) * 2 + sizeof(uint32_t) + sizeof(uint16_t)], sizeof(uint8_t) * 12); @@ -711,7 +718,18 @@ bool netprot::Deserialize(Sync* sync, char* buf, uint32_t *buflen) { memcpy(&sync->position, vec, sizeof(uint32_t) * 3); - *buflen = sizeof(uint64_t) * 2 + sizeof(uint32_t) * 4 + sizeof(uint16_t) + 2; + uint8_t hp8[4]; + + memcpy(&hp8, &buf[2 + sizeof(uint64_t) * 2 + sizeof(uint32_t) * 4 + sizeof(uint16_t)], sizeof(uint32_t)); + + uint32_t hp = (uint32_t)hp8[0] << 24 | + (uint32_t)hp8[1] << 16 | + (uint32_t)hp8[2] << 8 | + (uint32_t)hp8[3]; + + memcpy(&sync->hp, &hp, sizeof(float)); + + *buflen = sizeof(uint64_t) * 2 + sizeof(uint32_t) * 4 + sizeof(uint16_t) + sizeof(float); return true; } diff --git a/SQCSim-common/netprotocol.h b/SQCSim-common/netprotocol.h index dad658c..7fb8c94 100644 --- a/SQCSim-common/netprotocol.h +++ b/SQCSim-common/netprotocol.h @@ -80,7 +80,7 @@ namespace netprot { uint64_t sid = 0; uint32_t timer = 0; uint16_t ammo = 0; - uint8_t hp = 0; + float hp = 0; Vector3f position; Sync() {} Sync(Sync* sync) : timestamp(sync->timestamp), sid(sync->sid), timer(sync->timer), ammo(sync->ammo), hp(sync->hp), position(sync->position) {} @@ -125,9 +125,11 @@ namespace netprot { uint64_t src_id = 0, dest_id = 0, dest_team_id = 0; - char mess[140]; // Good 'nough for twitr, good 'nough for me. + char* mess = new char[140]; // Good 'nough for twitr, good 'nough for me. Chat() {} - Chat(Chat* cha) : src_id(cha->src_id), dest_id(cha->dest_id), dest_team_id(cha->dest_team_id) { strcpy(cha->mess, mess); } + Chat(Chat* cha) : src_id(cha->src_id), dest_id(cha->dest_id), dest_team_id(cha->dest_team_id) { + strcpy(mess, 140, cha->mess); } + ~Chat() { delete[] mess; } }; struct ChunkMod { diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp index bf33ddd..e28094f 100644 --- a/SQCSim-srv/connection.cpp +++ b/SQCSim-srv/connection.cpp @@ -80,9 +80,6 @@ void Connection::sendPacks(SOCKET sock, std::unordered_mapGetHash(false)) continue; - //std::cout << m_playinfo.id << ": " << m_playinfo.name << ": " << conn->GetName() << std::endl; - //std::cout << out.id << ": " << out.position << std::endl; - sendPackTo(sock, &out, &m_bufout, conn->getAddr()); } ++outs; @@ -142,8 +139,8 @@ Timestamp Connection::Run(World* world) { in.keys.right, in.keys.jump, false, el), world, el); - if (player->GetPosition().y < -10.) { - player->InflictDamage(9000); + if (player->GetPosition().y < -20.) { + player->InflictDamage(9000.); player->Killer = GetHash(true); } diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index edf310a..c68fd90 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -276,16 +276,14 @@ void Server::Run() { Chat* chat = new Chat(); chat->dest_id = chat->dest_team_id = chat->src_id = 0; - std::string killer = m_conns.at(key)->player->GetUsername(); + std::string killer = m_conns.at(conn->player->Killer)->player->GetUsername(); std::string mess = getDeathMessage(conn->player->GetUsername(), killer); strcpy(chat->mess, 140, mess.c_str()); - Log(mess, false, false); - chatlog.emplace_back(chat); ++deadplayers; - conn->m_nsync == false; + conn->m_nsync = false; } else { for (auto& chmo : conn->ChunkDiffs) @@ -342,12 +340,6 @@ void Server::Run() { delete chmo; } - //for (auto& bull : outbox_bullets) - //delete bull; - - //for (auto& bull : netbull) - //delete bull; - outbox_bullets.clear(); netbull.clear(); chunkdiffs.clear(); @@ -358,7 +350,7 @@ void Server::Run() { end.src_id = 0; char endmess[] = "Game over, mothereffers."; - strcpy(end.mess, endmess); + strcpy(end.mess, 140, endmess); for (auto& [key, conn] : m_conns) sendPackTo(m_sock_udp, &end, &m_buf, conn->getAddr()); @@ -451,6 +443,7 @@ std::string Server::getDeathMessage(std::string username, std::string killer) co mess.append(killer); mess.append(temp.substr(indk + 1)); } + else mess.append(temp.substr(ind + 1)); } else { mess.append(temp.substr(0, indk)); diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 79fd8f1..de2e9af 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -1332,8 +1332,6 @@ void Engine::Render(float elapsedTime) { if (m_isSkybox) m_skybox.Render(skybox); - DrawHud(elapsedTime, bloc); - DisplayPovGun(); ProcessNotificationQueue(); if (m_damage) { InstantDamage(); @@ -1420,8 +1418,9 @@ void Engine::Render(float elapsedTime) { } if (m_syncs.count(sync.timestamp)) { Sync comp = m_syncs[sync.timestamp]; - m_player.InflictDamage(sync.hp - comp.hp); - + + std::cout << "HP: " << sync.hp << std::endl; + //m_player.InflictDamage(sync.hp - comp.hp); Vector3f diff = sync.position - comp.position; @@ -1502,6 +1501,9 @@ void Engine::Render(float elapsedTime) { glEnable(GL_CULL_FACE); } + DrawHud(elapsedTime, bloc); + DisplayPovGun(); + } } From a60156bf2ceac2e0bcf877efc4dc6f5a03c80b7d Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 14:49:36 -0500 Subject: [PATCH 26/82] badaboum --- SQCSim-common/bullet.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/SQCSim-common/bullet.cpp b/SQCSim-common/bullet.cpp index b2731f6..c487fcc 100644 --- a/SQCSim-common/bullet.cpp +++ b/SQCSim-common/bullet.cpp @@ -15,9 +15,12 @@ bool Bullet::Update(World* world, float elapsedtime, int perframe, std::unordere for (auto& [key, player] : mapPlayer) { bool hit = false; - if ((m_currentpos - player->GetPosition()).Length() < .6f) + if ((m_currentpos - player->GetPosition()).Length() < .6f) { + std::cout << "hit" << std::endl; hit = true; + } if ((m_currentpos - player->GetPOV()).Length() < .2f) { + std::cout << "headshot" << std::endl; damage *= 2; // HEADSHOT! hit = true; } From 7077b617bebfb6575448d0e68d154f315619c851 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 15:37:08 -0500 Subject: [PATCH 27/82] Rollover Beethoven --- SQCSim-common/netprotocol.cpp | 12 +++++++++++- SQCSim-common/netprotocol.h | 2 +- SQCSim-srv/server.cpp | 16 +++++++++++----- SQCSim2021/engine.cpp | 24 ++++++++++++------------ 4 files changed, 35 insertions(+), 19 deletions(-) diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index 33a4533..a1e2b77 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -405,7 +405,14 @@ void netprot::Serialize(Chat* chat, char* buf[], uint32_t* buflen) { size_t messize = std::strlen(chat->mess) + 1; - memcpy(*buf + 1 + sizeof(uint64_t) * 3, &chat->mess, messize); + std::cout << chat->mess << ": "; + + strcpy(*buf + 1 + sizeof(uint64_t) * 3, messize, chat->mess); + + //memcpy(*buf + 1 + sizeof(uint64_t) * 3, &chat->mess, messize); + + for (int x = 0; x < sizeof(Chat); ++x) + std::cout << *(*buf + x); *buflen = messize + sizeof(uint64_t) * 3 + 2; } @@ -928,6 +935,9 @@ bool netprot::Deserialize(Chat* chat, char* buf, uint32_t *buflen) { if (messsize > 140) return false; + for (int x = 0; x < 140; ++x) + std::cout << buf[sizeof(uint64_t) * 3 + x]; + memcpy(&chat->mess, &buf[1 + sizeof(uint64_t) * 3], messsize); *buflen = messsize + sizeof(uint64_t) * 3 + 2; diff --git a/SQCSim-common/netprotocol.h b/SQCSim-common/netprotocol.h index 7fb8c94..f724226 100644 --- a/SQCSim-common/netprotocol.h +++ b/SQCSim-common/netprotocol.h @@ -129,7 +129,7 @@ namespace netprot { Chat() {} Chat(Chat* cha) : src_id(cha->src_id), dest_id(cha->dest_id), dest_team_id(cha->dest_team_id) { strcpy(mess, 140, cha->mess); } - ~Chat() { delete[] mess; } + ~Chat() {/* delete[] mess; */} }; struct ChunkMod { diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index c68fd90..0e5221d 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -83,17 +83,18 @@ int Server::Ready() { m_game.countdown = 0; } } while (m_game.countdown < 1); - do { + m_game.seed = 9370707; + /*do { Log("Entrez le seed de la partie: ", false, false); std::cin.getline(m_buf.ptr, BUFFER_LENGTH); try { - m_game.seed = 9370707;//std::stoi(m_buf.ptr); + std::stoi(m_buf.ptr); } catch (const std::exception& e) { Log(e.what(), true, false); m_game.seed = 0; } - } while (m_game.seed < 1); + } while (m_game.seed < 1);*/ do { Log("Entrez le nombre de joueurs: ", false, false); std::cin.getline(m_buf.ptr, BUFFER_LENGTH); @@ -312,10 +313,12 @@ void Server::Run() { endgame = true; } - for (auto& bull : netbull) + for (auto& bull : netbull) { for (auto& [key, conn] : m_conns) if (bull->id != conn->GetHash(false)) // Pour pas repitcher au joueur sa propre balle. sendPackTo(m_sock_udp, bull, &m_buf, conn->getAddr()); + delete bull; + } for (auto& bull : bullets) { @@ -327,6 +330,10 @@ void Server::Run() { } } + //for (auto& bull : outbox_bullets) + // delete bull; + //outbox_bullets.clear(); + for (auto& chat : chatlog) { Log(chat->mess, false, false); for (auto& [key, conn] : m_conns) @@ -340,7 +347,6 @@ void Server::Run() { delete chmo; } - outbox_bullets.clear(); netbull.clear(); chunkdiffs.clear(); chatlog.clear(); diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index de2e9af..f405712 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -90,7 +90,7 @@ void Engine::Init() { RemotePlayer* rt = (RemotePlayer*)m_players[key]; rt->SetPosition(Vector3f(555, 555, 555)); } - + m_player.m_username = playname; seed = 9370707;//m_conn.getSeed(); m_networkgame = true; } @@ -659,17 +659,17 @@ void Engine::PrintText(float x, float y, const std::string& t, float charSizeMul int Engine::GetFps(float elapsedTime) const { return 1 / elapsedTime; } int Engine::GetCountdown(float elapsedTime) { - if (m_resetcountdown) { - m_nbReductionChunk = 4; - m_timerReductionChunk = 30; - m_countdown = m_time + COUNTDOWN; - m_resetcountdown = false; - } - if (m_countdown < m_time) {} - //Stop(); - if (!m_stopcountdown) - m_time += elapsedTime; - return m_countdown - (int)m_time; + //if (m_resetcountdown) { +// m_nbReductionChunk = 4; +// m_timerReductionChunk = 30; + // m_countdown = m_time + COUNTDOWN; +// m_resetcountdown = false; +// } +// if (m_countdown < m_time) {} + // Stop(); + //if (!m_stopcountdown) + // m_time += elapsedTime; + return m_countdown;// -(int)m_time; } int Engine::GetOptionsChoice() { From db854c77b2c85380b9cb94a369518d97245759a5 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 15:47:14 -0500 Subject: [PATCH 28/82] :ok_hand: --- SQCSim-common/bullet.cpp | 1 + SQCSim-common/player.h | 1 + SQCSim-srv/connection.cpp | 7 ++++++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/SQCSim-common/bullet.cpp b/SQCSim-common/bullet.cpp index c487fcc..ad9e931 100644 --- a/SQCSim-common/bullet.cpp +++ b/SQCSim-common/bullet.cpp @@ -26,6 +26,7 @@ bool Bullet::Update(World* world, float elapsedtime, int perframe, std::unordere } if (hit && !player->AmIDead()) { player->InflictDamage(damage); + player->m_hit = true; if (player->AmIDead()) player->Killer = m_shooter_id; diff --git a/SQCSim-common/player.h b/SQCSim-common/player.h index 7503105..b3d715e 100644 --- a/SQCSim-common/player.h +++ b/SQCSim-common/player.h @@ -41,6 +41,7 @@ public: void addPoint(); uint64_t Killer = 0; std::string m_username; + bool m_hit = false; private: uint64_t getId() const; diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp index e28094f..d1d1a9a 100644 --- a/SQCSim-srv/connection.cpp +++ b/SQCSim-srv/connection.cpp @@ -144,8 +144,11 @@ Timestamp Connection::Run(World* world) { player->Killer = GetHash(true); } - out.states.jumping = in.keys.jump; + out.states.jumping = player->GetVelocity().y > 0.1f; out.states.running = player->GetVelocity().Length() > .3f; + out.states.still = !out.states.running; + out.states.hit = player->m_hit; + player->m_hit = false; if (player->AmIDead()) { in.keys.shoot = false; @@ -171,6 +174,8 @@ Timestamp Connection::Run(World* world) { 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; + if (out.states.jumping) + out.states.jumpshot = true; m_shoot_acc = BULLET_TIME; } From bf0306f01822458d62dcd2cc73b2353104fdeb4b Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Wed, 6 Dec 2023 15:51:55 -0500 Subject: [PATCH 29/82] :punch: --- SQCSim2021/remoteplayer.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index b6ba86c..02a35ed 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -36,14 +36,9 @@ void RemotePlayer::Feed(const netprot::Output out) { m_position = Vector3f(out.position); m_direction = Vector3f(out.direction); - std::cout << "dead " << out.states.dead << std::endl; - std::cout << "hit " << out.states.hit << std::endl; - std::cout << "Jump " << out.states.jumping << std::endl; - std::cout << "JumpShot " << out.states.jumpshot << std::endl; - std::cout << "powerUp " << out.states.powerup << std::endl; - std::cout << "Running " << out.states.running << std::endl; - std::cout << "Shooting " << out.states.shooting << std::endl; - std::cout << "Still " << out.states.still << std::endl; + std::cout << "dead : " << out.states.dead << "hit :" << out.states.hit << "Jump :" << out.states.jumping << "JumpShot : " << out.states.jumpshot << "Running : " << out.states.running << "Shooting : " << out.states.shooting << "Still : " << out.states.still << std::endl; + //std::cout << "powerUp " << out.states.powerup << std::endl; + //current.position = out.position; //current.direction = out.direction; From 0fb5c856603a3575c2789965fb35acc785cee9f3 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 15:52:00 -0500 Subject: [PATCH 30/82] Everything is false. --- SQCSim-common/netprotocol.h | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/SQCSim-common/netprotocol.h b/SQCSim-common/netprotocol.h index f724226..d8a0b6a 100644 --- a/SQCSim-common/netprotocol.h +++ b/SQCSim-common/netprotocol.h @@ -38,24 +38,24 @@ namespace netprot { /* Sous-structures */ struct Keys { - bool forward, - backward, - left, - right, - jump, - shoot, - block; + bool forward = false, + backward = false, + left = false, + right = false, + jump = false, + shoot = false, + block = false; }; struct States { - bool jumping, - shooting, - hit, - powerup, - dead, - still, - jumpshot, - running; + bool jumping = false, + shooting = false, + hit = false, + powerup = false, + dead = false, + still = false, + jumpshot = false, + running = false; }; /* Structures de paquets */ From 449e12ca5a8347009411dfee5a1d2b6b423d8119 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 16:01:29 -0500 Subject: [PATCH 31/82] GOT THE TIME TICK TICK TICKIN' IN MY HEAD --- SQCSim-common/netprotocol.cpp | 12 ++---------- SQCSim2021/engine.cpp | 2 +- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index a1e2b77..792364b 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -409,11 +409,6 @@ void netprot::Serialize(Chat* chat, char* buf[], uint32_t* buflen) { strcpy(*buf + 1 + sizeof(uint64_t) * 3, messize, chat->mess); - //memcpy(*buf + 1 + sizeof(uint64_t) * 3, &chat->mess, messize); - - for (int x = 0; x < sizeof(Chat); ++x) - std::cout << *(*buf + x); - *buflen = messize + sizeof(uint64_t) * 3 + 2; } @@ -935,12 +930,9 @@ bool netprot::Deserialize(Chat* chat, char* buf, uint32_t *buflen) { if (messsize > 140) return false; - for (int x = 0; x < 140; ++x) - std::cout << buf[sizeof(uint64_t) * 3 + x]; + strcpy(chat->mess, messsize, &buf[1 + sizeof(uint64_t) * 3]); - memcpy(&chat->mess, &buf[1 + sizeof(uint64_t) * 3], messsize); - - *buflen = messsize + sizeof(uint64_t) * 3 + 2; + *buflen = messsize + sizeof(uint64_t) * 3 + 1; return true; } diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index f405712..f4a9f00 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -668,7 +668,7 @@ int Engine::GetCountdown(float elapsedTime) { // if (m_countdown < m_time) {} // Stop(); //if (!m_stopcountdown) - // m_time += elapsedTime; + m_time += elapsedTime; return m_countdown;// -(int)m_time; } From 89fafb100e949014dfe6bf3557ae21620c04bff1 Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Wed, 6 Dec 2023 16:20:52 -0500 Subject: [PATCH 32/82] Pleurer en animation --- SQCSim2021/remoteplayer.cpp | 188 +++++++++++++++++++++++++++++++++--- 1 file changed, 176 insertions(+), 12 deletions(-) diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index 02a35ed..74dd9b9 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -36,9 +36,9 @@ void RemotePlayer::Feed(const netprot::Output out) { m_position = Vector3f(out.position); m_direction = Vector3f(out.direction); - std::cout << "dead : " << out.states.dead << "hit :" << out.states.hit << "Jump :" << out.states.jumping << "JumpShot : " << out.states.jumpshot << "Running : " << out.states.running << "Shooting : " << out.states.shooting << "Still : " << out.states.still << std::endl; + std::cout << "Dead: " << out.states.dead << " Hit:" << out.states.hit << " Jump:" << out.states.jumping << " JumpShot: " << out.states.jumpshot << " Running: " << out.states.running << " Shooting: " << out.states.shooting << " Still: " << out.states.still << std::endl; //std::cout << "powerUp " << out.states.powerup << std::endl; - + current.states = out.states; //current.position = out.position; //current.direction = out.direction; @@ -120,24 +120,188 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr angle = -angle; Vector3f side = angleRemote.Cross(angleCam); - + + static bool Shooting = false; bool isLeft = side.y > 0; - if (angle >= 0.75 ) //Face //side positif - index = 0; + if (angle >= 0.75) //Face //side positif + { + + + if(current.states.shooting){ + if (Shooting) + index = 17; + else + index = 9; + } + else if (current.states.jumpshot) { + if (Shooting) + index = 41; + else + index = 33; + } + else if (current.states.jumping) + index = 25; + else if (current.states.running && current.states.still) + index = 0; + + Shooting = !Shooting; + + } else if (angle >= 0.25 && isLeft) //Frontleft - index = 1; + { + + if (current.states.shooting) { + if (Shooting) + index = 18; + else + index = 10; + } + else if (current.states.jumpshot) { + if (Shooting) + index = 42; + else + index = 34; + } + else if (current.states.jumping) + index = 26; + else if (current.states.running && current.states.still) + index = 1; + + Shooting = !Shooting; + + + + } else if (angle >= -0.25 && isLeft) //ProfileLeft - index = 3; + { + if (current.states.shooting) { + if (Shooting) + index = 20; + else + index = 12; + } + else if (current.states.jumpshot) { + if (Shooting) + index = 44; + else + index = 36; + } + else if (current.states.jumping) + index = 28; + else if (current.states.running && current.states.still) + index = 3; + + Shooting = !Shooting; + + } else if (angle >= -0.75 && isLeft) //BackLeft - index = 5; + { + if (current.states.shooting) { + if (Shooting) + index = 22; + else + index = 14; + } + else if (current.states.jumpshot) { + if (Shooting) + index = 46; + else + index = 38; + } + else if (current.states.jumping) + index = 30; + else if (current.states.running && current.states.still) + index = 5; + + Shooting = !Shooting; + } else if (angle < -0.75) //Dos //side négatif - index = 7; + { + if (current.states.shooting) { + if (Shooting) + index = 24; + else + index = 16; + } + else if (current.states.jumpshot) { + if (Shooting) + index = 48; + else + index = 40; + } + else if (current.states.jumping) + index = 32; + else if (current.states.running && current.states.still) + index = 7; + + Shooting = !Shooting; + + } else if (angle >= 0.25 && !isLeft) //FrontRight - index = 2; + { + + if (current.states.shooting) { + if (Shooting) + index = 19; + else + index = 11; + } + else if (current.states.jumpshot) { + if (Shooting) + index = 43; + else + index = 35; + } + else if (current.states.jumping) + index = 27; + else if (current.states.running && current.states.still) + index = 2; + + Shooting = !Shooting; + } else if (angle >= -0.25 && !isLeft) //ProfileRight - index = 4; + { + if (current.states.shooting) { + if (Shooting) + index = 21; + else + index = 13; + } + else if (current.states.jumpshot) { + if (Shooting) + index = 45; + else + index = 37; + } + else if (current.states.jumping) + index = 29; + else if (current.states.running && current.states.still) + index = 4; + + Shooting = !Shooting; + } else if (angle >= -0.75 && !isLeft) //BackRight - index = 6; + { + if (current.states.shooting) { + if (Shooting) + index = 23; + else + index = 15; + } + else if (current.states.jumpshot) { + if (Shooting) + index = 47; + else + index = 39; + } + else if (current.states.jumping) + index = 31; + else if (current.states.running && current.states.still) + index = 6; + + Shooting = !Shooting; + } + float u, v, w, h; From d1805f2309267d3ad68d93424909263729dbd8b4 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 16:20:59 -0500 Subject: [PATCH 33/82] Pleurer en chat. --- SQCSim-common/netprotocol.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index 792364b..5bad78b 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -925,14 +925,16 @@ bool netprot::Deserialize(Chat* chat, char* buf, uint32_t *buflen) { (uint64_t)dstt[6] << 8 | (uint64_t)dstt[7]; - size_t messsize = std::strlen(buf + sizeof(uint64_t) * 3) + 1; + size_t messsize = std::strlen(&buf[sizeof(uint64_t) * 3]) + 1; if (messsize > 140) return false; + std::cout << messsize << ": " << &buf[1 + sizeof(uint64_t) * 3] << std::endl; + strcpy(chat->mess, messsize, &buf[1 + sizeof(uint64_t) * 3]); - *buflen = messsize + sizeof(uint64_t) * 3 + 1; + //*buflen = messsize + sizeof(uint64_t) * 3 + 1; return true; } From d80281231b054a06c823a24996cc8dfaeb91e5d2 Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Wed, 6 Dec 2023 16:22:05 -0500 Subject: [PATCH 34/82] :toilet: --- SQCSim2021/engine.cpp | 80 +++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index f4a9f00..13c19a9 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -198,57 +198,57 @@ void Engine::LoadResource() { TextureAtlas::TextureIndex StillBack = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueBackRight.png"); //7 //SHOOTINGSTILL SANS TIRER - //TextureAtlas::TextureIndex StillFrontShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueFrontRightShootingRight.png"); ////9 - //TextureAtlas::TextureIndex StillQuarterFrontLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueFrontRightShootingRight.png"); ////10 - //TextureAtlas::TextureIndex StillQuarterFrontRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueRightShootingRight.png"); ////11 - //TextureAtlas::TextureIndex StillProfiltLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueProfilShootingLeft.png"); ////12 - //TextureAtlas::TextureIndex StillProfiltRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueProfilShootingRight.png"); ////13 - //TextureAtlas::TextureIndex StillQuarterBackLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueBackLeftShootingLeft.png"); ////14 - //TextureAtlas::TextureIndex StillQuarterBackRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueBackRightShootingRight.png"); ////15 - //TextureAtlas::TextureIndex StillBackShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueShootingBackRight.png"); ////16 + TextureAtlas::TextureIndex StillFrontShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueFrontRightShootingRight.png"); ////9 + TextureAtlas::TextureIndex StillQuarterFrontLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueFrontRightShootingRight.png"); ////10 + TextureAtlas::TextureIndex StillQuarterFrontRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueRightShootingRight.png"); ////11 + TextureAtlas::TextureIndex StillProfiltLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueProfilShootingLeft.png"); ////12 + TextureAtlas::TextureIndex StillProfiltRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueProfilShootingRight.png"); ////13 + TextureAtlas::TextureIndex StillQuarterBackLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueBackLeftShootingLeft.png"); ////14 + TextureAtlas::TextureIndex StillQuarterBackRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueBackRightShootingRight.png"); ////15 + TextureAtlas::TextureIndex StillBackShoot = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT1 "BlueShootingBackRight.png"); ////16 //SHOOTINGSTILL TIRER - //TextureAtlas::TextureIndex StillFrontShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueFrontRightShootingRightShoot1.png"); ////17 - //TextureAtlas::TextureIndex StillQuarterFrontLeftFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueLeftShootingLeftShoot1.png"); ////18 - //TextureAtlas::TextureIndex StillQuarterFrontRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueRightShootingRightShoot1.png"); ////19 - //TextureAtlas::TextureIndex StillProfiltLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueProfilShootingLeftShoot1.png"); ////20 - //TextureAtlas::TextureIndex StillProfiltRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueProfilShootingRightShoot1.png"); ////21 - //TextureAtlas::TextureIndex StillQuarterBackLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueBackLeftShootingLeftShoot1.png"); ////22 - //TextureAtlas::TextureIndex StillQuarterBackRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueBackRightShootingRightShoot1.png"); ////23 - //TextureAtlas::TextureIndex StillBackShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueShootingBackRightShoot1.png"); ////24 + TextureAtlas::TextureIndex StillFrontShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueFrontRightShootingRightShoot1.png"); ////17 + TextureAtlas::TextureIndex StillQuarterFrontLeftFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueLeftShootingLeftShoot1.png"); ////18 + TextureAtlas::TextureIndex StillQuarterFrontRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueRightShootingRightShoot1.png"); ////19 + TextureAtlas::TextureIndex StillProfiltLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueProfilShootingLeftShoot1.png"); ////20 + TextureAtlas::TextureIndex StillProfiltRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueProfilShootingRightShoot1.png"); ////21 + TextureAtlas::TextureIndex StillQuarterBackLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueBackLeftShootingLeftShoot1.png"); ////22 + TextureAtlas::TextureIndex StillQuarterBackRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueBackRightShootingRightShoot1.png"); ////23 + TextureAtlas::TextureIndex StillBackShootFire = m_animeAtlas.AddTexture(ANIM_PATH_SSHOOT2 "BlueShootingBackRightShoot1.png"); ////24 //JUMP - //TextureAtlas::TextureIndex JumpFront = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueFrontJumpRight.png"); ////25 - //TextureAtlas::TextureIndex JumpQuarterFrontLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeftFrontJumpLeft.png"); ////26 - //TextureAtlas::TextureIndex JumpQuarterFrontRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRightFrontJumpRight.png"); ////27 - //TextureAtlas::TextureIndex JumpProfiltLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilJumpLeft.png"); ////28 - //TextureAtlas::TextureIndex JumpProfiltRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilJumpRight.png"); ////29 - //TextureAtlas::TextureIndex JumpQuarterBackLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeftBackJumpLeft.png"); ////30 - //TextureAtlas::TextureIndex JumpQuarterBackRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRightBackJumpRight.png"); ////31 - //TextureAtlas::TextureIndex JumpBack = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueBackJumpRight.png"); ////32 + TextureAtlas::TextureIndex JumpFront = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueFrontJumpRight.png"); ////25 + TextureAtlas::TextureIndex JumpQuarterFrontLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeftFrontJumpLeft.png"); ////26 + TextureAtlas::TextureIndex JumpQuarterFrontRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRightFrontJumpRight.png"); ////27 + TextureAtlas::TextureIndex JumpProfiltLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilJumpLeft.png"); ////28 + TextureAtlas::TextureIndex JumpProfiltRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilJumpRight.png"); ////29 + TextureAtlas::TextureIndex JumpQuarterBackLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeftBackJumpLeft.png"); ////30 + TextureAtlas::TextureIndex JumpQuarterBackRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRightBackJumpRight.png"); ////31 + TextureAtlas::TextureIndex JumpBack = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueBackJumpRight.png"); ////32 //SHOOTINGJUMP SANS TIRER - //TextureAtlas::TextureIndex JumpFrontShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueFrontJumpRightShootingRight.png"); ////33 - //TextureAtlas::TextureIndex JumpQuarterFrontLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueFrontLeftJumpLeftShootingLeft.png"); ////34 - //TextureAtlas::TextureIndex JumpQuarterFrontRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueFrontRightJumpRightShootingRight.png"); ////35 - //TextureAtlas::TextureIndex JumpProfiltLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueProfilLeftJumpLeftShootingLeft.png"); ////36 - //TextureAtlas::TextureIndex JumpProfiltRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BluerProfilRightJumprightShootingRight.png"); ////37 - //TextureAtlas::TextureIndex JumpQuarterBackLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueBackLeftJumpLeftShootingLeft.png"); ////38 - //TextureAtlas::TextureIndex JumpQuarterBackRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueBackRightJumpRightShootingRight.png"); ////39 - //TextureAtlas::TextureIndex JumpBackShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueBackJumpRightShootingRight.png"); ////40 + TextureAtlas::TextureIndex JumpFrontShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueFrontJumpRightShootingRight.png"); ////33 + TextureAtlas::TextureIndex JumpQuarterFrontLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueFrontLeftJumpLeftShootingLeft.png"); ////34 + TextureAtlas::TextureIndex JumpQuarterFrontRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueFrontRightJumpRightShootingRight.png"); ////35 + TextureAtlas::TextureIndex JumpProfiltLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueProfilLeftJumpLeftShootingLeft.png"); ////36 + TextureAtlas::TextureIndex JumpProfiltRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BluerProfilRightJumprightShootingRight.png"); ////37 + TextureAtlas::TextureIndex JumpQuarterBackLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueBackLeftJumpLeftShootingLeft.png"); ////38 + TextureAtlas::TextureIndex JumpQuarterBackRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueBackRightJumpRightShootingRight.png"); ////39 + TextureAtlas::TextureIndex JumpBackShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueBackJumpRightShootingRight.png"); ////40 //SHOOTINGJUMP TIRER - //TextureAtlas::TextureIndex JumpFrontShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueFrontJumpRightShootingRightShoot1.png"); ////41 - //TextureAtlas::TextureIndex JumpQuarterFrontLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueFrontLeftJumpLeftShootingLeftShoot1.png"); ////42 - //TextureAtlas::TextureIndex JumpQuarterFrontRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueFrontRightJumpRightShootingRightShoot1.png"); ////43 - //TextureAtlas::TextureIndex JumpProfiltLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueProfilLeftJumpLeftShootingLeftShoot1.png"); ////44 - //TextureAtlas::TextureIndex JumpProfiltRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BluerProfilRightJumprightShootingRightShoot1.png"); ////45 - //TextureAtlas::TextureIndex JumpQuarterBackLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackLeftJumpLeftShootingLeftShoot1.png"); ////46 - //TextureAtlas::TextureIndex JumpQuarterBackRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackRightJumpRightShootingRightShoot1.png"); ////47 - //TextureAtlas::TextureIndex JumpBackShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackJumpRightShootingRightShoot1.png"); ////48 + TextureAtlas::TextureIndex JumpFrontShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueFrontJumpRightShootingRightShoot1.png"); ////41 + TextureAtlas::TextureIndex JumpQuarterFrontLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueFrontLeftJumpLeftShootingLeftShoot1.png"); ////42 + TextureAtlas::TextureIndex JumpQuarterFrontRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueFrontRightJumpRightShootingRightShoot1.png"); ////43 + TextureAtlas::TextureIndex JumpProfiltLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueProfilLeftJumpLeftShootingLeftShoot1.png"); ////44 + TextureAtlas::TextureIndex JumpProfiltRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BluerProfilRightJumprightShootingRightShoot1.png"); ////45 + TextureAtlas::TextureIndex JumpQuarterBackLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackLeftJumpLeftShootingLeftShoot1.png"); ////46 + TextureAtlas::TextureIndex JumpQuarterBackRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackRightJumpRightShootingRightShoot1.png"); ////47 + TextureAtlas::TextureIndex JumpBackShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackJumpRightShootingRightShoot1.png"); ////48 From 481b5a284c6dfda803fc191ced6c823d1aecc2ca Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 16:23:09 -0500 Subject: [PATCH 35/82] skibidi :toilet: --- SQCSim-common/netprotocol.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index 5bad78b..6159739 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -405,8 +405,6 @@ void netprot::Serialize(Chat* chat, char* buf[], uint32_t* buflen) { size_t messize = std::strlen(chat->mess) + 1; - std::cout << chat->mess << ": "; - strcpy(*buf + 1 + sizeof(uint64_t) * 3, messize, chat->mess); *buflen = messize + sizeof(uint64_t) * 3 + 2; From 9eac62c44aabb0313cd40c6d583b6182f9583afe Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Wed, 6 Dec 2023 16:35:39 -0500 Subject: [PATCH 36/82] :no_pedestrians: --- SQCSim2021/remoteplayer.cpp | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index 74dd9b9..4f796fa 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -120,12 +120,20 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr angle = -angle; Vector3f side = angleRemote.Cross(angleCam); - + static float time = 0.f; static bool Shooting = false; + + time += elapsedTime; + if (time >= 200) + { + time -= 200; + Shooting = !Shooting; + } + + bool isLeft = side.y > 0; if (angle >= 0.75) //Face //side positif { - if(current.states.shooting){ if (Shooting) @@ -144,8 +152,6 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else if (current.states.running && current.states.still) index = 0; - Shooting = !Shooting; - } else if (angle >= 0.25 && isLeft) //Frontleft { @@ -166,10 +172,6 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr index = 26; else if (current.states.running && current.states.still) index = 1; - - Shooting = !Shooting; - - } else if (angle >= -0.25 && isLeft) //ProfileLeft @@ -190,8 +192,6 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr index = 28; else if (current.states.running && current.states.still) index = 3; - - Shooting = !Shooting; } else if (angle >= -0.75 && isLeft) //BackLeft @@ -212,8 +212,6 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr index = 30; else if (current.states.running && current.states.still) index = 5; - - Shooting = !Shooting; } else if (angle < -0.75) //Dos //side négatif { @@ -233,8 +231,6 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr index = 32; else if (current.states.running && current.states.still) index = 7; - - Shooting = !Shooting; } else if (angle >= 0.25 && !isLeft) //FrontRight @@ -257,7 +253,6 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else if (current.states.running && current.states.still) index = 2; - Shooting = !Shooting; } else if (angle >= -0.25 && !isLeft) //ProfileRight { @@ -278,7 +273,6 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else if (current.states.running && current.states.still) index = 4; - Shooting = !Shooting; } else if (angle >= -0.75 && !isLeft) //BackRight { @@ -299,7 +293,6 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else if (current.states.running && current.states.still) index = 6; - Shooting = !Shooting; } From e8a475419f042d3d175412c140c05477f137108f Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 16:36:21 -0500 Subject: [PATCH 37/82] 2112 by PUSH. --- SQCSim-common/netprotocol.cpp | 6 +++++- SQCSim2021/engine.cpp | 5 +++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index 6159739..a8c5c9d 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -930,7 +930,11 @@ bool netprot::Deserialize(Chat* chat, char* buf, uint32_t *buflen) { std::cout << messsize << ": " << &buf[1 + sizeof(uint64_t) * 3] << std::endl; - strcpy(chat->mess, messsize, &buf[1 + sizeof(uint64_t) * 3]); + char* ciboire = &buf[1 + sizeof(uint64_t) * 3]; + + std::cout << ciboire << std::endl; + + strcpy(chat->mess, 140, ciboire); //*buflen = messsize + sizeof(uint64_t) * 3 + 1; diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 13c19a9..03bbdd2 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -1419,7 +1419,7 @@ void Engine::Render(float elapsedTime) { if (m_syncs.count(sync.timestamp)) { Sync comp = m_syncs[sync.timestamp]; - std::cout << "HP: " << sync.hp << std::endl; + //std::cout << "HP: " << sync.hp << std::endl; //m_player.InflictDamage(sync.hp - comp.hp); Vector3f diff = sync.position - comp.position; @@ -1436,7 +1436,7 @@ void Engine::Render(float elapsedTime) { m_syncs.erase(sync.timestamp); } - else SystemNotification("sync be no good."); + //else SystemNotification("sync be no good."); } break; case OUTPUT: @@ -1473,6 +1473,7 @@ void Engine::Render(float elapsedTime) { 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] = bult; + break; } m_audio.Create3DAudioObj(m_powpow, AUDIO_PATH "pow.wav", bull.pos, bull.dir * 10, false, .5f); } From 84249ef84c7f54eb685a50584f6a6e61cb7fd5a3 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 16:42:09 -0500 Subject: [PATCH 38/82] =?UTF-8?q?Y=C3=89=20T=C3=94RD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQCSim-srv/connection.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp index d1d1a9a..13ada7d 100644 --- a/SQCSim-srv/connection.cpp +++ b/SQCSim-srv/connection.cpp @@ -144,7 +144,7 @@ Timestamp Connection::Run(World* world) { player->Killer = GetHash(true); } - out.states.jumping = player->GetVelocity().y > 0.1f; + out.states.jumping = abs(player->GetVelocity().y) > .2f; out.states.running = player->GetVelocity().Length() > .3f; out.states.still = !out.states.running; out.states.hit = player->m_hit; @@ -171,6 +171,7 @@ Timestamp Connection::Run(World* world) { } else toggle = false; + out.states.jumpshot = 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; From c8c82770b7052abe60b8f2fcef437f0477be465a Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 6 Dec 2023 16:48:53 -0500 Subject: [PATCH 39/82] Mr. Clean? --- SQCSim-common/netprotocol.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index a8c5c9d..78a5fa9 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -928,12 +928,8 @@ bool netprot::Deserialize(Chat* chat, char* buf, uint32_t *buflen) { if (messsize > 140) return false; - std::cout << messsize << ": " << &buf[1 + sizeof(uint64_t) * 3] << std::endl; - char* ciboire = &buf[1 + sizeof(uint64_t) * 3]; - std::cout << ciboire << std::endl; - strcpy(chat->mess, 140, ciboire); //*buflen = messsize + sizeof(uint64_t) * 3 + 1; From 51bd6440f08195860fc35a9d82d3d107f641d52e Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Wed, 6 Dec 2023 16:49:26 -0500 Subject: [PATCH 40/82] JUMPSHOOT --- SQCSim-common/netprotocol.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index a8c5c9d..acb8783 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -615,10 +615,12 @@ bool netprot::Deserialize(Output* out, char* buf, uint32_t *buflen) { out->states.jumping = states & 0b10000000; out->states.shooting = states & 0b01000000; out->states.hit = states & 0b00100000; - out->states.dead = states & 0b00010000; - out->states.still = states & 0b00001000; - out->states.jumpshot = states & 0b00000100; - out->states.running = states & 0b00000010; + out->states.powerup = states & 0b00010000; + out->states.dead = states & 0b00001000; + out->states.still = states & 0b00000100; + out->states.jumpshot = states & 0b00000010; + out->states.running = states & 0b00000001; + uint8_t subvec[3 * sizeof(uint32_t)] = { 0,0,0,0,0,0,0,0,0,0,0,0 }; memcpy(subvec, &buf[2 + sizeof(uint64_t) * 2], sizeof(uint8_t) * 12); From 18f08feb68cb303b9851773c655cd30b831c47af Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Wed, 6 Dec 2023 17:02:36 -0500 Subject: [PATCH 41/82] :sparkles: --- SQCSim2021/remoteplayer.cpp | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index 4f796fa..2ee8e38 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -126,14 +126,20 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr time += elapsedTime; if (time >= 200) { - time -= 200; - Shooting = !Shooting; - } + time -= 200; + if (!current.states.shooting) + Shooting = false; + else { + Shooting = !Shooting; + } + } + bool isLeft = side.y > 0; if (angle >= 0.75) //Face //side positif { + if(current.states.shooting){ if (Shooting) @@ -152,10 +158,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else if (current.states.running && current.states.still) index = 0; + + } else if (angle >= 0.25 && isLeft) //Frontleft { - + + if (current.states.shooting) { if (Shooting) index = 18; @@ -176,6 +185,8 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (angle >= -0.25 && isLeft) //ProfileLeft { + + if (current.states.shooting) { if (Shooting) index = 20; @@ -196,6 +207,8 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (angle >= -0.75 && isLeft) //BackLeft { + + if (current.states.shooting) { if (Shooting) index = 22; @@ -215,6 +228,8 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (angle < -0.75) //Dos //side négatif { + + if (current.states.shooting) { if (Shooting) index = 24; @@ -236,6 +251,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else if (angle >= 0.25 && !isLeft) //FrontRight { + if (current.states.shooting) { if (Shooting) index = 19; @@ -256,6 +272,8 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (angle >= -0.25 && !isLeft) //ProfileRight { + + if (current.states.shooting) { if (Shooting) index = 21; @@ -276,6 +294,8 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (angle >= -0.75 && !isLeft) //BackRight { + + if (current.states.shooting) { if (Shooting) index = 23; From 1d4824214735e73012508a73bdd27beaa0ead6d1 Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Thu, 7 Dec 2023 12:10:17 -0500 Subject: [PATCH 42/82] Update remoteplayer.cpp --- SQCSim2021/remoteplayer.cpp | 54 +++++++++++++------------------------ 1 file changed, 18 insertions(+), 36 deletions(-) diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index 2ee8e38..f896d4f 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -10,14 +10,10 @@ RemotePlayer::RemotePlayer(netprot::PlayerInfo pinfo) : m_pinfo(pinfo), m_aminacc(0.0f), m_animstate(Anim::STILL), m_team_id(0), current(), previous(), m_texture_front(), Player(Vector3f(0, 0, 0)){ - - } RemotePlayer::RemotePlayer(netprot::PlayerInfo pinfo, const Vector3f& pos) : m_pinfo(pinfo), m_aminacc(0.0f), m_animstate(Anim::STILL), m_team_id(0), current(), previous(), m_texture_front(), Player(pos) { - - } @@ -98,11 +94,15 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr Vector3f DiffCam = GetPosition() - camera.GetPosition(); Vector3f UpCam = Vector3f(0.f, 1.f, 0.f); + Vector3f CrossA = DiffCam.Cross(UpCam); Vector3f CrossB = DiffCam.Cross(CrossA); + CrossA.Normalize(); CrossB.Normalize(); + Vector3f playerPosition = GetPosition() + Vector3f(0.f, -.75f, 0.f); + Vector3f v2 = (playerPosition + CrossA * 0.5 * width + CrossB * 0.5 * height); Vector3f v1 = (playerPosition - CrossA * 0.5 * width + CrossB * 0.5 * height); Vector3f v3 = (playerPosition + CrossA * 0.5 * width - CrossB * 0.5 * height); @@ -110,6 +110,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr Vector3f angleRemote = GetDirection(); Vector3f angleCam = (v1 - v2).Cross(v3 - v2); + angleCam.y = 0; angleRemote.y = 0; angleCam.Normalize(); @@ -122,6 +123,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr static float time = 0.f; static bool Shooting = false; + bool isLeft = side.y > 0; time += elapsedTime; if (time >= 200) @@ -129,25 +131,21 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr time -= 200; if (!current.states.shooting) Shooting = false; - else { + else Shooting = !Shooting; - } - } - bool isLeft = side.y > 0; - if (angle >= 0.75) //Face //side positif - { - + if (angle >= 0.75) //Face - side positif + { if(current.states.shooting){ if (Shooting) index = 17; else index = 9; } - else if (current.states.jumpshot) { + else if (current.states.jumping && current.states.shooting) { if (Shooting) index = 41; else @@ -158,20 +156,16 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else if (current.states.running && current.states.still) index = 0; - - } else if (angle >= 0.25 && isLeft) //Frontleft { - - if (current.states.shooting) { if (Shooting) index = 18; else index = 10; } - else if (current.states.jumpshot) { + else if (current.states.jumping && current.states.shooting) { if (Shooting) index = 42; else @@ -185,15 +179,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (angle >= -0.25 && isLeft) //ProfileLeft { - - if (current.states.shooting) { if (Shooting) index = 20; else index = 12; } - else if (current.states.jumpshot) { + else if (current.states.jumping && current.states.shooting) { if (Shooting) index = 44; else @@ -207,15 +199,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (angle >= -0.75 && isLeft) //BackLeft { - - if (current.states.shooting) { if (Shooting) index = 22; else index = 14; } - else if (current.states.jumpshot) { + else if (current.states.jumping && current.states.shooting) { if (Shooting) index = 46; else @@ -226,17 +216,15 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else if (current.states.running && current.states.still) index = 5; } - else if (angle < -0.75) //Dos //side négatif + else if (angle < -0.75) //Dos - side négatif { - - if (current.states.shooting) { if (Shooting) index = 24; else index = 16; } - else if (current.states.jumpshot) { + else if (current.states.jumping && current.states.shooting) { if (Shooting) index = 48; else @@ -250,15 +238,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (angle >= 0.25 && !isLeft) //FrontRight { - - if (current.states.shooting) { if (Shooting) index = 19; else index = 11; } - else if (current.states.jumpshot) { + else if (current.states.jumping && current.states.shooting) { if (Shooting) index = 43; else @@ -272,15 +258,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (angle >= -0.25 && !isLeft) //ProfileRight { - - if (current.states.shooting) { if (Shooting) index = 21; else index = 13; } - else if (current.states.jumpshot) { + else if (current.states.jumping && current.states.shooting) { if (Shooting) index = 45; else @@ -294,15 +278,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (angle >= -0.75 && !isLeft) //BackRight { - - if (current.states.shooting) { if (Shooting) index = 23; else index = 15; } - else if (current.states.jumpshot) { + else if (current.states.jumping && current.states.shooting) { if (Shooting) index = 47; else From 76256115d19d68aae1a81dbbb3b093b8731728e4 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Thu, 7 Dec 2023 12:10:47 -0500 Subject: [PATCH 43/82] =?UTF-8?q?Oh=20l=C3=A0=20l=C3=A0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQCSim-common/SQCSim-common.vcxproj | 2 +- SQCSim-srv/SQCSim-srv.vcxproj | 2 +- SQCSim2021/SQCSim2021.vcxproj | 2 +- SQCSim2021/engine.cpp | 62 +++++++++++++---------------- 4 files changed, 31 insertions(+), 37 deletions(-) diff --git a/SQCSim-common/SQCSim-common.vcxproj b/SQCSim-common/SQCSim-common.vcxproj index 4ba7bd4..c618082 100644 --- a/SQCSim-common/SQCSim-common.vcxproj +++ b/SQCSim-common/SQCSim-common.vcxproj @@ -48,7 +48,7 @@ StaticLibrary false - v143 + ClangCL true Unicode diff --git a/SQCSim-srv/SQCSim-srv.vcxproj b/SQCSim-srv/SQCSim-srv.vcxproj index d080276..b0dcd9c 100644 --- a/SQCSim-srv/SQCSim-srv.vcxproj +++ b/SQCSim-srv/SQCSim-srv.vcxproj @@ -48,7 +48,7 @@ Application false - v143 + ClangCL true Unicode diff --git a/SQCSim2021/SQCSim2021.vcxproj b/SQCSim2021/SQCSim2021.vcxproj index 31e1b8b..cda35f7 100644 --- a/SQCSim2021/SQCSim2021.vcxproj +++ b/SQCSim2021/SQCSim2021.vcxproj @@ -91,7 +91,7 @@ false true Unicode - v143 + ClangCL diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 03bbdd2..116f9b1 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -238,7 +238,7 @@ void Engine::LoadResource() { TextureAtlas::TextureIndex JumpQuarterBackLeftShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueBackLeftJumpLeftShootingLeft.png"); ////38 TextureAtlas::TextureIndex JumpQuarterBackRightShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueBackRightJumpRightShootingRight.png"); ////39 TextureAtlas::TextureIndex JumpBackShoot = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT1 "BlueBackJumpRightShootingRight.png"); ////40 - + //SHOOTINGJUMP TIRER TextureAtlas::TextureIndex JumpFrontShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueFrontJumpRightShootingRightShoot1.png"); ////41 @@ -249,9 +249,9 @@ void Engine::LoadResource() { TextureAtlas::TextureIndex JumpQuarterBackLeftShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackLeftJumpLeftShootingLeftShoot1.png"); ////46 TextureAtlas::TextureIndex JumpQuarterBackRightShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackRightJumpRightShootingRightShoot1.png"); ////47 TextureAtlas::TextureIndex JumpBackShootFire = m_animeAtlas.AddTexture(ANIM_PATH_JSHOOT2 "BlueBackJumpRightShootingRightShoot1.png"); ////48 - - - + + + if (!m_animeAtlas.Generate(TEXTURE_SIZE, false)) { std::cout << " Unable to generate texture atlas ..." << std::endl; abort(); @@ -659,17 +659,7 @@ void Engine::PrintText(float x, float y, const std::string& t, float charSizeMul int Engine::GetFps(float elapsedTime) const { return 1 / elapsedTime; } int Engine::GetCountdown(float elapsedTime) { - //if (m_resetcountdown) { -// m_nbReductionChunk = 4; -// m_timerReductionChunk = 30; - // m_countdown = m_time + COUNTDOWN; -// m_resetcountdown = false; -// } -// if (m_countdown < m_time) {} - // Stop(); - //if (!m_stopcountdown) - m_time += elapsedTime; - return m_countdown;// -(int)m_time; + return m_countdown; } int Engine::GetOptionsChoice() { @@ -1216,16 +1206,13 @@ void Engine::Render(float elapsedTime) { HideCursor(); CenterMouse(); //D�placement de centermouse dans l'action de jouer - //static float gameTime = elapsedTime; static irrklang::ISound* step; // Pour les sons de pas. static float pollTime = 0; static float bulletTime = 0; - static float gameTime = 0; static BlockType bloc = 1; if (elapsedTime > 0.1f) return; - //gameTime += elapsedTime; pollTime += elapsedTime; Transformation all; @@ -1269,13 +1256,6 @@ void Engine::Render(float elapsedTime) { m_player.ApplyTransformation(remotePlayer, true, false); - //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. m_mouseWU = m_mouseWD = m_key1 = m_key2 = false; netprot::ChunkMod* cmod = nullptr; if (m_mouseL) { @@ -1324,8 +1304,6 @@ void Engine::Render(float elapsedTime) { } } - gameTime += elapsedTime * 10; - m_world.Update(m_bullets, m_player.GetPosition(), m_blockinfo); m_renderer.UpdateMesh(&m_world, m_player.GetPosition(), m_blockinfo); m_renderer.RenderWorld(&m_world, m_renderCount, m_player.GetPosition(), m_player.GetDirection(), all, m_shader01, m_textureAtlas); @@ -1336,11 +1314,20 @@ void Engine::Render(float elapsedTime) { if (m_damage) { InstantDamage(); } - static bool fell = false; - if (m_player.GetPosition().y < 1.7f && !fell) { + static bool died = false; + if ((m_player.GetPosition().y < 1.7f || m_player.AmIDead()) && !died) { m_audio.Create3DAudioObj(m_scream, AUDIO_PATH "scream.wav", m_player.GetPOV(), m_player.GetVelocity(), false, 1.f); - fell = true; + died = true; } + if (m_player.GetPosition().y < 15.f || died) { + died = false; + std::string user = m_player.m_username.append(" (Dead)"); + m_player = Player(Vector3f(.5, CHUNK_SIZE_Y + 1.7f, .5), 0, 0); + m_player.m_username = user; + + } + + m_time += elapsedTime; if (m_networkgame) { // Pour se gerer le paquet. static bool has_synced = false; @@ -1419,8 +1406,7 @@ void Engine::Render(float elapsedTime) { if (m_syncs.count(sync.timestamp)) { Sync comp = m_syncs[sync.timestamp]; - //std::cout << "HP: " << sync.hp << std::endl; - //m_player.InflictDamage(sync.hp - comp.hp); + m_player.InflictDamage(sync.hp - comp.hp); Vector3f diff = sync.position - comp.position; @@ -1436,7 +1422,6 @@ void Engine::Render(float elapsedTime) { m_syncs.erase(sync.timestamp); } - //else SystemNotification("sync be no good."); } break; case OUTPUT: @@ -1497,10 +1482,19 @@ void Engine::Render(float elapsedTime) { RemotePlayer* rt = static_cast(player); glClear(GL_STENCIL_BUFFER_BIT); rt->Render(m_animeAtlas, m_shader01, all, elapsedTime, m_player); - m_otherplayerpos = player->GetPosition(); // Aller chercher GetPosition des deux façon, voir si ça chie. } glEnable(GL_CULL_FACE); } + else { + if (m_resetcountdown) { + m_nbReductionChunk = 4; + m_timerReductionChunk = 30; + m_countdown = m_time + COUNTDOWN; + m_resetcountdown = false; + } + if (!m_stopcountdown) + m_countdown -= (int)m_time; + } DrawHud(elapsedTime, bloc); DisplayPovGun(); From b7b6a8cc7bcdd957215a590c7cc4670371851595 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Thu, 7 Dec 2023 12:15:57 -0500 Subject: [PATCH 44/82] I hurt myself today ... because of the serveur. --- SQCSim2021/engine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 116f9b1..27d4136 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -1406,7 +1406,7 @@ void Engine::Render(float elapsedTime) { if (m_syncs.count(sync.timestamp)) { Sync comp = m_syncs[sync.timestamp]; - m_player.InflictDamage(sync.hp - comp.hp); + //m_player.InflictDamage(sync.hp - comp.hp); Vector3f diff = sync.position - comp.position; From e9e2a56be654de843812f52524e94ba6d9d80f6e Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Thu, 7 Dec 2023 12:21:21 -0500 Subject: [PATCH 45/82] OOPS I DID IT AGAIN. I PLAYED WITH THE CODE, GOT LOST IN THE MORT. --- SQCSim2021/engine.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 27d4136..ff183ea 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -1315,11 +1315,11 @@ void Engine::Render(float elapsedTime) { InstantDamage(); } static bool died = false; - if ((m_player.GetPosition().y < 1.7f || m_player.AmIDead()) && !died) { + if ((m_player.GetPosition().y < -1.7f || m_player.AmIDead()) && !died) { m_audio.Create3DAudioObj(m_scream, AUDIO_PATH "scream.wav", m_player.GetPOV(), m_player.GetVelocity(), false, 1.f); died = true; } - if (m_player.GetPosition().y < 15.f || died) { + if (m_player.GetPosition().y < -15.f || died) { died = false; std::string user = m_player.m_username.append(" (Dead)"); m_player = Player(Vector3f(.5, CHUNK_SIZE_Y + 1.7f, .5), 0, 0); From 3e8497f43bf4ef7d0cad103811af91a664068bae Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Thu, 7 Dec 2023 12:22:49 -0500 Subject: [PATCH 46/82] :dizzy: --- SQCSim2021/remoteplayer.cpp | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index f896d4f..e355ae2 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -145,13 +145,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 9; } - else if (current.states.jumping && current.states.shooting) { + else if (current.states.jumping && current.states.shooting && m_position.y > 0) { if (Shooting) index = 41; else index = 33; } - else if (current.states.jumping) + else if (current.states.jumping && m_position.y > 0) index = 25; else if (current.states.running && current.states.still) index = 0; @@ -165,13 +165,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 10; } - else if (current.states.jumping && current.states.shooting) { + else if (current.states.jumping && current.states.shooting && m_position.y > 0) { if (Shooting) index = 42; else index = 34; } - else if (current.states.jumping) + else if (current.states.jumping && m_position.y > 0) index = 26; else if (current.states.running && current.states.still) index = 1; @@ -185,13 +185,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 12; } - else if (current.states.jumping && current.states.shooting) { + else if (current.states.jumping && current.states.shooting && m_position.y > 0) { if (Shooting) index = 44; else index = 36; } - else if (current.states.jumping) + else if (current.states.jumping && m_position.y > 0) index = 28; else if (current.states.running && current.states.still) index = 3; @@ -205,13 +205,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 14; } - else if (current.states.jumping && current.states.shooting) { + else if (current.states.jumping && current.states.shooting && m_position.y > 0) { if (Shooting) index = 46; else index = 38; } - else if (current.states.jumping) + else if (current.states.jumping && m_position.y > 0) index = 30; else if (current.states.running && current.states.still) index = 5; @@ -224,13 +224,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 16; } - else if (current.states.jumping && current.states.shooting) { + else if (current.states.jumping && current.states.shooting && m_position.y > 0) { if (Shooting) index = 48; else index = 40; } - else if (current.states.jumping) + else if (current.states.jumping && m_position.y > 0) index = 32; else if (current.states.running && current.states.still) index = 7; @@ -244,13 +244,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 11; } - else if (current.states.jumping && current.states.shooting) { + else if (current.states.jumping && current.states.shooting && m_position.y > 0) { if (Shooting) index = 43; else index = 35; } - else if (current.states.jumping) + else if (current.states.jumping && m_position.y > 0) index = 27; else if (current.states.running && current.states.still) index = 2; @@ -264,13 +264,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 13; } - else if (current.states.jumping && current.states.shooting) { + else if (current.states.jumping && current.states.shooting && m_position.y > 0) { if (Shooting) index = 45; else index = 37; } - else if (current.states.jumping) + else if (current.states.jumping && m_position.y > 0) index = 29; else if (current.states.running && current.states.still) index = 4; @@ -284,13 +284,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 15; } - else if (current.states.jumping && current.states.shooting) { + else if (current.states.jumping && current.states.shooting && m_position.y > 0) { if (Shooting) index = 47; else index = 39; } - else if (current.states.jumping) + else if (current.states.jumping && m_position.y > 0) index = 31; else if (current.states.running && current.states.still) index = 6; From 0a08a22c600899713d8c83ff63d8a9bcb788a590 Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Thu, 7 Dec 2023 12:31:04 -0500 Subject: [PATCH 47/82] Jump && shoot --- SQCSim2021/remoteplayer.cpp | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index e355ae2..f423f40 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -145,13 +145,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 9; } - else if (current.states.jumping && current.states.shooting && m_position.y > 0) { + else if (current.states.jumping && current.states.shooting ) { if (Shooting) index = 41; else index = 33; } - else if (current.states.jumping && m_position.y > 0) + else if (current.states.jumping) index = 25; else if (current.states.running && current.states.still) index = 0; @@ -165,13 +165,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 10; } - else if (current.states.jumping && current.states.shooting && m_position.y > 0) { + else if (current.states.jumping && current.states.shooting ) { if (Shooting) index = 42; else index = 34; } - else if (current.states.jumping && m_position.y > 0) + else if (current.states.jumping ) index = 26; else if (current.states.running && current.states.still) index = 1; @@ -185,13 +185,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 12; } - else if (current.states.jumping && current.states.shooting && m_position.y > 0) { + else if (current.states.jumping && current.states.shooting ) { if (Shooting) index = 44; else index = 36; } - else if (current.states.jumping && m_position.y > 0) + else if (current.states.jumping ) index = 28; else if (current.states.running && current.states.still) index = 3; @@ -205,13 +205,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 14; } - else if (current.states.jumping && current.states.shooting && m_position.y > 0) { + else if (current.states.jumping && current.states.shooting) { if (Shooting) index = 46; else index = 38; } - else if (current.states.jumping && m_position.y > 0) + else if (current.states.jumping) index = 30; else if (current.states.running && current.states.still) index = 5; @@ -224,13 +224,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 16; } - else if (current.states.jumping && current.states.shooting && m_position.y > 0) { + else if (current.states.jumping && current.states.shooting) { if (Shooting) index = 48; else index = 40; } - else if (current.states.jumping && m_position.y > 0) + else if (current.states.jumping ) index = 32; else if (current.states.running && current.states.still) index = 7; @@ -244,13 +244,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 11; } - else if (current.states.jumping && current.states.shooting && m_position.y > 0) { + else if (current.states.jumping && current.states.shooting) { if (Shooting) index = 43; else index = 35; } - else if (current.states.jumping && m_position.y > 0) + else if (current.states.jumping) index = 27; else if (current.states.running && current.states.still) index = 2; @@ -264,13 +264,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 13; } - else if (current.states.jumping && current.states.shooting && m_position.y > 0) { + else if (current.states.jumping && current.states.shooting) { if (Shooting) index = 45; else index = 37; } - else if (current.states.jumping && m_position.y > 0) + else if (current.states.jumping) index = 29; else if (current.states.running && current.states.still) index = 4; @@ -284,13 +284,13 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 15; } - else if (current.states.jumping && current.states.shooting && m_position.y > 0) { + else if (current.states.jumping && current.states.shooting ) { if (Shooting) index = 47; else index = 39; } - else if (current.states.jumping && m_position.y > 0) + else if (current.states.jumping) index = 31; else if (current.states.running && current.states.still) index = 6; From 74b808f46ba3fc14d05d2d99e29d327acad7e2f7 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Thu, 7 Dec 2023 12:32:36 -0500 Subject: [PATCH 48/82] Jump and Shoot! :notes: --- SQCSim-common/player.cpp | 6 ++---- SQCSim-common/player.h | 1 + SQCSim-srv/connection.cpp | 4 ++-- SQCSim2021/engine.cpp | 5 ++++- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/SQCSim-common/player.cpp b/SQCSim-common/player.cpp index 3d4f56d..85df138 100644 --- a/SQCSim-common/player.cpp +++ b/SQCSim-common/player.cpp @@ -276,11 +276,9 @@ void Player::Teleport(int& x, int& z) { m_position.x -= x * CHUNK_SIZE_X; m_position.z -= z * CHUNK_SIZE_Z; } -bool Player::AmIDead() -{ - return m_hp <= 0; -} +bool Player::GetIsAirborne() const { return m_airborne; } +bool Player::AmIDead() { return m_hp <= 0; } void Player::InflictDamage(float hitPoints) { m_hp -= hitPoints; diff --git a/SQCSim-common/player.h b/SQCSim-common/player.h index b3d715e..6117605 100644 --- a/SQCSim-common/player.h +++ b/SQCSim-common/player.h @@ -35,6 +35,7 @@ public: float GetHP() const; void Teleport(int& x, int& z); + bool GetIsAirborne() const; bool AmIDead(); void InflictDamage(float hitPoints); int getScore() const; diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp index 13ada7d..c7b1cb1 100644 --- a/SQCSim-srv/connection.cpp +++ b/SQCSim-srv/connection.cpp @@ -144,8 +144,8 @@ Timestamp Connection::Run(World* world) { player->Killer = GetHash(true); } - out.states.jumping = abs(player->GetVelocity().y) > .2f; - out.states.running = player->GetVelocity().Length() > .3f; + out.states.jumping = player->GetIsAirborne(); //abs(player->GetVelocity().y) > .2f; + out.states.running = player->GetVelocity().Length() > .5f; out.states.still = !out.states.running; out.states.hit = player->m_hit; player->m_hit = false; diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index ff183ea..88472a1 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -1319,7 +1319,7 @@ void Engine::Render(float elapsedTime) { m_audio.Create3DAudioObj(m_scream, AUDIO_PATH "scream.wav", m_player.GetPOV(), m_player.GetVelocity(), false, 1.f); died = true; } - if (m_player.GetPosition().y < -15.f || died) { + if (m_player.GetPosition().y < -21.f || died) { died = false; std::string user = m_player.m_username.append(" (Dead)"); m_player = Player(Vector3f(.5, CHUNK_SIZE_Y + 1.7f, .5), 0, 0); @@ -1432,6 +1432,9 @@ void Engine::Render(float elapsedTime) { } RemotePlayer* rt = static_cast(m_players[out.id]); rt->Feed(out); + if (rt->AmIDead()) { + m_audio.Create3DAudioObj(m_scream, AUDIO_PATH "scream.wav", m_player.GetPOV(), m_player.GetVelocity(), false, 1.f); + } } break; case CHUNKMOD: From 1905c3192388d9113846065b27e18f4b96425a2f Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Thu, 7 Dec 2023 12:43:16 -0500 Subject: [PATCH 49/82] Push && Pull --- SQCSim2021/remoteplayer.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index f423f40..2983bc2 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -145,7 +145,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 9; } - else if (current.states.jumping && current.states.shooting ) { + else if (current.states.jumpshot) { if (Shooting) index = 41; else @@ -165,7 +165,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 10; } - else if (current.states.jumping && current.states.shooting ) { + else if (current.states.jumpshot) { if (Shooting) index = 42; else @@ -185,7 +185,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 12; } - else if (current.states.jumping && current.states.shooting ) { + else if (current.states.jumpshot ) { if (Shooting) index = 44; else @@ -205,7 +205,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 14; } - else if (current.states.jumping && current.states.shooting) { + else if (current.states.jumpshot) { if (Shooting) index = 46; else @@ -224,7 +224,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 16; } - else if (current.states.jumping && current.states.shooting) { + else if (current.states.jumpshot) { if (Shooting) index = 48; else @@ -244,7 +244,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 11; } - else if (current.states.jumping && current.states.shooting) { + else if (current.states.jumpshot) { if (Shooting) index = 43; else @@ -264,7 +264,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 13; } - else if (current.states.jumping && current.states.shooting) { + else if (current.states.jumpshot) { if (Shooting) index = 45; else @@ -284,7 +284,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr else index = 15; } - else if (current.states.jumping && current.states.shooting ) { + else if (current.states.jumpshot) { if (Shooting) index = 47; else From 11458214d052c2c0843df7c46503e5060b6651af Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Thu, 7 Dec 2023 12:43:40 -0500 Subject: [PATCH 50/82] Update connection.cpp --- SQCSim-srv/connection.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp index c7b1cb1..2c1948b 100644 --- a/SQCSim-srv/connection.cpp +++ b/SQCSim-srv/connection.cpp @@ -171,12 +171,14 @@ Timestamp Connection::Run(World* world) { } else toggle = false; - out.states.jumpshot = false; + out.states.shooting = in.keys.shoot; + + if (out.states.jumping && out.states.shooting) + out.states.jumpshot = true; + else out.states.jumpshot = 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; - if (out.states.jumping) - out.states.jumpshot = true; m_shoot_acc = BULLET_TIME; } From 4e0a9cea35725389d08b81ebdfd4fe71a7865c21 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Thu, 7 Dec 2023 12:48:48 -0500 Subject: [PATCH 51/82] Crosby, Still, Jump and Shoot --- SQCSim-srv/connection.cpp | 2 +- SQCSim2021/engine.cpp | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp index 2c1948b..61961cf 100644 --- a/SQCSim-srv/connection.cpp +++ b/SQCSim-srv/connection.cpp @@ -146,7 +146,7 @@ Timestamp Connection::Run(World* world) { out.states.jumping = player->GetIsAirborne(); //abs(player->GetVelocity().y) > .2f; out.states.running = player->GetVelocity().Length() > .5f; - out.states.still = !out.states.running; + out.states.still = !out.states.running && !out.states.jumping; out.states.hit = player->m_hit; player->m_hit = false; diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 88472a1..c39e2fc 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -1287,15 +1287,15 @@ void Engine::Render(float elapsedTime) { for (int b = 0; b < BULLET_UPDATES_PER_FRAME; ++b) { if (m_bullets[x]->Update(&m_world, elapsedTime, BULLET_UPDATES_PER_FRAME, m_players, m_networkgame ? &m_chunkmod : nullptr)) { m_bullets[x]->~Bullet(); - if (m_whoosh[x]) - m_whoosh[x]->drop(); - m_bullets[x] = nullptr; + //if (m_whoosh[x]) + // m_whoosh[x]->drop(); + //m_bullets[x] = nullptr; m_whoosh[x] = nullptr; break; } - else if (!m_whoosh[x]) { - m_whoosh[x] = m_audio.Create3DAudioObj(m_whoosh[x], AUDIO_PATH "noise.wav", m_bullets[x]->getPos(), m_bullets[x]->getVel(), true, (m_bullets[x]->getPos() - m_player.GetPosition()).Length()); - } + // else if (!m_whoosh[x]) { + // m_whoosh[x] = m_audio.Create3DAudioObj(m_whoosh[x], AUDIO_PATH "noise.wav", m_bullets[x]->getPos(), m_bullets[x]->getVel(), true, (m_bullets[x]->getPos() - m_player.GetPosition()).Length()); + // } else { Vector3f pos = m_bullets[x]->getPos(), vel = m_bullets[x]->getVel(); m_audio.Render3DAudioObj(m_whoosh[x], pos, vel, 5 - (m_bullets[x]->getPos() - m_player.GetPosition()).Length()); From 5696e204524a0c17eb43c904b97ff88a3f43cace Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Thu, 7 Dec 2023 12:51:17 -0500 Subject: [PATCH 52/82] =?UTF-8?q?G=C3=A9riboire!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQCSim2021/engine.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index c39e2fc..b1bdb34 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -1290,16 +1290,16 @@ void Engine::Render(float elapsedTime) { //if (m_whoosh[x]) // m_whoosh[x]->drop(); //m_bullets[x] = nullptr; - m_whoosh[x] = nullptr; + //m_whoosh[x] = nullptr; break; } // else if (!m_whoosh[x]) { // m_whoosh[x] = m_audio.Create3DAudioObj(m_whoosh[x], AUDIO_PATH "noise.wav", m_bullets[x]->getPos(), m_bullets[x]->getVel(), true, (m_bullets[x]->getPos() - m_player.GetPosition()).Length()); // } - else { - Vector3f pos = m_bullets[x]->getPos(), vel = m_bullets[x]->getVel(); - m_audio.Render3DAudioObj(m_whoosh[x], pos, vel, 5 - (m_bullets[x]->getPos() - m_player.GetPosition()).Length()); - } + // else { + // Vector3f pos = m_bullets[x]->getPos(), vel = m_bullets[x]->getVel(); + // m_audio.Render3DAudioObj(m_whoosh[x], pos, vel, 5 - (m_bullets[x]->getPos() - m_player.GetPosition()).Length()); + // } } } } From bc865dd9b5fc87e1abaef8d5ee61bede1ab861e7 Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Thu, 7 Dec 2023 13:05:21 -0500 Subject: [PATCH 53/82] Bacon :bangbang: --- SQCSim2021/remoteplayer.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index 2983bc2..357d9f1 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -153,7 +153,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (current.states.jumping) index = 25; - else if (current.states.running && current.states.still) + else if (current.states.running || current.states.still) index = 0; } @@ -173,7 +173,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (current.states.jumping ) index = 26; - else if (current.states.running && current.states.still) + else if (current.states.running || current.states.still) index = 1; } @@ -193,7 +193,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (current.states.jumping ) index = 28; - else if (current.states.running && current.states.still) + else if (current.states.running || current.states.still) index = 3; } @@ -213,7 +213,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (current.states.jumping) index = 30; - else if (current.states.running && current.states.still) + else if (current.states.running || current.states.still) index = 5; } else if (angle < -0.75) //Dos - side négatif @@ -232,7 +232,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (current.states.jumping ) index = 32; - else if (current.states.running && current.states.still) + else if (current.states.running || current.states.still) index = 7; } @@ -252,7 +252,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (current.states.jumping) index = 27; - else if (current.states.running && current.states.still) + else if (current.states.running || current.states.still) index = 2; } @@ -272,7 +272,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (current.states.jumping) index = 29; - else if (current.states.running && current.states.still) + else if (current.states.running || current.states.still) index = 4; } @@ -292,7 +292,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (current.states.jumping) index = 31; - else if (current.states.running && current.states.still) + else if (current.states.running || current.states.still) index = 6; } From f6c5379a8c55e6a63763b7cb2fb8d9b7e04e1717 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Thu, 7 Dec 2023 13:05:52 -0500 Subject: [PATCH 54/82] =?UTF-8?q?=C2=B0Oo.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQCSim-srv/server.cpp | 16 ++++++++++------ SQCSim-srv/server.h | 1 + 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index 0e5221d..d749bb4 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -224,6 +224,14 @@ void Server::Run() { std::vector bullets, outbox_bullets; std::vector netbull; + Chat* startchat; + startchat->src_id = 0; + char startmess[] = "How would YOU like to die today, motherfuckers?"; + + strcpy(startchat->mess, 140, startmess); + + chatlog.emplace_back(startchat); + while (!endgame) { using namespace std::chrono; Timestamp tstamp = duration_cast(high_resolution_clock::now() - start).count(); @@ -330,10 +338,6 @@ void Server::Run() { } } - //for (auto& bull : outbox_bullets) - // delete bull; - //outbox_bullets.clear(); - for (auto& chat : chatlog) { Log(chat->mess, false, false); for (auto& [key, conn] : m_conns) @@ -354,7 +358,7 @@ void Server::Run() { Chat end; end.src_id = 0; - char endmess[] = "Game over, mothereffers."; + char endmess[] = "Game over, man. Game over."; strcpy(end.mess, 140, endmess); @@ -362,7 +366,7 @@ void Server::Run() { sendPackTo(m_sock_udp, &end, &m_buf, conn->getAddr()); // TODO: Gérer les 2-3 secondes post-game avant le billboard pour pas avoir un whiplash à la fin de la game. - + system("pause"); } inline std::string Server::LogTimestamp() { diff --git a/SQCSim-srv/server.h b/SQCSim-srv/server.h index 33fde93..72c0945 100644 --- a/SQCSim-srv/server.h +++ b/SQCSim-srv/server.h @@ -1,6 +1,7 @@ #ifndef SERVER_H__ #define SERVER_H__ +#include #include #include #include From 33bcdea06f38dfecf16c6ec8c1ba9f161749f5dd Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Thu, 7 Dec 2023 13:34:58 -0500 Subject: [PATCH 55/82] IT'S LEAKING! --- SQCSim-srv/server.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index d749bb4..622ab6c 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -224,9 +224,9 @@ void Server::Run() { std::vector bullets, outbox_bullets; std::vector netbull; - Chat* startchat; + Chat* startchat = new Chat(); startchat->src_id = 0; - char startmess[] = "How would YOU like to die today, motherfuckers?"; + char startmess[] = "How would -YOU- like to die today, motherfuckers?"; strcpy(startchat->mess, 140, startmess); @@ -244,7 +244,7 @@ void Server::Run() { sync_acc -= 1000; --timer; std::string str = "Timer: "; - Log(str.append(std::to_string(timer).append(" SyncAcc: ").append(std::to_string(sync_acc))), false, false); + Log(str.append(std::to_string(timer)), false, false); } last = tstamp; @@ -296,7 +296,7 @@ void Server::Run() { } else { for (auto& chmo : conn->ChunkDiffs) - chunkdiffs.emplace_back(chmo); + chunkdiffs.emplace_back(std::move(chmo)); conn->ChunkDiffs.clear(); for (auto& bull : conn->Bullets) { @@ -308,7 +308,7 @@ void Server::Run() { nbul->id = key; nbul->tstamp = tstamp; - netbull.emplace_back(nbul); + netbull.emplace_back(std::move(nbul)); } conn->Bullets.clear(); } @@ -333,10 +333,11 @@ void Server::Run() { ChunkMod* cmod = nullptr; if (bull->Update(m_world, (1. / 60.), 20, m_players, &cmod)) { if (cmod) - chunkdiffs.emplace_back(cmod); + chunkdiffs.emplace_back(std::move(cmod)); outbox_bullets.emplace_back(std::move(bull)); } } + netbull.clear(); for (auto& chat : chatlog) { Log(chat->mess, false, false); @@ -344,16 +345,18 @@ void Server::Run() { sendPackTo(m_sock_udp, chat, &m_buf, conn->getAddr()); delete chat; } + chatlog.clear(); for (auto& chmo : chunkdiffs) { for (auto& [key, conn] : m_conns) sendPackTo(m_sock_udp, chmo, &m_buf, conn->getAddr()); delete chmo; } - - netbull.clear(); chunkdiffs.clear(); - chatlog.clear(); + + for (auto& bull : outbox_bullets) + delete bull; + outbox_bullets.clear(); } Chat end; From c66e49ab0c319b30a5c0aa9c97501999944f4110 Mon Sep 17 00:00:00 2001 From: mduval76 <9343789@etu.cegepsth.qc.ca> Date: Thu, 7 Dec 2023 13:55:44 -0500 Subject: [PATCH 56/82] Push de quoi --- SQCSim2021/engine.cpp | 55 +- .../engine.cpp | 1893 ----------------- 2 files changed, 36 insertions(+), 1912 deletions(-) delete mode 100644 enc_temp_folder/b3c3cb753ef72fdaf31cb22525389b8/engine.cpp diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 1fdb750..6d466e0 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -714,50 +714,67 @@ void Engine::DisplaySplashScreen() { void Engine::DisplayLobbyMenu() { GLint viewport[4]; glGetIntegerv(GL_VIEWPORT, viewport); - - glDisable(GL_STENCIL_TEST); glDisable(GL_DEPTH_TEST); + glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glBlendEquation(GL_FUNC_ADD); + glBlendFunc(GL_SRC_ALPHA, GL_ONE); glMatrixMode(GL_PROJECTION); glPushMatrix(); - glLoadIdentity(); glOrtho(0, Width(), 0, Height(), -1, 1); glMatrixMode(GL_MODELVIEW); glPushMatrix(); + glLoadIdentity(); m_textureLobbyMenu.Bind(); glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(0, 0); - glTexCoord2f(1, 0); glVertex2i(Width(), 0); - glTexCoord2f(1, 1); glVertex2i(Width(), Height()); + glTexCoord2f(0, 0); glVertex2i(0, 0); + glTexCoord2f(1, 0); glVertex2i(Width(), 0); + glTexCoord2f(1, 1); glVertex2i(Width(), Height()); glTexCoord2f(0, 1); glVertex2i(0, Height()); glEnd(); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE); + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); m_textureFont.Bind(); std::ostringstream ss; + ss.str(""); + ss << "Identify yourself!"; + PrintText(Width() * 0.625f, Height() * 0.825f, ss.str(), 2.5f); + glBindTexture(GL_TEXTURE_2D, 0); + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(Width() * 0.6, Height() * 0.47); + glTexCoord2f(1, 0); glVertex2i(Width() * 0.95, Height() * 0.47); + glTexCoord2f(1, 1); glVertex2i(Width() * 0.95, Height() * 0.475); + glTexCoord2f(0, 1); glVertex2i(Width() * 0.6, Height() * 0.475); + glEnd(); + + + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(Width() * 0.6, Height() * 0.415); + glTexCoord2f(1, 0); glVertex2i(Width() * 0.95, Height() * 0.415); + glTexCoord2f(1, 1); glVertex2i(Width() * 0.95, Height() * 0.42); + glTexCoord2f(0, 1); glVertex2i(Width() * 0.6, Height() * 0.42); + glEnd(); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + + + m_textureFont.Bind(); + glColor4f(1.0f, 0.0f, 0.0f, 1.0f); + ss.str(""); + ss << "_________"; + PrintText(Width() * 0.627f, Height() * 0.435f, ss.str(), 2.5f); glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - glBindTexture(GL_TEXTURE_2D, 0); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(Width() * 0.6, Height() * 0.425); - glTexCoord2f(1, 0); glVertex2i(Width() * 0.95, Height() * 0.425); - glTexCoord2f(1, 1); glVertex2i(Width() * 0.95, Height() * 0.475); - glTexCoord2f(0, 1); glVertex2i(Width() * 0.6, Height() * 0.475); - glEnd(); - glViewport(viewport[0], viewport[1], viewport[2], viewport[3]); - glEnable(GL_STENCIL_TEST); glEnable(GL_DEPTH_TEST); glMatrixMode(GL_PROJECTION); diff --git a/enc_temp_folder/b3c3cb753ef72fdaf31cb22525389b8/engine.cpp b/enc_temp_folder/b3c3cb753ef72fdaf31cb22525389b8/engine.cpp deleted file mode 100644 index 508c0e3..0000000 --- a/enc_temp_folder/b3c3cb753ef72fdaf31cb22525389b8/engine.cpp +++ /dev/null @@ -1,1893 +0,0 @@ -#include "engine.h" -#include -#include -#include -#include -#include -#include -#include - -// Define a structure to represent notifications -struct Notification { - std::string message; - float displayStartTime = 0.0f; -}; - -// Use a queue to manage notifications -//std::queue notificationQueue; -// Use a vector to manage notifications -std::vector notifications; - -Engine::Engine() : m_remotePlayer(&m_pinfo), m_pinfo() {} - -Engine::~Engine() { - m_world.CleanUpWorld(m_renderCount, true); - for (int x = 0; x < WORLD_SIZE_X; ++x) - for (int y = 0; y < WORLD_SIZE_Y; ++y) - if (m_world.GetChunks().Get(x, y)) - m_world.GetChunks().Get(x, y)->~Chunk(); -} - -void Engine::Init() { - GLenum glewErr = glewInit(); - if (glewErr != GLEW_OK) { - std::cerr << " ERREUR GLEW : " << glewGetErrorString(glewErr) << std::endl; - abort(); - } - - uint64_t seed = SEED; - - glDisable(GL_FRAMEBUFFER_SRGB); - glEnable(GL_DEPTH_TEST); - glEnable(GL_STENCIL_TEST); - glEnable(GL_POINT_SMOOTH); - glEnable(GL_BLEND); - glEnable(GL_TEXTURE_2D); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - gluPerspective(45.0f, (float)Width() / (float)Height(), 0.1f, VIEW_DISTANCE); - glShadeModel(GL_SMOOTH); - - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); - glDisable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glBlendEquation(GL_FUNC_SUBTRACT); - - if (m_istarted) - return; - else m_istarted = true; - - // Objet de skybox avec sa propre texture et son propre shader! - m_skybox.Init(0.2f); - // Objet de musique! - //m_audio.ToggleMusicState(); - - // Array pour les balles. - for (int x = 0; x < MAX_BULLETS; ++x) { - m_bullets[x] = nullptr; - m_whoosh[x] = nullptr; - } - - m_world.SetSeed(seed); - - // Init Chunks - m_world.GetChunks().Reset(nullptr); - - m_startTime = std::chrono::high_resolution_clock::now(); -} - -void Engine::DeInit() {} - -void Engine::LoadResource() { - LoadTexture(m_skybox.GetTexture(), TEXTURE_PATH "skybox.png", true); - LoadTexture(m_textureCrosshair, TEXTURE_PATH "cross.bmp", true); - LoadTexture(m_textureFont, TEXTURE_PATH "font.bmp", true); - LoadTexture(m_textureGun, TEXTURE_PATH "gun01.png", false); - LoadTexture(m_texturePovGun, TEXTURE_PATH "GUN.png", false); - - LoadTexture(m_textureLobbyMenu, TEXTURE_PATH "menus/backgrounds/bgLobby.png", false); - LoadTexture(m_textureMainMenu, TEXTURE_PATH "menus/backgrounds/bgMainMenu.png", false); - //LoadTexture(m_texturePauseMenu, TEXTURE_PATH "menus/backgrounds/bgPause.png", false); - LoadTexture(m_textureOptionsMenu, TEXTURE_PATH "menus/backgrounds/bgOptions.png", false); - LoadTexture(m_textureSplashScreen, TEXTURE_PATH "menus/backgrounds/bgSplash.png", false); - - LoadTexture(m_textureCheck, TEXTURE_PATH "menus/others/check.png", false); - LoadTexture(m_textureChecked, TEXTURE_PATH "menus/others/checked.png", false); - - LoadTexture(m_textureOptAudio, TEXTURE_PATH "menus/buttons/options/optAudio.png", false); - LoadTexture(m_textureOptBack, TEXTURE_PATH "menus/buttons/options/optBack.png", false); - LoadTexture(m_textureOptGameplay, TEXTURE_PATH "menus/buttons/options/optGameplay.png", false); - LoadTexture(m_textureOptGraphics, TEXTURE_PATH "menus/buttons/options/optGraphics.png", false); - LoadTexture(m_textureOptMain, TEXTURE_PATH "menus/buttons/options/optMain.png", false); - LoadTexture(m_textureOptMusic, TEXTURE_PATH "menus/buttons/options/optMusic.png", false); - LoadTexture(m_textureOptOptions, TEXTURE_PATH "menus/buttons/options/optOptions.png", false); - LoadTexture(m_textureOptResolution, TEXTURE_PATH "menus/buttons/options/optResolution.png", false); - LoadTexture(m_textureOptSensitivity, TEXTURE_PATH "menus/buttons/options/optSensitivity.png", false); - LoadTexture(m_textureOptSfx, TEXTURE_PATH "menus/buttons/options/optSfx.png", false); - - LoadTexture(m_textureHd, TEXTURE_PATH "menus/labels/labelHd.png", false); - LoadTexture(m_textureFhd, TEXTURE_PATH "menus/labels/labelFhd.png", false); - LoadTexture(m_textureQhd, TEXTURE_PATH "menus/labels/labelQhd.png", false); - LoadTexture(m_textureUhd, TEXTURE_PATH "menus/labels/labelUhd.png", false); - LoadTexture(m_textureMenuTitle, TEXTURE_PATH "menus/labels/labelTitle.png", false); - - LoadTexture(m_textureMenuBack, TEXTURE_PATH "menus/buttons/main/mainBack.png", false); - LoadTexture(m_textureMenuMulti, TEXTURE_PATH "menus/buttons/main/mainMulti.png", false); - LoadTexture(m_textureMenuOptions, TEXTURE_PATH "menus/buttons/main/mainOptions.png", false); - LoadTexture(m_textureMenuPlay, TEXTURE_PATH "menus/buttons/main/mainPlay.png", false); - LoadTexture(m_textureMenuQuit, TEXTURE_PATH "menus/buttons/main/mainQuit.png", false); - LoadTexture(m_textureMenuSingle, TEXTURE_PATH "menus/buttons/main/mainSingle.png", false); - - TextureAtlas::TextureIndex texDirtIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "metal3.png"); - TextureAtlas::TextureIndex texIceIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "metal2.png"); - TextureAtlas::TextureIndex texGrassIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "grass.png"); - TextureAtlas::TextureIndex texMetalIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "dirt.png"); - TextureAtlas::TextureIndex texGreenGrassIndex = m_textureAtlas.AddTexture(TEXTURE_PATH "greengrass.png"); - TextureAtlas::TextureIndex texBoostHeal = m_textureAtlas.AddTexture(BOOSTER_TEXTURE_PATH "BoosterVert.png"); - TextureAtlas::TextureIndex texBoostDmg = m_textureAtlas.AddTexture(BOOSTER_TEXTURE_PATH "BoosterRouge.png"); - TextureAtlas::TextureIndex texBoostSpd = m_textureAtlas.AddTexture(BOOSTER_TEXTURE_PATH "BoosterBleu.png"); - TextureAtlas::TextureIndex texBoostInv = m_textureAtlas.AddTexture(BOOSTER_TEXTURE_PATH "BoosterJaune.png"); - - //AJOUTER LES TEXTURES DANS L'ORDRE DE L'ÉNUM - - //JUMP - //TextureAtlas::TextureIndex JumpBack = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueBackJumpRight.png"); - //TextureAtlas::TextureIndex JumpFront = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueFrontJumpRight.png"); - //TextureAtlas::TextureIndex JumpQuarterBackLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeftBackJumpLeft.png"); - //TextureAtlas::TextureIndex JumpQuarterBackRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRightBackJumpRight.png"); - //TextureAtlas::TextureIndex JumpProfiltLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilJumpLeft.png"); - //TextureAtlas::TextureIndex JumpProfiltRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilJumpRight.png"); - //TextureAtlas::TextureIndex JumpQuarterFrontLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeftFrontJumpLeft.png"); - //TextureAtlas::TextureIndex JumpQuarterFrontRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRightFrontJumpRight.png"); - - //STILL - //TextureAtlas::TextureIndex StillBack = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueBackRight.png"); - TextureAtlas::TextureIndex StillFront = m_animeAtlas.AddTexture(ANIME_PATH_STILL "BlueFrontRight.png"); - //TextureAtlas::TextureIndex StillQuarterBackLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeftBack.png"); - //TextureAtlas::TextureIndex StillQuarterBackRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRightBack.png"); - //TextureAtlas::TextureIndex StillProfiltLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilLeft.png"); - //TextureAtlas::TextureIndex StillProfiltRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueProfilRight.png"); - //TextureAtlas::TextureIndex StillQuarterFrontLeft = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueLeft.png"); - //TextureAtlas::TextureIndex StillQuarterFrontRight = m_animeAtlas.AddTexture(ANIME_PATH_JUMP "BlueRight.png"); - - //SHOOTINGSTILL - //SHOOTINGJUMP - - if (!m_animeAtlas.Generate(TEXTURE_SIZE, false)) { - std::cout << " Unable to generate texture atlas ..." << std::endl; - abort(); - } - - if (!m_textureAtlas.Generate(TEXTURE_SIZE, false)) { - std::cout << " Unable to generate texture atlas ..." << std::endl; - abort(); - } - - float u, v, s; - m_textureAtlas.TextureIndexToCoord(texDirtIndex, u, v, s, s); - m_blockinfo[BTYPE_DIRT] = new BlockInfo(BTYPE_DIRT, "Dirt", u, v, s, 1); - m_textureAtlas.TextureIndexToCoord(texGrassIndex, u, v, s, s); - m_blockinfo[BTYPE_GRASS] = new BlockInfo(BTYPE_GRASS, "Grass", u, v, s, 1); - m_textureAtlas.TextureIndexToCoord(texMetalIndex, u, v, s, s); - m_blockinfo[BTYPE_METAL] = new BlockInfo(BTYPE_METAL, "Metal", u, v, s, 1); - m_textureAtlas.TextureIndexToCoord(texIceIndex, u, v, s, s); - m_blockinfo[BTYPE_ICE] = new BlockInfo(BTYPE_ICE, "Ice", u, v, s, 1); - m_textureAtlas.TextureIndexToCoord(texGreenGrassIndex, u, v, s, s); - m_blockinfo[BTYPE_GREENGRASS] = new BlockInfo(BTYPE_GREENGRASS, "GreenGrass", u, v, s, 1); - m_textureAtlas.TextureIndexToCoord(texBoostHeal, u, v, s, s); - m_boostinfo[BTYPE_HEAL] = new BoostInfo(BTYPE_HEAL, "Heal", u, v, s, 1); - m_textureAtlas.TextureIndexToCoord(texBoostDmg, u, v, s, s); - m_boostinfo[BTYPE_DAMAGE] = new BoostInfo(BTYPE_DAMAGE, "Dmg", u, v, s, 1); - m_textureAtlas.TextureIndexToCoord(texBoostSpd, u, v, s, s); - m_boostinfo[BTYPE_SPEED] = new BoostInfo(BTYPE_SPEED, "Spd", u, v, s, 1); - m_textureAtlas.TextureIndexToCoord(texIceIndex, u, v, s, s); - m_boostinfo[BTYPE_INVINCIBLE] = new BoostInfo(BTYPE_INVINCIBLE, "Inv", u, v, s, 1); - - m_animeAtlas.TextureIndexToCoord(0, u, v, s, s); - - std::cout << " Loading and compiling shaders ..." << std::endl; - if (!m_shader01.Load(SHADER_PATH "shader01.vert", SHADER_PATH "shader01.frag", true)) { - std::cout << " Failed to load shader " << std::endl; - exit(1); - } - - if (!m_skybox.GetShader().Load(SHADER_PATH "skybox.vert", SHADER_PATH "skybox.frag", true)) { - std::cout << " Failed to load shader " << std::endl; - exit(1); - } -} - -void Engine::UnloadResource() {} - - - -void Engine::InstantDamage() { - m_player.InflictDamage(0.10f); - m_damage = false; -} - -void Engine::SystemNotification(std::string systemLog) { - std::string message = ""; - - message = systemLog; - - DisplayNotification(message); -} - -void Engine::KillNotification(Player killer, Player killed) { - std::string message = ""; - - message = killed.GetUsername() + " killed by -> " + killer.GetUsername(); - - DisplayNotification(message); -} - -void Engine::DisplayNotification(std::string message) { - - if (message.length() > 45) { - message = message.substr(0, 45); - } - // Create a new notification and add it to the queue - Notification newNotification; - newNotification.message = message; - newNotification.displayStartTime = m_time; - - notifications.push_back(newNotification); -} - -// Add a method to process the notification queue -void Engine::ProcessNotificationQueue() { - //PrintText(fPosX, fUsernamePosY, ss.str(), 1.5f); - //float fPosX = (Width() / 100.0f) * scaleX; - //float fPosY = Height() - (Height() * 0.05) * scaleY; - - m_textureFont.Bind(); - float xOffset = Width() * 0.66f; - float yOffset = Height() * 0.83f; - - for (auto it = notifications.begin(); it != notifications.end(); ) { - float timeSinceDisplay = m_time - it->displayStartTime; - - float y = yOffset - (20.0f * (it - notifications.begin())); - - glDisable(GL_STENCIL_TEST); - glDisable(GL_DEPTH_TEST); - - glBlendFunc(GL_SRC_ALPHA, GL_ONE); - glBlendEquation(GL_FUNC_ADD); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - - glLoadIdentity(); - glOrtho(0, Width(), 0, Height(), -1, 1); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - - PrintText(xOffset, y, it->message); - - glBlendFunc(GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR); - glBlendEquation(GL_FUNC_SUBTRACT); - - glEnable(GL_STENCIL_TEST); - glEnable(GL_DEPTH_TEST); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - - if (timeSinceDisplay >= 4.0f) { - it = notifications.erase(it); - } - else { - ++it; - } - } -} - -void Engine::DisplayCrosshair() { - m_textureCrosshair.Bind(); - static const int crossSize = 32; - glLoadIdentity(); - glTranslated(Width() / 2 - crossSize / 2, Height() / 2 - crossSize / 2, 0); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); - glVertex2i(0, 0); - glTexCoord2f(1, 0); - glVertex2i(crossSize, 0); - glTexCoord2f(1, 1); - glVertex2i(crossSize, crossSize); - glTexCoord2f(0, 1); - glVertex2i(0, crossSize); - glEnd(); -} - -void Engine::DisplayCurrentItem() {} - -void Engine::DisplayHud(int timer) { - glBindTexture(GL_TEXTURE_2D, 0); - glLoadIdentity(); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - float itemBackgroundWidthProportion = 0.25f; - float itemBackgroundHeightProportion = 0.175f; - float itemBackgroundWidth = Width() * itemBackgroundWidthProportion; - float itemBackgroundHeight = Height() * itemBackgroundHeightProportion; - float itemBackgroundXOffset = Width() * 0.05f; - float itemBackgroundYOffset = Height() * 0.6f; - float itemBackgroundXPos = itemBackgroundXOffset; - float itemBackgroundYPos = Height() - itemBackgroundHeight - itemBackgroundYOffset; - - // Selected item background - glColor4f(1.0f, 1.0f, 1.0f, 0.2f); - glBegin(GL_QUADS); - glVertex2f(itemBackgroundXPos, itemBackgroundYPos); - glVertex2f(itemBackgroundXPos + itemBackgroundWidth, itemBackgroundYPos); - glVertex2f(itemBackgroundXPos + itemBackgroundWidth, itemBackgroundYPos + itemBackgroundHeight); - glVertex2f(itemBackgroundXPos, itemBackgroundYPos + itemBackgroundHeight); - glEnd(); - - // HP Bar - float playerHp = m_player.GetHP(); - float facteurOmbrage = m_displayInfo ? 0.5f : 1.0f; - - float hpBarWidthProportion = 0.25f; - float hpBarHeightProportion = 0.045f; - float hpBarWidth = Width() * hpBarWidthProportion; - float hpBarHeight = Height() * hpBarHeightProportion; - float hpBarXOffset = Width() * 0.05f; - float hpBarYOffset = Height() * 0.7f; - float hpBarYPos = Height() - hpBarHeight - hpBarYOffset; - - // HP Bar Background - glColor3f(1.0f * facteurOmbrage, 1.0f * facteurOmbrage, 1.0f * facteurOmbrage); - glBegin(GL_QUADS); - glVertex2f(itemBackgroundXPos, hpBarYPos - hpBarHeight); - glVertex2f(itemBackgroundXPos + itemBackgroundWidth, hpBarYPos - hpBarHeight); - glVertex2f(itemBackgroundXPos + itemBackgroundWidth, hpBarYPos); - glVertex2f(itemBackgroundXPos, hpBarYPos); - glEnd(); - - //TODO: Associer avec mechanique de vie du joueur - - // Barre HP - glColor3f(0.0f * facteurOmbrage, 1.0f * facteurOmbrage, 0.0f * facteurOmbrage); - glBegin(GL_QUADS); - glVertex2f(itemBackgroundXPos, hpBarYPos - hpBarHeight); - glVertex2f(itemBackgroundXPos + itemBackgroundWidth * playerHp, hpBarYPos - hpBarHeight); - glVertex2f(itemBackgroundXPos + itemBackgroundWidth * playerHp, hpBarYPos); - glVertex2f(itemBackgroundXPos, hpBarYPos); - glEnd(); - - // Equip Bar - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glColor3f(1.0f * facteurOmbrage, 1.0f * facteurOmbrage, 1.0f * facteurOmbrage); - - float equipWidthProportion = 0.8f; - float equipHeightProportion = 0.7f; - float equipWidth = itemBackgroundWidth * equipWidthProportion; - float equipHeight = itemBackgroundHeight * equipHeightProportion; - float equipXOffset = itemBackgroundXPos + (itemBackgroundWidth - equipWidth) * 0.1f; - float equipYOffset = itemBackgroundYPos + (itemBackgroundHeight - equipHeight) * 0.75f; - - glTranslatef(equipXOffset, equipYOffset, 0); - - m_textureGun.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2f(0, 0); - glTexCoord2f(1, 0); glVertex2f(equipWidth, 0); - glTexCoord2f(1, 1); glVertex2f(equipWidth, equipHeight); - glTexCoord2f(0, 1); glVertex2f(0, equipHeight); - glEnd(); - - // Username - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE); - glColor3f(1.0f, 1.0f, 1.0f); - - m_textureFont.Bind(); - std::ostringstream ss; - float fUsernamePosY = hpBarYPos - (hpBarHeight * 2); - - ss.str(""); - ss << m_player.GetUsername(); - PrintText(itemBackgroundXPos, fUsernamePosY, ss.str(), 1.5f); - - ss.str(""); - ss << m_player.GetHP() * 100 << "%"; - PrintText(itemBackgroundXPos * 5.25f, fUsernamePosY, ss.str(), 1.5f); - - float countdownXOffset = Width() * 0.2f; - float countdownYOffset = Height() * 0.1f; - float countdownXPos = Width() - countdownXOffset; - float countdownYPos = Height() - countdownYOffset; - - // Countdown - ss.str(""); - ss << "Time: " << (int)(timer / 60) << ":" << std::setw(2) << std::setfill('0') << timer % 60; - PrintText(countdownXPos, countdownYPos, ss.str(), 2.0f); -} - -void Engine::DrawHud(float elapsedTime, BlockType bloc) { - // Setter le blend function, tout ce qui sera noir sera transparent - glDisable(GL_STENCIL_TEST); - glDisable(GL_DEPTH_TEST); - - glBlendFunc(GL_SRC_ALPHA, GL_ONE); - glBlendEquation(GL_FUNC_ADD); - glEnable(GL_BLEND); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - - glLoadIdentity(); - glOrtho(0, Width(), 0, Height(), -1, 1); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - - int timer = GetCountdown(elapsedTime); - for (int i = 1; i < WORLD_SIZE_X; i++) { - if (timer <= COUNTDOWN - m_timerReductionChunk * i) { - m_world.RemoveChunk(m_nbReductionChunk * i); - m_renderer.RemoveChunk(m_nbReductionChunk * i); - } - } - if (m_keyK) { - SystemNotification(m_messageNotification); - m_keyK = false; - } - if (m_keyL) { - - KillNotification(m_player, m_player); - m_keyL = false; - } - - if (m_displayInfo) { - DisplayInfo(elapsedTime, bloc); - } - - if (m_displayHud) { - DisplayHud(timer); - } - - if (m_displayCrosshair) { - DisplayCrosshair(); - } - - glBlendFunc(GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR); - glBlendEquation(GL_FUNC_SUBTRACT); - - glEnable(GL_STENCIL_TEST); - glEnable(GL_DEPTH_TEST); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); -} - -void Engine::DisplayPovGun() { - // Setter le blend function, tout ce qui sera noir sera transparent - glDisable(GL_STENCIL_TEST); - glDisable(GL_DEPTH_TEST); - - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glBlendEquation(GL_FUNC_ADD); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - - glLoadIdentity(); - glOrtho(0, Width(), 0, Height(), -1, 1); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - - float baseXOffsetPercentage = 0.4958; - float baseWidthPercentage = 0.4688; - float baseHeightPercentage = 0.5787; - - float xTranslation = baseXOffsetPercentage * Width(); - float quadWidth = baseWidthPercentage * Width(); - float quadHeight = baseHeightPercentage * Height(); - - m_texturePovGun.Bind(); - glLoadIdentity(); - glTranslated(xTranslation, 0, 0); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(0, 0); - glTexCoord2f(1, 0); glVertex2i(quadWidth, 0); - glTexCoord2f(1, 1); glVertex2i(quadWidth, quadHeight); - glTexCoord2f(0, 1); glVertex2i(0, quadHeight); - glEnd(); - - // Reset du blend function - glBlendFunc(GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR); - glBlendEquation(GL_FUNC_SUBTRACT); - - glEnable(GL_STENCIL_TEST); - glEnable(GL_DEPTH_TEST); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); -} - -void Engine::PrintText(float x, float y, const std::string& t, float charSizeMultiplier) { - float windowWidth = static_cast(Width()); - float windowHeight = static_cast(Height()); - - float posX = x * windowWidth; - float posY = y * windowHeight; - - float baseCharSize = 20 + (24 - 20) * (windowWidth - 1600) / (1920 - 1600); - float charSize = baseCharSize * charSizeMultiplier; - - glPushMatrix(); - glLoadIdentity(); - glTranslated(x, y, 0); - - for (unsigned int i = 0; i < t.length(); ++i) { - float left = (float)((t[i] - 32) % 16) / 16.f; - float top = (float)((t[i] - 32) / 16) / 16.f; - top += 0.5f; - - glBegin(GL_QUADS); - glTexCoord2f(left, 1.f - top - .0625f); glVertex2f(0, 0); - glTexCoord2f(left + .0625f, 1.f - top - .0625f); glVertex2f(charSize, 0); - glTexCoord2f(left + .0625f, 1.f - top); glVertex2f(charSize, charSize); - glTexCoord2f(left, 1.f - top); glVertex2f(0, charSize); - glEnd(); - - glTranslated(0.5555f * charSize, 0, 0); - } - glPopMatrix(); -} - -int Engine::GetFps(float elapsedTime) const { return 1 / elapsedTime; } - -int Engine::GetCountdown(float elapsedTime) { - if (m_resetcountdown) { - m_nbReductionChunk = 4; - m_timerReductionChunk = 30; - m_countdown = m_time + COUNTDOWN; - m_resetcountdown = false; - } - if (m_countdown < m_time) - Stop(); - if (!m_stopcountdown) - m_time += elapsedTime; - return m_countdown - (int)m_time; -} - -int Engine::GetOptionsChoice() { - return m_selectedOption; -} - -void Engine::StartMultiplayerGame() { - char* ch = new char[2]; - - //std::cout << "Jouer en ligne? [o/N] "; - //std::cin.getline(ch, 2); - //std::cout << std::endl; - - char* input = new char[32]; - std::string playname, srvname; - - /*if (*ch == 'o' || *ch == 'O') { - char* input = new char[32]; - std::string playname, srvname; - - while (playname.size() < 1) { - std::cout << "Veuillez entrer un nom de joueur: "; - std::cin.getline(input, 32); - std::cout << std::endl; - playname = input; - if (playname.size() < 1 || playname.size() > 32) - std::puts("Nom invalide."); - } - while (srvname.size() < 1) { - std::cout << "Veuillez entrer une adresse de serveur: "; - std::cin.getline(input, 32); - std::cout << std::endl; - srvname = input; - if (srvname.size() < 1 || srvname.size() > 32) - std::puts("Adresse serveur invalide."); - } - delete[] input; - - - } - delete[] ch;*/ - - if (!m_conn.Init()) { - if (!m_conn.Connect(srvname.c_str(), playname)) { - // setup jeu en reseau. - std::cout << "ID recu du serveur: " << std::to_string(m_conn.getId()) << "!" << std::endl; - std::cout << "Seed recu du serveur: " << std::to_string(m_conn.getSeed()) << "!" << std::endl; - m_player = Player(m_conn.getOrigin().position); - - for (auto& [key, player] : m_conn.m_players) - m_players[key] = new RemotePlayer(player); - - //seed = m_conn.getSeed(); - m_networkgame = true; - } - else std::cout << "Erreur de connexion." << std::endl; - } - else std::cout << "Erreur de creation de socket." << std::endl; -} - -void Engine::DisplayInfo(float elapsedTime, BlockType bloc) { - m_textureFont.Bind(); - std::ostringstream ss; - - float marginX = Width() * 0.01; - float marginY = Height() * 0.05; - - float fPosX = marginX; - float fPosY = Height() - marginY; - - float charSize = 20 + (24 - 20) * (Width() - 1600) / (1920 - 1600); - - ss << " Fps : " << GetFps(elapsedTime); - PrintText(fPosX, fPosY, ss.str()); - ss.str(""); - fPosY -= charSize; - - ss << " Rendered Chunks : " << m_renderCount; - PrintText(fPosX, fPosY, ss.str()); - ss.str(""); - fPosY -= charSize; - - ss << " To-Be-Deleted Chunks : " << m_world.GettbDeleted(); - PrintText(fPosX, fPosY, ss.str()); - ss.str(""); - fPosY -= charSize; - - float fPosYJump = Height() * 0.09; - fPosY = fPosYJump; - fPosY -= charSize; - - ss << " Velocity : " << m_remotePlayer.GetVelocity(); - PrintText(fPosX, fPosY, ss.str()); - ss.str(""); - fPosY -= charSize; - - ss << " Player Position : " << m_player.GetPosition(); - PrintText(fPosX, fPosY, ss.str()); - ss.str(""); - fPosY -= charSize; - - ss << " Remote Position : " << m_remotePlayer.GetPosition();//m_player.GetPosition(); - PrintText(fPosX, fPosY, ss.str()); - ss.str(""); - fPosY -= charSize; - - ss << " Block : "; - if (bloc == BTYPE_LAST) - ss << "Weapon"; - else - ss << (int)bloc; - PrintText(fPosX, fPosYJump, ss.str()); -} - -void Engine::DisplaySplashScreen() { - glDisable(GL_LIGHTING); - glDisable(GL_DEPTH_TEST); - glDisable(GL_STENCIL_TEST); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(-Width() / 2, Width() / 2, -Height() / 2, Height() / 2, -1, 1); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glLoadIdentity(); - - int imageWidth = Width(); - int imageHeight = Height(); - - m_textureSplashScreen.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(-imageWidth / 2, -imageHeight / 2); - glTexCoord2f(1, 0); glVertex2i(imageWidth / 2, -imageHeight / 2); - glTexCoord2f(1, 1); glVertex2i(imageWidth / 2, imageHeight / 2); - glTexCoord2f(0, 1); glVertex2i(-imageWidth / 2, imageHeight / 2); - glEnd(); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); -} - -void Engine::DisplayLobbyMenu() { - GLint viewport[4]; - glGetIntegerv(GL_VIEWPORT, viewport); - - glDisable(GL_STENCIL_TEST); - glDisable(GL_DEPTH_TEST); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glBlendEquation(GL_FUNC_ADD); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - - glLoadIdentity(); - glOrtho(0, Width(), 0, Height(), -1, 1); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - - m_textureLobbyMenu.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(0, 0); - glTexCoord2f(1, 0); glVertex2i(Width(), 0); - glTexCoord2f(1, 1); glVertex2i(Width(), Height()); - glTexCoord2f(0, 1); glVertex2i(0, Height()); - glEnd(); - - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - - glBindTexture(GL_TEXTURE_2D, 0); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(Width() * 0.6, Height() * 0.425); - glTexCoord2f(1, 0); glVertex2i(Width() * 0.95, Height() * 0.425); - glTexCoord2f(1, 1); glVertex2i(Width() * 0.95, Height() * 0.475); - glTexCoord2f(0, 1); glVertex2i(Width() * 0.6, Height() * 0.475); - glEnd(); - - glViewport(viewport[0], viewport[1], viewport[2], viewport[3]); - - glEnable(GL_STENCIL_TEST); - glEnable(GL_DEPTH_TEST); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); -} - -void Engine::DisplayMainMenu() { - GLint viewport[4]; - glGetIntegerv(GL_VIEWPORT, viewport); - - glDisable(GL_STENCIL_TEST); - glDisable(GL_DEPTH_TEST); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glBlendEquation(GL_FUNC_ADD); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - - glLoadIdentity(); - glOrtho(0, Width(), 0, Height(), -1, 1); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - - // Background - m_textureMainMenu.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0.0f, 0.0f); glVertex2f(0.0f, 0.0f); - glTexCoord2f(1.0f, 0.0f); glVertex2f(Width(), 0.0f); - glTexCoord2f(1.0f, 1.0f); glVertex2f(Width(), Height()); - glTexCoord2f(0.0f, 1.0f); glVertex2f(0.0f, Height()); - glEnd(); - - // Title - float centerX = Width() * 0.5f; - float centerY = Height() * 0.5f; - - glColor4f(1.0f, 0.5f, 0.0f, 1.0f); - m_textureMenuTitle.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0.0f, 0.0f); glVertex2f(centerX + Width() * 0.05, centerY + Height() * 0.05); - glTexCoord2f(1.0f, 0.0f); glVertex2f(centerX + Width() * 0.45, centerY + Height() * 0.05); - glTexCoord2f(1.0f, 1.0f); glVertex2f(centerX + Width() * 0.45, centerY + Height() * 0.45); - glTexCoord2f(0.0f, 1.0f); glVertex2f(centerX + Width() * 0.05, centerY + Height() * 0.45); - glEnd(); - - DrawButtonBackgrounds(centerX, centerY, 3); - - if (m_gamestate == GameState::MAIN_MENU) { - if (m_selectedPlayOptions) { - DrawSingleMultiButtons(centerX, centerY); - } - else { - DrawMainMenuButtons(centerX, centerY); - } - } - - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - - glViewport(viewport[0], viewport[1], viewport[2], viewport[3]); - - glEnable(GL_STENCIL_TEST); - glEnable(GL_DEPTH_TEST); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - - ShowCursor(); -} - -void Engine::DrawMainMenuButtons(float centerX, float centerY) { - m_textureMenuPlay.Bind(); - glColor4f(0.75f, 0.05f, 0.0f, 1.0f); - glBegin(GL_QUADS); - glTexCoord2f(0.0f, 0.0f); glVertex2f(centerX + Width() * 0.16, centerY - Height() * 0.065); - glTexCoord2f(1.0f, 0.0f); glVertex2f(centerX + Width() * 0.34, centerY - Height() * 0.065); - glTexCoord2f(1.0f, 1.0f); glVertex2f(centerX + Width() * 0.34, centerY - Height() * 0.01); - glTexCoord2f(0.0f, 1.0f); glVertex2f(centerX + Width() * 0.16, centerY - Height() * 0.01); - glEnd(); - - m_textureMenuOptions.Bind(); - glColor4f(0.75f, 0.05f, 0.0f, 1.0f); - glBegin(GL_QUADS); - glTexCoord2f(0.0f, 0.0f); glVertex2f(centerX + Width() * 0.08, centerY - Height() * 0.165); - glTexCoord2f(1.0f, 0.0f); glVertex2f(centerX + Width() * 0.42, centerY - Height() * 0.165); - glTexCoord2f(1.0f, 1.0f); glVertex2f(centerX + Width() * 0.42, centerY - Height() * 0.11); - glTexCoord2f(0.0f, 1.0f); glVertex2f(centerX + Width() * 0.08, centerY - Height() * 0.11); - glEnd(); - - m_textureMenuQuit.Bind(); - glColor4f(0.75f, 0.05f, 0.0f, 1.0f); - glBegin(GL_QUADS); - glTexCoord2f(0.0f, 0.0f); glVertex2f(centerX + Width() * 0.16, centerY - Height() * 0.265); - glTexCoord2f(1.0f, 0.0f); glVertex2f(centerX + Width() * 0.34, centerY - Height() * 0.265); - glTexCoord2f(1.0f, 1.0f); glVertex2f(centerX + Width() * 0.34, centerY - Height() * 0.21); - glTexCoord2f(0.0f, 1.0f); glVertex2f(centerX + Width() * 0.16, centerY - Height() * 0.21); - glEnd(); -} - -void Engine::DrawSingleMultiButtons(float centerX, float centerY) { - m_textureMenuSingle.Bind(); - glColor4f(0.75f, 0.05f, 0.0f, 1.0f); - glBegin(GL_QUADS); - glTexCoord2f(0.0f, 0.0f); glVertex2f(centerX + Width() * 0.06, centerY - Height() * 0.065); - glTexCoord2f(1.0f, 0.0f); glVertex2f(centerX + Width() * 0.44, centerY - Height() * 0.065); - glTexCoord2f(1.0f, 1.0f); glVertex2f(centerX + Width() * 0.44, centerY - Height() * 0.01); - glTexCoord2f(0.0f, 1.0f); glVertex2f(centerX + Width() * 0.06, centerY - Height() * 0.01); - glEnd(); - - m_textureMenuMulti.Bind(); - glColor4f(0.75f, 0.05f, 0.0f, 1.0f); - glBegin(GL_QUADS); - glTexCoord2f(0.0f, 0.0f); glVertex2f(centerX + Width() * 0.08, centerY - Height() * 0.165); - glTexCoord2f(1.0f, 0.0f); glVertex2f(centerX + Width() * 0.42, centerY - Height() * 0.165); - glTexCoord2f(1.0f, 1.0f); glVertex2f(centerX + Width() * 0.42, centerY - Height() * 0.11); - glTexCoord2f(0.0f, 1.0f); glVertex2f(centerX + Width() * 0.08, centerY - Height() * 0.11); - glEnd(); - - m_textureMenuBack.Bind(); - glColor4f(0.75f, 0.05f, 0.0f, 1.0f); - glBegin(GL_QUADS); - glTexCoord2f(0.0f, 0.0f); glVertex2f(centerX + Width() * 0.16, centerY - Height() * 0.265); - glTexCoord2f(1.0f, 0.0f); glVertex2f(centerX + Width() * 0.34, centerY - Height() * 0.265); - glTexCoord2f(1.0f, 1.0f); glVertex2f(centerX + Width() * 0.34, centerY - Height() * 0.21); - glTexCoord2f(0.0f, 1.0f); glVertex2f(centerX + Width() * 0.16, centerY - Height() * 0.21); - glEnd(); -} - -void Engine::DrawButtonBackgrounds(float centerX, float centerY, int iterations) { - glColor4f(1.0f, 1.0f, 1.0f, 0.5f); - glBindTexture(GL_TEXTURE_2D, 0); - - float bottomOffset = 0.075f; - float topOffset = 0.0f; - float distanceBetween = 0.1f; - - for (int i = 0; i < iterations; i++) { - glBegin(GL_QUADS); - glTexCoord2f(0.0f, 0.0f); glVertex2f(centerX + Width() * 0.05, centerY - Height() * bottomOffset); - glTexCoord2f(1.0f, 0.0f); glVertex2f(centerX + Width() * 0.45, centerY - Height() * bottomOffset); - glTexCoord2f(1.0f, 1.0f); glVertex2f(centerX + Width() * 0.45, centerY - Height() * topOffset); - glTexCoord2f(0.0f, 1.0f); glVertex2f(centerX + Width() * 0.05, centerY - Height() * topOffset); - glEnd(); - - bottomOffset += distanceBetween; - topOffset += distanceBetween; - } -} - -void Engine::DisplayOptionsMenu() { - static const int sTitle = 400; - static const int sButton = 225; - - float centerX = Width() * 0.5f; - float centerY = Height() * 0.5f; - - GLint viewport[4]; - glGetIntegerv(GL_VIEWPORT, viewport); - - glDisable(GL_STENCIL_TEST); - glDisable(GL_DEPTH_TEST); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glBlendEquation(GL_FUNC_ADD); - - glMatrixMode(GL_PROJECTION); - glPushMatrix(); - glLoadIdentity(); - glOrtho(0, Width(), 0, Height(), -1, 1); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - - m_textureOptionsMenu.Bind(); - glLoadIdentity(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(0, 0); - glTexCoord2f(1, 0); glVertex2i(Width(), 0); - glTexCoord2f(1, 1); glVertex2i(Width(), Height()); - glTexCoord2f(0, 1); glVertex2i(0, Height()); - glEnd(); - - glColor4f(1.0f, 0.0f, 1.0f, 1.0f); - m_textureOptOptions.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.175, centerY + Height() * 0.35); - glTexCoord2f(1, 0); glVertex2i(centerX + Width() * 0.175, centerY + Height() * 0.35); - glTexCoord2f(1, 1); glVertex2i(centerX + Width() * 0.175, centerY + Height() * 0.45); - glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.175, centerY + Height() * 0.45); - glEnd(); - - if (m_selectedOption == 0) { - glColor4f(0.5f, 1.0f, 0.0f, 1.0f); - } - m_textureOptAudio.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.35, centerY + Height() * 0.2); - glTexCoord2f(1, 0); glVertex2i(centerX - Width() * 0.2, centerY + Height() * 0.2); - glTexCoord2f(1, 1); glVertex2i(centerX - Width() * 0.2, centerY + Height() * 0.25); - glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.35, centerY + Height() * 0.25); - glEnd(); - - glColor4f(1.0f, 0.0f, 1.0f, 1.0f); - if (m_selectedOption == 1) { - glColor4f(0.5f, 1.0f, 0.0f, 1.0f); - } - m_textureOptGraphics.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.4, centerY + Height() * 0.05); - glTexCoord2f(1, 0); glVertex2i(centerX - Width() * 0.2, centerY + Height() * 0.05); - glTexCoord2f(1, 1); glVertex2i(centerX - Width() * 0.2, centerY + Height() * 0.1); - glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.4, centerY + Height() * 0.1); - glEnd(); - - glColor4f(1.0f, 0.0f, 1.0f, 1.0f); - if (m_selectedOption == 2) { - glColor4f(0.5f, 1.0f, 0.0f, 1.0f); - } - m_textureOptGameplay.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.375, centerY - Height() * 0.1); - glTexCoord2f(1, 0); glVertex2i(centerX - Width() * 0.2, centerY - Height() * 0.1); - glTexCoord2f(1, 1); glVertex2i(centerX - Width() * 0.2, centerY - Height() * 0.05); - glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.375, centerY - Height() * 0.05); - glEnd(); - - // Séparateur - glColor4f(0.0f, 0.0f, 0.0f, 1.0f); - glBindTexture(GL_TEXTURE_2D, 0); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.175, centerY - Height() * 0.1); - glTexCoord2f(1, 0); glVertex2i(centerX - Width() * 0.18, centerY - Height() * 0.1); - glTexCoord2f(1, 1); glVertex2i(centerX - Width() * 0.18, centerY + Height() * 0.25); - glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.175, centerY + Height() * 0.25); - glEnd(); - - glColor4f(1.0f, 0.0f, 1.0f, 1.0f); - m_textureOptBack.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.075, centerY - Height() * 0.25); - glTexCoord2f(1, 0); glVertex2i(centerX + Width() * 0.075, centerY - Height() * 0.25); - glTexCoord2f(1, 1); glVertex2i(centerX + Width() * 0.075, centerY - Height() * 0.2); - glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.075, centerY - Height() * 0.2); - glEnd(); - - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - - if (m_selectedOption == 0) { - DisplayAudioMenu(centerX, centerY); - } - else if (m_selectedOption == 1) { - DisplayGraphicsMenu(centerX, centerY); - } - else if (m_selectedOption == 2) { - DisplayGameplayMenu(centerX, centerY); - } - - glViewport(viewport[0], viewport[1], viewport[2], viewport[3]); - - glEnable(GL_STENCIL_TEST); - glEnable(GL_DEPTH_TEST); - - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); -} - -void Engine::DisplayAudioMenu(float centerX, float centerY) { - float minBar = centerX - Width() * 0.15; - float maxBar = centerX + Width() * 0.3; - float percentPosX = centerX + Width() * 0.31f; - - glColor4f(1.0f, 1.0f, 0.0f, 1.0f); - m_textureOptMain.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.215); - glTexCoord2f(1, 0); glVertex2i(centerX - Width() * 0.075, centerY + Height() * 0.215); - glTexCoord2f(1, 1); glVertex2i(centerX - Width() * 0.075, centerY + Height() * 0.25); - glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.25); - glEnd(); - - float principalBottom = centerY + Height() * 0.165f; - float principalTop = centerY + Height() * 0.2f; - - DrawSliderBackground(centerX, centerY, minBar, maxBar, principalBottom, principalTop); - DrawSlider(centerX, centerY, m_volPrincipal, minBar, maxBar, principalBottom, principalTop); - DisplayBarPercentValue(centerX, centerY, percentPosX, principalBottom, minBar, maxBar, m_volPrincipal); - - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glBlendEquation(GL_FUNC_ADD); - - glColor4f(1.0f, 1.0f, 0.0f, 1.0f); - m_textureOptMusic.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.09); - glTexCoord2f(1, 0); glVertex2i(centerX - Width() * 0.05, centerY + Height() * 0.09); - glTexCoord2f(1, 1); glVertex2i(centerX - Width() * 0.05, centerY + Height() * 0.125); - glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.125); - glEnd(); - - float musiqueBottom = centerY + Height() * 0.04f; - float musiqueTop = centerY + Height() * 0.075f; - - DrawSliderBackground(centerX, centerY, minBar, maxBar, musiqueBottom, musiqueTop); - DrawSlider(centerX, centerY, m_volMusique, minBar, maxBar, musiqueBottom, musiqueTop); - DisplayBarPercentValue(centerX, centerY, percentPosX, musiqueBottom, minBar, maxBar, m_volMusique); - - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glBlendEquation(GL_FUNC_ADD); - - glColor4f(1.0f, 1.0f, 0.0f, 1.0f); - m_textureOptSfx.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.15, centerY - Height() * 0.035); - glTexCoord2f(1, 0); glVertex2i(centerX - Width() * 0.075, centerY - Height() * 0.035); - glTexCoord2f(1, 1); glVertex2i(centerX - Width() * 0.075, centerY - Height() * 0.00001); - glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.15, centerY - Height() * 0.00001); - glEnd(); - - float effectsBottom = centerY - Height() * 0.085f; - float effectsTop = centerY - Height() * 0.05f; - - DrawSliderBackground(centerX, centerY, minBar, maxBar, effectsBottom, effectsTop); - DrawSlider(centerX, centerY, m_volEffets, minBar, maxBar, effectsBottom, effectsTop); - DisplayBarPercentValue(centerX, centerY, percentPosX, effectsBottom, minBar, maxBar, m_volEffets); - - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); -} - -void Engine::DisplayGraphicsMenu(float centerX, float centerY) { - glColor4f(1.0f, 1.0f, 0.0f, 1.0f); - m_textureOptResolution.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.215); - glTexCoord2f(1, 0); glVertex2i(centerX, centerY + Height() * 0.215); - glTexCoord2f(1, 1); glVertex2i(centerX, centerY + Height() * 0.25); - glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.25); - glEnd(); - - glColor4f(1.0f, 1.0f, 1.0f, 0.5f); - glBindTexture(GL_TEXTURE_2D, 0); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.16, centerY + Height() * 0.165); - glTexCoord2f(1, 0); glVertex2i(centerX + Width() * 0.1, centerY + Height() * 0.165); - glTexCoord2f(1, 1); glVertex2i(centerX + Width() * 0.1, centerY - Height() * 0.04); - glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.16, centerY - Height() * 0.04); - glEnd(); - - glColor4f(0.0f, 0.0f, 0.0f, 1.0f); - m_textureHd.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.125); - glTexCoord2f(1, 0); glVertex2i(centerX + Width() * 0.05, centerY + Height() * 0.125); - glTexCoord2f(1, 1); glVertex2i(centerX + Width() * 0.05, centerY + Height() * 0.15); - glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.15); - glEnd(); - - m_textureFhd.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.075); - glTexCoord2f(1, 0); glVertex2i(centerX, centerY + Height() * 0.075); - glTexCoord2f(1, 1); glVertex2i(centerX, centerY + Height() * 0.1); - glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.1); - glEnd(); - - m_textureQhd.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.025); - glTexCoord2f(1, 0); glVertex2i(centerX, centerY + Height() * 0.025); - glTexCoord2f(1, 1); glVertex2i(centerX, centerY + Height() * 0.05); - glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.05); - glEnd(); - - m_textureUhd.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.15, centerY - Height() * 0.025); - glTexCoord2f(1, 0); glVertex2i(centerX + Width() * 0.015, centerY - Height() * 0.025); - glTexCoord2f(1, 1); glVertex2i(centerX + Width() * 0.015, centerY); - glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.15, centerY); - glEnd(); - - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - - float heightRatioBottom = 0.125f; - float heightRatioTop = 0.15; - - // Checkboxes - for (int i = 0; i < 4; i++) { - if (static_cast(m_resolution) == i) { - m_textureChecked.Bind(); - } - else { - m_textureCheck.Bind(); - } - - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(centerX + Width() * 0.075, centerY + Height() * heightRatioBottom); - glTexCoord2f(1, 0); glVertex2i(centerX + Width() * 0.09, centerY + Height() * heightRatioBottom); - glTexCoord2f(1, 1); glVertex2i(centerX + Width() * 0.09, centerY + Height() * heightRatioTop); - glTexCoord2f(0, 1); glVertex2i(centerX + Width() * 0.075, centerY + Height() * heightRatioTop); - glEnd(); - - heightRatioBottom -= 0.05f; - heightRatioTop -= 0.05f; - } - - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); -} - -void Engine::Render(float elapsedTime) { - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - - if (m_gamestate == GameState::SPLASH) { - if (m_splashTime > 0.0f) { - DisplaySplashScreen(); - } - else { - m_gamestate = GameState::MAIN_MENU; - } - - m_splashTime -= elapsedTime; - return; - } - - if (m_gamestate == GameState::MAIN_MENU) { - DisplayMainMenu(); - return; - } - - if (m_gamestate == GameState::OPTIONS) { - DisplayOptionsMenu(); - return; - } - - if (m_gamestate == GameState::LOBBY) { - DisplayLobbyMenu(); - return; - } - - if (m_gamestate == GameState::PLAY) { - HideCursor(); - CenterMouse(); //D�placement de centermouse dans l'action de jouer - - //static float gameTime = elapsedTime; - static irrklang::ISound* step; // Pour les sons de pas. - static float pollTime = 0; - static float bulletTime = 0; - static float gameTime = 0; - static BlockType bloc = 1; - - if (elapsedTime > 0.1f) return; - - //gameTime += elapsedTime; - pollTime += elapsedTime; - - Transformation all; - Transformation skybox; - Transformation remotePlayer; - - Vector3f vstep; - - // Transformations initiales - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - if (bulletTime > 0.f) bulletTime -= elapsedTime; - if (bulletTime < 0.f) bulletTime = 0.f; - - static bool leftright = false; - if (pollTime >= .005f) { - Player::Sound snd = m_player.ApplyPhysics(m_player.GetInput(m_keyW, m_keyS, m_keyA, m_keyD, m_keySpace, (bloc == BTYPE_LAST && bulletTime <= 0.f && m_mouseL), elapsedTime), &m_world, elapsedTime); - switch (snd) { - case Player::Sound::STEP: - if (leftright) - vstep = Vector3f(m_player.GetPosition().x + m_player.GetDirection().z, m_player.GetPosition().y - 1.7f, m_player.GetPosition().z + m_player.GetDirection().x); - else vstep = Vector3f(m_player.GetPosition().x - m_player.GetDirection().z, m_player.GetPosition().y - 1.7f, m_player.GetPosition().z - m_player.GetDirection().x); - m_audio.Create3DAudioObj(step, AUDIO_PATH "step.wav", vstep, m_player.GetVelocity(), false, .8f); - leftright = !leftright; - break; - case Player::Sound::FALL: - m_audio.Create3DAudioObj(step, AUDIO_PATH "hit.wav", m_player.GetPosition(), m_player.GetVelocity(), false, 1.f); - break; - default: break; - } - m_audio.Update3DAudio(m_player.GetPOV(), m_player.GetDirection(), m_player.GetVelocity()); // Ajustement du positionnement 3D avec les coordonnees du joueur et - // son vecteur de velocite (pour l'effet Doppler) - pollTime = 0; - } - - m_player.ApplyTransformation(all); - - m_player.ApplyTransformation(skybox, false); // Version d'ApplyTransformation qui ne tient compte que de la rotation - // (donc l'objet ne bouge pas relativement au joueur, ce qui est pratique pour une skybox!). - - m_player.ApplyTransformation(remotePlayer, true, false); - - 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. - m_mouseWU = m_mouseWD = m_key1 = m_key2 = false; - - if (m_mouseL) { - if (bloc != BTYPE_LAST) - m_world.ChangeBlockAtCursor(bloc, m_player.GetPosition(), m_player.GetDirection(), m_block); - 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) - m_world.ChangeBlockAtCursor(BTYPE_AIR, m_player.GetPosition(), m_player.GetDirection(), m_block); - - for (int x = 0; x < MAX_BULLETS; ++x) { // Array de bullets en jeu. - if (m_bullets[x]) { - for (int b = 0; b < BULLET_UPDATES_PER_FRAME; ++b) { - if (m_bullets[x]->Update(&m_world, elapsedTime, BULLET_UPDATES_PER_FRAME, m_players)) { - m_bullets[x]->~Bullet(); - if (m_whoosh[x]) - m_whoosh[x]->drop(); - m_bullets[x] = nullptr; - m_whoosh[x] = nullptr; - break; - } - else if (!m_whoosh[x]) { - m_whoosh[x] = m_audio.Create3DAudioObj(m_whoosh[x], AUDIO_PATH "noise.wav", m_bullets[x]->getPos(), m_bullets[x]->getVel(), true, (m_bullets[x]->getPos() - m_player.GetPosition()).Length()); - } - else { - Vector3f pos = m_bullets[x]->getPos(), vel = m_bullets[x]->getVel(); - m_audio.Render3DAudioObj(m_whoosh[x], pos, vel, 5 - (m_bullets[x]->getPos() - m_player.GetPosition()).Length()); - } - } - } - } - - gameTime += elapsedTime * 10; - - Vector3f dance = Vector3f(sin(gameTime), 0, cos(-gameTime)); - dance.Normalize(); - m_remotePlayer.ApplyPhysics(dance, &m_world, elapsedTime); - m_world.Update(m_bullets, m_player.GetPosition(), m_blockinfo); - m_renderer.UpdateMesh(&m_world, m_player.GetPosition(), m_blockinfo); - m_remotePlayer.Render(m_animeAtlas, m_shader01, all, elapsedTime); - m_booster.RenderBillboard({ 195,16,195 }, m_textureAtlas, m_shader01, all); - - if (m_isSkybox) m_renderer.RenderWorld(&m_world, m_renderCount, m_player.GetPosition(), m_player.GetDirection(), all, m_shader01, m_textureAtlas); - - //glClear(GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - //m_remotePlayer.Render(m_textureAtlas, m_shader01, all, elapsedTime); - - m_renderer.RenderWorld(&m_world, m_renderCount, m_player.GetPosition(), m_player.GetDirection(), all, m_shader01, m_textureAtlas); - - if (m_isSkybox) m_skybox.Render(skybox); - - DrawHud(elapsedTime, bloc); - DisplayPovGun(); - ProcessNotificationQueue(); - if (m_damage) { - InstantDamage(); - } - static bool fell = false; - if (m_player.GetPosition().y < 1.7f && !fell) { - m_audio.Create3DAudioObj(m_scream, AUDIO_PATH "scream.wav", m_player.GetPOV(), m_player.GetVelocity(), false, 1.f); - fell = true; - } - else if (m_player.GetPosition().y < -20.f) { - m_player = Player(Vector3f(.5f, CHUNK_SIZE_Y + 1.8f, .5f)); // Respawn si le bonho- joueur tombe en bas du monde. - fell = false; - } - - if (m_networkgame) { // Pour se gerer le paquet. - using namespace std::chrono; - using namespace netprot; - Timestamp tstamp = duration_cast(high_resolution_clock::now() - m_startTime).count(); - Input input; - Sync sync; - uint64_t id = m_conn.getId(); - static std::vector lsPck; - - if (false) { // TODO: Faire un checkup pour chaque ~1000ms. - sync.sid = id; - sync.timestamp = tstamp; - sync.position = m_player.GetPosition(); - sync.hp = m_player.GetHP(); - // TODO: Garrocher ca quelque-part. - } - - input.sid = id; - input.direction = m_player.GetDirection(); - input.timestamp = tstamp; - input.keys.forward = m_keyW; - input.keys.backward = m_keyS; - input.keys.left = m_keyA; - input.keys.right = m_keyD; - input.keys.jump = m_keySpace; - input.keys.block = m_mouseR; - input.keys.shoot = m_mouseL; - - sendPackTo(m_conn.m_sock_udp, &input, &m_bufout, &m_conn.m_srvsockaddr); - - lsPck = recvPacks(m_conn.m_sock_udp, &m_buf); - char* prevptr = nullptr; - for (auto& pck : lsPck) { // We could make a few threads out of this. - Sync sync; - Output out; - if (!prevptr) - prevptr = m_buf.ptr; - uint32_t bsize = m_buf.len - (pck - prevptr); - prevptr = pck; - switch (getType(pck, 1)) { - using enum PACKET_TYPE; - case SYNC: - if (Deserialize(&sync, pck, &bsize)) { - if (sync.sid != m_conn.getId()) - break; - // TODO: Vérifier si les positions concordent au sync local. - } - break; - case OUTPUT: - if (Deserialize(&out, pck, &bsize)) { - RemotePlayer* r = (RemotePlayer*)m_players[out.id]; - r->Feed(out); - } - break; - default: - break; - } - } - lsPck.clear(); - } - } -} - -void Engine::DisplayGameplayMenu(float centerX, float centerY) { - float minBar = centerX - Width() * 0.15; - float maxBar = centerX + Width() * 0.3; - float percentPosX = centerX + Width() * 0.31f; - - glColor4f(1.0f, 1.0f, 0.0f, 1.0f); - m_textureOptSensitivity.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.215); - glTexCoord2f(1, 0); glVertex2i(centerX, centerY + Height() * 0.215); - glTexCoord2f(1, 1); glVertex2i(centerX, centerY + Height() * 0.25); - glTexCoord2f(0, 1); glVertex2i(centerX - Width() * 0.15, centerY + Height() * 0.25); - glEnd(); - - float sensibleBottom = centerY + Height() * 0.165f; - float sensibleTop = centerY + Height() * 0.2f; - - DrawSliderBackground(centerX, centerY, minBar, maxBar, sensibleBottom, sensibleTop); - DrawSlider(centerX, centerY, m_volSensible, minBar, maxBar, sensibleBottom, sensibleTop); - DisplayBarPercentValue(centerX, centerY, percentPosX, sensibleBottom, minBar, maxBar, m_volSensible); - - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); -} - -void Engine::DrawSliderBackground(float centerX, float centerY, float minVal, float maxVal, float bottomSideValue, float topSideValue) { - glColor4f(0.0f, 0.0f, 0.0f, 1.0f); - glBindTexture(GL_TEXTURE_2D, 0); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(minVal, bottomSideValue); - glTexCoord2f(1, 0); glVertex2i(maxVal, bottomSideValue); - glTexCoord2f(1, 1); glVertex2i(maxVal, topSideValue); - glTexCoord2f(0, 1); glVertex2i(minVal, topSideValue); - glEnd(); -} - -void Engine::DisplayBarPercentValue(float centerX, float centerY, float posX, float posY, float minVal, float maxVal, float value) { - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE); - - float percentage = (value / (maxVal - minVal)) * 100; - - if (percentage < 0.0f) { - percentage = 0.0f; - } - else if (percentage > 100.0f) { - percentage = 100.0f; - } - - m_textureFont.Bind(); - std::ostringstream ss; - ss.str(""); - ss << std::fixed << std::setprecision(2); - ss << percentage << "%"; - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - PrintText(posX, posY, ss.str(), 2.0f); - - glDisable(GL_BLEND); -} - -void Engine::DrawSlider(float centerX, float centerY, float value, float minVal, float maxVal, float bottomSideValue, float topSideValue) { - if (value < 0.0f) { - value = 0.0f; - } - else if (value > (maxVal - minVal)) { - value = (maxVal - minVal); - } - - if (value >= 0.0f && value <= (maxVal - minVal)) { - glColor4f(0.0f, 1.0f, 0.0f, 1.0f); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(minVal, bottomSideValue); - glTexCoord2f(1, 0); glVertex2i(minVal + value, bottomSideValue); - glTexCoord2f(1, 1); glVertex2i(minVal + value, topSideValue); - glTexCoord2f(0, 1); glVertex2i(minVal, topSideValue); - glEnd(); - } -} - - - -void Engine::KeyPressEvent(unsigned char key) { - switch (key) { - case 0: // A - Gauche - if (!m_keyA) { - m_keyA = true; - } - break; - case 3: // D - Droite - if (!m_keyD) { - m_keyD = true; - } - break; - case 18: // S - Reculer - if (!m_keyS) { - m_keyS = true; - } - break; - case 22: // W - Avancer - if (!m_keyW) { - m_keyW = true; - } - break; - case 36: // ESC - Quitter - if (m_gamestate == GameState::PLAY) { - m_gamestate = GameState::PAUSE; - } - else if (m_gamestate == GameState::PAUSE) { - m_gamestate = GameState::PLAY; - } - //Stop(); - break; - case 57: // Space - Sauter - if (!m_keySpace) { - m_keySpace = true; - } - break; - case 94: // F10 - Plein �cran - IsFullscreen() ? SetFullscreen(false) : SetFullscreen(true); - //SetFullscreen(!IsFullscreen()); - break; - case 2: // C - Ignorer - break; - case 5: // F - Ignorer - break; - case 10: // K - Debugging DisplayNotification() - m_keyK = true; - m_messageNotification = "notifications systeme peuvent etre affichees"; - break; - case 11: // L - Debugging DisplayNotification() - m_keyL = true; - break; - case 6: // G - Ignorer - break; - case 12: // M - Ignorer - break; - case 7: // H - Ignorer - break; - case 8: // I - Ignorer - break; - case 9: // J - InstantDamage - m_damage = true; - case 15: // P - Ignorer - break; - case 17: // R - Ignorer - break; - case 19: // T - Ignorer - break; - case 24: // Y - Ignorer - break; - case 27: // 1 - break; - case 28: // 2 - break; - case 255: // Fn - Ignorer - break; - default: - std::cout << "Unhandled key: " << (int)key << std::endl; - } -} - -void Engine::KeyReleaseEvent(unsigned char key) { - switch (key) { - case 0: // A - Stop gauche - m_keyA = false; - break; - case 2: // C - Toggle crosshair - m_displayCrosshair = !m_displayCrosshair; - break; - case 3: // D - Stop droite - m_keyD = false; - break; - case 5: // F - Toggle flash - m_flash = !m_flash; - break; - case 6: // G - Toggle Stop Countdown - m_stopcountdown = !m_stopcountdown; - std::cout << "STOP COUNTDOWN " << (m_stopcountdown ? "enabled" : "disabled") << std::endl; - break; - case 7: // H - Toggle HUD - m_displayHud = !m_displayHud; - std::cout << "DISPLAY HUD " << (m_displayHud ? "enabled" : "disabled") << std::endl; - break; - case 8: // I - Toggle render data - m_displayInfo = !m_displayInfo; - std::cout << "DISPLAY INFO " << (m_displayInfo ? "enabled" : "disabled") << std::endl; - break; - case 10: // K - m_keyK = false; - break; - case 11: // L - Debugging DisplayNotification() - m_keyL = false; - break; - case 12: // M - Toggle music - m_audio.ToggleMusicState(); - break; - case 15: - 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() - Vector3f(1.f, 0.f, 1.f), Vector3f(1.f, 0.f, 1.f)); - 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() - Vector3f(1.f, 0.f, 1.f), Vector3f(1.f, 0.f, 1.f)); - } - break; - case 17: // R - Toggle skybox - m_isSkybox = !m_isSkybox; - break; - case 18: // S - Stop reculer - m_keyS = false; - break; - case 19: // T -Reset countdown - m_resetcountdown = true; - std::cout << "RESET COUNTDOWN" << std::endl; - break; - case 22: // W - Stop avancer - m_keyW = false; - break; - case 24: // Y - Wireframe - m_wireframe = !m_wireframe; - if (m_wireframe) - glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - else - glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); - break; - case 27: // 1 - m_key1 = true; - break; - case 28: // 2 - m_key2 = true; - break; - case 57: // Espace - Stop sauter - m_keySpace = false; - break; - } -} - -void Engine::MouseMoveEvent(int x, int y) { - if (m_gamestate == GameState::PLAY) { - m_player.TurnLeftRight(x - (Width() / 2)); - m_player.TurnTopBottom(y - (Height() / 2)); - - // Centrer la souris seulement si elle n'est pas d�j� centr�e - // Il est n�cessaire de faire la v�rification pour �viter de tomber - // dans une boucle infinie o� l'appel � CenterMouse g�n�re un - // MouseMoveEvent, qui rapelle CenterMouse qui rapelle un autre - // MouseMoveEvent, etc - if (x == (Width() / 2) && y == (Height() / 2)) - return; - } - else if (m_gamestate == GameState::MAIN_MENU) { - DisplayMainMenu(); - } - else if (m_gamestate == GameState::OPTIONS) { - float centerX = Width() * 0.5f; - float centerY = Height() * 0.5f; - float leftBar = centerX - Width() * 0.15f; - float rightBar = centerX + Width() * 0.3f; - - if (m_selectedOption == 0 && m_selectedOptAudioMainBar) { - m_volPrincipal = x - leftBar; - } - else if (m_selectedOption == 0 && m_selectedOptAudioMusicBar) { - m_volMusique = x - leftBar; - } - else if (m_selectedOption == 0 && m_selectedOptAudioSfxBar) { - m_volEffets = x - leftBar; - } - else if (m_selectedOption == 2 && m_selectedGameplaySensitivityBar) { - m_volSensible = x - leftBar; - } - } -} - -void Engine::MousePressEvent(const MOUSE_BUTTON& button, int x, int y) { - m_mousemx = x; - m_mousemy = y; - float centerX = Width() * 0.5f; - float centerY = Height() * 0.5f; - - if (m_gamestate == GameState::PLAY) { - switch (button) { - case MOUSE_BUTTON_LEFT: - m_mouseL = true; - break; - case MOUSE_BUTTON_RIGHT: - m_mouseR = true; - break; - case MOUSE_BUTTON_MIDDLE: - m_mouseC = true; - break; - case MOUSE_BUTTON_WHEEL_UP: - m_mouseWU = true; - break; - case MOUSE_BUTTON_WHEEL_DOWN: - m_mouseWD = true; - break; - case MOUSE_BUTTON_NONE: break; - } - } - else if (m_gamestate == GameState::MAIN_MENU) { - - float leftButton = centerX + Width() * 0.045f; - float rightButton = centerX + Width() * 0.4455f; - - float topFirst = centerY + Height() * 0.073f; - float bottomFirst = centerY; - - float topSecond = centerY + Height() * 0.177f; - float bottomSecond = centerY + Height() * 0.105f; - - float topThird = centerY + Height() * 0.275f; - float bottomThird = centerY + Height() * 0.198f; - - if (x > leftButton && x < rightButton && y > bottomFirst && y < topFirst) { - if (m_selectedPlayOptions) { - m_gamestate = GameState::PLAY; - } - else { - m_selectedPlayOptions = true; - } - } - else if (x > leftButton && x < rightButton && y > bottomSecond && y < topSecond) { - if (m_selectedPlayOptions) { - m_gamestate = GameState::LOBBY; - StartMultiplayerGame(); - } - else { - m_gamestate = GameState::OPTIONS; - } - } - else if (x > leftButton && x < rightButton && y > bottomThird && y < topThird) { - if (m_selectedPlayOptions) { - m_selectedPlayOptions = false; - } - else { - m_gamestate = GameState::QUIT; - } - } - } - else if (m_gamestate == GameState::OPTIONS) { - float leftAudio = centerX - Width() * 0.35f; - float rightAudio = centerX - Width() * 0.2f; - float topAudio = (Height() * 0.25f) + ((Height() * 0.25f) - (Height() * 0.2f)); - float bottomAudio = (Height() * 0.2f) + ((Height() * 0.25f) - (Height() * 0.2f)); - - float leftGraph = centerX - Width() * 0.4f; - float rightGraph = centerX - Width() * 0.2f; - float topGraph = centerY - Height() * 0.05f; - float bottomGraph = centerY - Height() * 0.1f; - - float leftGameplay = centerX - Width() * 0.375f; - float rightGameplay = centerX - Width() * 0.2f; - float topGameplay = centerY + Height() * 0.1f; - float bottomGameplay = centerY + Height() * 0.05f; - - float leftBack = centerX - Width() * 0.075f; - float rightBack = centerX + Width() * 0.075f; - float topBack = centerY + Height() * 0.25f; - float bottomBack = centerY + Height() * 0.2f; - - if (x > leftAudio && x < rightAudio && y > bottomAudio && y < topAudio) { - m_selectedOption = 0; // Volume - } - else if (x > leftGraph && x < rightGraph && y > bottomGraph && y < topGraph) { - m_selectedOption = 1; // Graphics - } - else if (x > leftGameplay && x < rightGameplay && y > bottomGameplay && y < topGameplay) { - m_selectedOption = 2; // Gameplay - } - else if (x > leftBack && x < rightBack && y > bottomBack && y < topBack) { - m_gamestate = GameState::MAIN_MENU; - } - - // Audio - float leftBar = centerX - Width() * 0.15f; - float rightBar = centerX + Width() * 0.3f; - - float topBarPrincipal = centerY - Height() * 0.165f; - float bottomBarPrincipal = centerY - Height() * 0.2f; - - float topBarMusique = centerY - Height() * 0.0415f; - float bottomBarMusique = centerY - Height() * 0.075f; - - float topBarEffets = centerY + Height() * 0.085f; - float bottomBarEffets = centerY + Height() * 0.05f; - - if (m_selectedOption == 0 && x > leftBar && x < rightBar && y > bottomBarPrincipal && y < topBarPrincipal) { - m_volPrincipal = x - leftBar; - m_selectedOptAudioMainBar = true; - } - else if (m_selectedOption == 0 && x > leftBar && x < rightBar && y > bottomBarMusique && y < topBarMusique) { - m_volMusique = x - leftBar; - m_selectedOptAudioMusicBar = true; - } - else if (m_selectedOption == 0 && x > leftBar && x < rightBar && y > bottomBarEffets && y < topBarEffets) { - m_volEffets = x - leftBar; - m_selectedOptAudioSfxBar = true; - } - - // Resolution - float leftChk = centerX + Width() * 0.075f; - float rightChk = centerX + Width() * 0.09f; - - float topChkHD = centerY - Height() * 0.125f; - float bottomChkHD = centerY - Height() * 0.155f; - - float topChkFHD = centerY - Height() * 0.0725f; - float bottomChkFHD = centerY - Height() * 0.1f; - - float topChkQHD = centerY - Height() * 0.025f; - float bottomChkQHD = centerY - Height() * 0.05f; - - float topChkUHD = centerY + Height() * 0.025f; - float bottomChkUHD = centerY; - - if (m_selectedOption == 1 && leftChk && x < rightChk && y > bottomChkHD && y < topChkHD) { - m_resolution = HD; - } - else if (m_selectedOption == 1 && x > leftChk && x < rightChk && y > bottomChkFHD && y < topChkFHD) { - m_resolution = FHD; - } - else if (m_selectedOption == 1 && x > leftChk && x < rightChk && y > bottomChkQHD && y < topChkQHD) { - m_resolution = QHD; - } - else if (m_selectedOption == 1 && x > leftChk && x < rightChk && y > bottomChkUHD && y < topChkUHD) { - m_resolution = UHD; - } - - // Gameplay - if (m_selectedOption == 2 && x > leftBar && x < rightBar && y > bottomBarPrincipal && y < topBarPrincipal) { - m_volSensible = x - leftBar; - m_selectedGameplaySensitivityBar = true; - } - } -} - -void Engine::MouseReleaseEvent(const MOUSE_BUTTON& button, int x, int y) { - switch (button) { - case MOUSE_BUTTON_LEFT: - m_mouseL = false; - m_block = false; - m_selectedOptAudioMainBar = false; - m_selectedOptAudioMusicBar = false; - m_selectedOptAudioSfxBar = false; - m_selectedGameplaySensitivityBar = false; - break; - case MOUSE_BUTTON_RIGHT: - m_mouseR = false; - m_block = false; - break; - case MOUSE_BUTTON_MIDDLE: - m_mouseC = false; - break; - case MOUSE_BUTTON_WHEEL_UP: - m_mouseWU = false; - break; - case MOUSE_BUTTON_WHEEL_DOWN: - m_mouseWD = false; - break; - case MOUSE_BUTTON_NONE: break; - } -} - -bool Engine::LoadTexture(Texture& texture, const std::string& filename, bool useMipmaps, bool stopOnError) { - texture.Load(filename, useMipmaps); - if (!texture.IsValid()) { - std::cerr << "Unable to load texture (" << filename << ")" << std::endl; - if (stopOnError) - Stop(); - - return false; - } - - return true; -} - - From ab87da7d88fba7c902688cee7d664347998431e2 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Thu, 7 Dec 2023 14:03:58 -0500 Subject: [PATCH 57/82] Ehm. --- SQCSim-srv/server.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index 622ab6c..af7214a 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -327,8 +327,8 @@ void Server::Run() { sendPackTo(m_sock_udp, bull, &m_buf, conn->getAddr()); delete bull; } + netbull.clear(); - for (auto& bull : bullets) { ChunkMod* cmod = nullptr; if (bull->Update(m_world, (1. / 60.), 20, m_players, &cmod)) { @@ -337,7 +337,6 @@ void Server::Run() { outbox_bullets.emplace_back(std::move(bull)); } } - netbull.clear(); for (auto& chat : chatlog) { Log(chat->mess, false, false); @@ -354,9 +353,9 @@ void Server::Run() { } chunkdiffs.clear(); - for (auto& bull : outbox_bullets) - delete bull; - outbox_bullets.clear(); + //for (auto& bull : outbox_bullets) + // delete bull; + //outbox_bullets.clear(); } Chat end; From d1f02c34e98452720d909e8938263927dcfabbba Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Thu, 7 Dec 2023 14:04:31 -0500 Subject: [PATCH 58/82] FaCkInG HeLL --- SQCSim2021/remoteplayer.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index 357d9f1..2983bc2 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -153,7 +153,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (current.states.jumping) index = 25; - else if (current.states.running || current.states.still) + else if (current.states.running && current.states.still) index = 0; } @@ -173,7 +173,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (current.states.jumping ) index = 26; - else if (current.states.running || current.states.still) + else if (current.states.running && current.states.still) index = 1; } @@ -193,7 +193,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (current.states.jumping ) index = 28; - else if (current.states.running || current.states.still) + else if (current.states.running && current.states.still) index = 3; } @@ -213,7 +213,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (current.states.jumping) index = 30; - else if (current.states.running || current.states.still) + else if (current.states.running && current.states.still) index = 5; } else if (angle < -0.75) //Dos - side négatif @@ -232,7 +232,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (current.states.jumping ) index = 32; - else if (current.states.running || current.states.still) + else if (current.states.running && current.states.still) index = 7; } @@ -252,7 +252,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (current.states.jumping) index = 27; - else if (current.states.running || current.states.still) + else if (current.states.running && current.states.still) index = 2; } @@ -272,7 +272,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (current.states.jumping) index = 29; - else if (current.states.running || current.states.still) + else if (current.states.running && current.states.still) index = 4; } @@ -292,7 +292,7 @@ void RemotePlayer::Render(TextureAtlas& atlas, Shader& shader, Transformation tr } else if (current.states.jumping) index = 31; - else if (current.states.running || current.states.still) + else if (current.states.running && current.states.still) index = 6; } From 8bfee4a9ff08d0c72df095d86e6ffe2643e78b22 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Thu, 7 Dec 2023 14:24:09 -0500 Subject: [PATCH 59/82] :Q --- SQCSim-srv/server.cpp | 1 - SQCSim2021/connector.cpp | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index af7214a..41ad711 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -163,7 +163,6 @@ int Server::Ready() { play.tid = log->tid; sendPackTo(m_sock_udp, &m_game, &m_buf, &sockad); - std::cout << m_game.seed << std::endl; Connection* conn = new Connection(sock, sockad, *log, play); m_conns[log->sid] = conn; diff --git a/SQCSim2021/connector.cpp b/SQCSim2021/connector.cpp index eb1d754..3844783 100644 --- a/SQCSim2021/connector.cpp +++ b/SQCSim2021/connector.cpp @@ -94,6 +94,7 @@ int Connector::Connect(const char* srv_addr, std::string name) { ++errors; else { m_players[pl->id] = pl; + std::cout << "A challenger appears! " << pl->name << std::endl; } break; case TEAMINF: From fcd1c869b95a4e1a50eeed4fde57d95d2b32215e Mon Sep 17 00:00:00 2001 From: Claudel-D-Roy <112507354+Claudel-D-Roy@users.noreply.github.com> Date: Thu, 7 Dec 2023 15:13:45 -0500 Subject: [PATCH 60/82] Enlever les commentaires --- SQCSim2021/remoteplayer.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/SQCSim2021/remoteplayer.cpp b/SQCSim2021/remoteplayer.cpp index 2983bc2..47bd809 100644 --- a/SQCSim2021/remoteplayer.cpp +++ b/SQCSim2021/remoteplayer.cpp @@ -32,8 +32,6 @@ void RemotePlayer::Feed(const netprot::Output out) { m_position = Vector3f(out.position); m_direction = Vector3f(out.direction); - std::cout << "Dead: " << out.states.dead << " Hit:" << out.states.hit << " Jump:" << out.states.jumping << " JumpShot: " << out.states.jumpshot << " Running: " << out.states.running << " Shooting: " << out.states.shooting << " Still: " << out.states.still << std::endl; - //std::cout << "powerUp " << out.states.powerup << std::endl; current.states = out.states; //current.position = out.position; From 486c823da112af88120601bafa80eec65a04f3bf Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Thu, 7 Dec 2023 15:14:16 -0500 Subject: [PATCH 61/82] OH --- SQCSim-common/bullet.cpp | 2 -- SQCSim-srv/server.cpp | 16 +++++++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/SQCSim-common/bullet.cpp b/SQCSim-common/bullet.cpp index ad9e931..413c2cc 100644 --- a/SQCSim-common/bullet.cpp +++ b/SQCSim-common/bullet.cpp @@ -16,11 +16,9 @@ bool Bullet::Update(World* world, float elapsedtime, int perframe, std::unordere for (auto& [key, player] : mapPlayer) { bool hit = false; if ((m_currentpos - player->GetPosition()).Length() < .6f) { - std::cout << "hit" << std::endl; hit = true; } if ((m_currentpos - player->GetPOV()).Length() < .2f) { - std::cout << "headshot" << std::endl; damage *= 2; // HEADSHOT! hit = true; } diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index 41ad711..5314c31 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -200,6 +200,10 @@ void Server::Run() { m_world->BuildWorld(); for (auto& [key, conn] : m_conns) { // Creation des instances de joueurs et premier sync. + if (!conn) { + m_conns.erase(key); + continue; + } int x = 0,// (rand() % (CHUNK_SIZE_X * WORLD_SIZE_X - 1)),// -(CHUNK_SIZE_X * WORLD_SIZE_X / 2), y = 0;// (rand() % (CHUNK_SIZE_Y * WORLD_SIZE_Y - 1));// -(CHUNK_SIZE_Y * WORLD_SIZE_Y / 2); conn->player = new Player(Vector3f(x + .5f, CHUNK_SIZE_Y + 1.8f, y + .5f)); @@ -247,7 +251,8 @@ void Server::Run() { } last = tstamp; - for (auto& [key, conn] : m_conns) { + + for (auto& [key, conn] : m_conns) { /* In */ @@ -260,8 +265,10 @@ void Server::Run() { switch (netprot::getType(pck, 1)) { using enum netprot::PACKET_TYPE; case INPUT: - if (Deserialize(&in, pck, &bsize)) - m_conns[in.sid]->AddInput(in); + if (Deserialize(&in, pck, &bsize)) { + if (m_conns.count(in.sid)) + m_conns[in.sid]->AddInput(in); + } break; case SYNC: if (Deserialize(&sync, pck, &bsize)) {} @@ -298,6 +305,9 @@ void Server::Run() { chunkdiffs.emplace_back(std::move(chmo)); conn->ChunkDiffs.clear(); + std::string str = conn->player->GetUsername(); + Log(str.append(" ").append(std::to_string(conn->player->GetHP())), false, false); + for (auto& bull : conn->Bullets) { bullets.emplace_back(bull); Log("POW!", false, false); From 7e98eeb852ad2841b8d653c5eb61f7303a9befd4 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Thu, 7 Dec 2023 15:47:31 -0500 Subject: [PATCH 62/82] whyyyyyyyyy --- SQCSim-srv/server.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index 5314c31..e465a6a 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -305,9 +305,6 @@ void Server::Run() { chunkdiffs.emplace_back(std::move(chmo)); conn->ChunkDiffs.clear(); - std::string str = conn->player->GetUsername(); - Log(str.append(" ").append(std::to_string(conn->player->GetHP())), false, false); - for (auto& bull : conn->Bullets) { bullets.emplace_back(bull); Log("POW!", false, false); @@ -347,6 +344,10 @@ void Server::Run() { } } + for (auto gtfo : outbox_bullets) + delete gtfo; + outbox_bullets.clear(); + for (auto& chat : chatlog) { Log(chat->mess, false, false); for (auto& [key, conn] : m_conns) @@ -371,6 +372,12 @@ void Server::Run() { end.src_id = 0; char endmess[] = "Game over, man. Game over."; + for (auto& [key, conn] : m_conns) { + std::string str = conn->player->GetUsername(); + Log(str.append(" ").append(std::to_string(conn->player->GetHP())), false, false); + + } + strcpy(end.mess, 140, endmess); for (auto& [key, conn] : m_conns) From 721fef57e28fa2ef97c2e562c96a3dbd15d89171 Mon Sep 17 00:00:00 2001 From: mduval76 <9343789@etu.cegepsth.qc.ca> Date: Thu, 7 Dec 2023 16:31:43 -0500 Subject: [PATCH 63/82] Push lobby labels. --- SQCSim2021/engine.cpp | 59 ++++++++---------- SQCSim2021/engine.h | 3 + .../textures/menus/labels/labelIdentify.png | Bin 0 -> 16958 bytes .../textures/menus/labels/labelServer.png | Bin 0 -> 11626 bytes 4 files changed, 29 insertions(+), 33 deletions(-) create mode 100644 SQCSim2021/media/textures/menus/labels/labelIdentify.png create mode 100644 SQCSim2021/media/textures/menus/labels/labelServer.png diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 6d466e0..30a6cac 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -107,6 +107,9 @@ void Engine::LoadResource() { LoadTexture(m_textureOptSensitivity, TEXTURE_PATH "menus/buttons/options/optSensitivity.png", false); LoadTexture(m_textureOptSfx, TEXTURE_PATH "menus/buttons/options/optSfx.png", false); + LoadTexture(m_textureLobbyServer, TEXTURE_PATH "menus/labels/labelServer.png", false); + LoadTexture(m_textureLobbyIdentify, TEXTURE_PATH "menus/labels/labelIdentify.png", false); + LoadTexture(m_textureHd, TEXTURE_PATH "menus/labels/labelHd.png", false); LoadTexture(m_textureHd, TEXTURE_PATH "menus/labels/labelHd.png", false); LoadTexture(m_textureFhd, TEXTURE_PATH "menus/labels/labelFhd.png", false); LoadTexture(m_textureQhd, TEXTURE_PATH "menus/labels/labelQhd.png", false); @@ -714,19 +717,18 @@ void Engine::DisplaySplashScreen() { void Engine::DisplayLobbyMenu() { GLint viewport[4]; glGetIntegerv(GL_VIEWPORT, viewport); - glDisable(GL_DEPTH_TEST); + glDisable(GL_DEPTH_TEST); glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE); glMatrixMode(GL_PROJECTION); glPushMatrix(); + glLoadIdentity(); glOrtho(0, Width(), 0, Height(), -1, 1); glMatrixMode(GL_MODELVIEW); glPushMatrix(); - glLoadIdentity(); m_textureLobbyMenu.Bind(); glBegin(GL_QUADS); @@ -738,38 +740,29 @@ void Engine::DisplayLobbyMenu() { glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + m_textureLobbyIdentify.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(Width() * 0.6, Height() * 0.75); + glTexCoord2f(1, 0); glVertex2i(Width() * 0.975, Height() * 0.75); + glTexCoord2f(1, 1); glVertex2i(Width() * 0.975, Height() * 0.95); + glTexCoord2f(0, 1); glVertex2i(Width() * 0.6, Height() * 0.95); + glEnd(); + + //glBindTexture(GL_TEXTURE_2D, 0); + //glBegin(GL_QUADS); + //glTexCoord2f(0, 0); glVertex2i(Width() * 0.6, Height() * 0.4); + //glTexCoord2f(1, 0); glVertex2i(Width() * 0.975, Height() * 0.4); + //glTexCoord2f(1, 1); glVertex2i(Width() * 0.975, Height() * 0.475); + //glTexCoord2f(0, 1); glVertex2i(Width() * 0.6, Height() * 0.475); + //glEnd(); + m_textureFont.Bind(); std::ostringstream ss; - ss.str(""); - ss << "Identify yourself!"; - PrintText(Width() * 0.625f, Height() * 0.825f, ss.str(), 2.5f); - - glBindTexture(GL_TEXTURE_2D, 0); glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(Width() * 0.6, Height() * 0.47); - glTexCoord2f(1, 0); glVertex2i(Width() * 0.95, Height() * 0.47); - glTexCoord2f(1, 1); glVertex2i(Width() * 0.95, Height() * 0.475); - glTexCoord2f(0, 1); glVertex2i(Width() * 0.6, Height() * 0.475); - glEnd(); - - - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(Width() * 0.6, Height() * 0.415); - glTexCoord2f(1, 0); glVertex2i(Width() * 0.95, Height() * 0.415); - glTexCoord2f(1, 1); glVertex2i(Width() * 0.95, Height() * 0.42); - glTexCoord2f(0, 1); glVertex2i(Width() * 0.6, Height() * 0.42); - glEnd(); - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - - - m_textureFont.Bind(); - glColor4f(1.0f, 0.0f, 0.0f, 1.0f); ss.str(""); - ss << "_________"; - PrintText(Width() * 0.627f, Height() * 0.435f, ss.str(), 2.5f); + ss << "_____________________"; + PrintText(Width() * 0.6f, Height() * 0.4f, ss.str(), 2.5f); + ss.str(""); glColor4f(1.0f, 1.0f, 1.0f, 1.0f); @@ -782,6 +775,7 @@ void Engine::DisplayLobbyMenu() { glMatrixMode(GL_MODELVIEW); glPopMatrix(); + } void Engine::DisplayMainMenu() { @@ -1226,9 +1220,8 @@ void Engine::Render(float elapsedTime) { if (m_gamestate == GameState::PLAY) { HideCursor(); - CenterMouse(); //D�placement de centermouse dans l'action de jouer + CenterMouse(); - //static float gameTime = elapsedTime; static irrklang::ISound* step; // Pour les sons de pas. static float pollTime = 0; static float bulletTime = 0; diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index 8161620..399e783 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -133,6 +133,9 @@ private: Texture m_textureFhd; Texture m_textureQhd; Texture m_textureUhd; + + Texture m_textureLobbyServer; + Texture m_textureLobbyIdentify; Texture m_textureCheck; Texture m_textureChecked; diff --git a/SQCSim2021/media/textures/menus/labels/labelIdentify.png b/SQCSim2021/media/textures/menus/labels/labelIdentify.png new file mode 100644 index 0000000000000000000000000000000000000000..6656fd90a007d2cc04701f768f1bc04c1fbc1d84 GIT binary patch literal 16958 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 ZIiLR&@9(I0#S9D#44$rjF6*2UngAOg&gcLD literal 0 HcmV?d00001 diff --git a/SQCSim2021/media/textures/menus/labels/labelServer.png b/SQCSim2021/media/textures/menus/labels/labelServer.png new file mode 100644 index 0000000000000000000000000000000000000000..33c0652c8e2366d15d79d7f4d91a94cf5f83ab53 GIT binary patch literal 11626 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 Date: Fri, 8 Dec 2023 04:31:10 -0500 Subject: [PATCH 64/82] Can now clean bullets off the forest. --- SQCSim-common/netprotocol.cpp | 122 ++++++++++++++-------------------- SQCSim-common/netprotocol.h | 4 +- SQCSim-srv/server.cpp | 25 ++++--- 3 files changed, 65 insertions(+), 86 deletions(-) diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index 39bd0f5..47a8e9e 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -29,13 +29,13 @@ void netprot::Serialize(Input* in, char* buf[], uint32_t* buflen) { Keys keys = in->keys; uint8_t keys8 = // Reste un bit. - (keys.forward? 0b10000000: 0) | - (keys.backward? 0b01000000: 0) | - (keys.left? 0b00100000: 0) | - (keys.right? 0b00010000: 0) | - (keys.jump? 0b00001000: 0) | - (keys.shoot? 0b00000100: 0) | - (keys.block? 0b00000010: 0); + (keys.forward ? 0b10000000 : 0) | + (keys.backward ? 0b01000000 : 0) | + (keys.left ? 0b00100000 : 0) | + (keys.right ? 0b00010000 : 0) | + (keys.jump ? 0b00001000 : 0) | + (keys.shoot ? 0b00000100 : 0) | + (keys.block ? 0b00000010 : 0); memcpy(*buf + sizeof(uint64_t) * 2 + 1, &keys8, sizeof(uint8_t)); @@ -90,14 +90,14 @@ void netprot::Serialize(Output* out, char* buf[], uint32_t* buflen) { States states = out->states; uint8_t states8 = - (states.jumping? 0b10000000: 0) | - (states.shooting? 0b01000000: 0) | - (states.hit? 0b00100000: 0) | - (states.powerup? 0b00010000: 0) | - (states.dead? 0b00001000: 0) | - (states.still? 0b00000100: 0) | - (states.jumpshot? 0b00000010: 0) | - (states.running? 0b00000001: 0); + (states.jumping ? 0b10000000 : 0) | + (states.shooting ? 0b01000000 : 0) | + (states.hit ? 0b00100000 : 0) | + (states.powerup ? 0b00010000 : 0) | + (states.dead ? 0b00001000 : 0) | + (states.still ? 0b00000100 : 0) | + (states.jumpshot ? 0b00000010 : 0) | + (states.running ? 0b00000001 : 0); memcpy(*buf + sizeof(uint64_t) * 2 + 1, &states8, sizeof(uint8_t)); @@ -204,7 +204,7 @@ void netprot::Serialize(Sync* sync, char* buf[], uint32_t* buflen) { memcpy(&hp, &sync->hp, sizeof(float)); - uint8_t hp8[4] = { + uint8_t hp8[4] = { (uint8_t)((hp >> 24) & 0xFF), (uint8_t)((hp >> 16) & 0xFF), (uint8_t)((hp >> 8) & 0xFF), @@ -523,7 +523,7 @@ void netprot::Serialize(ErrorLog* errlog, char* buf[], uint32_t* buflen) { -bool netprot::Deserialize(Input* in, char* buf, uint32_t *buflen) { +bool netprot::Deserialize(Input* in, char* buf, uint32_t* buflen) { if (*buflen <= sizeof(Input)) return false; @@ -538,7 +538,7 @@ bool netprot::Deserialize(Input* in, char* buf, uint32_t *buflen) { (uint64_t)diff[5] << 16 | (uint64_t)diff[6] << 8 | (uint64_t)diff[7]; - + memcpy(diff, &buf[1 + sizeof(uint64_t)], sizeof(uint64_t)); in->sid = (uint64_t)diff[0] << 56 | @@ -583,7 +583,7 @@ bool netprot::Deserialize(Input* in, char* buf, uint32_t *buflen) { return true; } -bool netprot::Deserialize(Output* out, char* buf, uint32_t *buflen) { +bool netprot::Deserialize(Output* out, char* buf, uint32_t* buflen) { if (*buflen <= sizeof(Output)) return false; @@ -662,7 +662,7 @@ bool netprot::Deserialize(Output* out, char* buf, uint32_t *buflen) { return true; } -bool netprot::Deserialize(Sync* sync, char* buf, uint32_t *buflen) { +bool netprot::Deserialize(Sync* sync, char* buf, uint32_t* buflen) { if (*buflen <= sizeof(Sync)) return false; @@ -725,9 +725,9 @@ bool netprot::Deserialize(Sync* sync, char* buf, uint32_t *buflen) { memcpy(&hp8, &buf[2 + sizeof(uint64_t) * 2 + sizeof(uint32_t) * 4 + sizeof(uint16_t)], sizeof(uint32_t)); uint32_t hp = (uint32_t)hp8[0] << 24 | - (uint32_t)hp8[1] << 16 | - (uint32_t)hp8[2] << 8 | - (uint32_t)hp8[3]; + (uint32_t)hp8[1] << 16 | + (uint32_t)hp8[2] << 8 | + (uint32_t)hp8[3]; memcpy(&sync->hp, &hp, sizeof(float)); @@ -736,7 +736,7 @@ bool netprot::Deserialize(Sync* sync, char* buf, uint32_t *buflen) { return true; } -bool netprot::Deserialize(TeamInfo* tinfo, char* buf, uint32_t *buflen) { +bool netprot::Deserialize(TeamInfo* tinfo, char* buf, uint32_t* buflen) { if (*buflen <= sizeof(LoginInfo)) return false; @@ -764,7 +764,7 @@ bool netprot::Deserialize(TeamInfo* tinfo, char* buf, uint32_t *buflen) { return true; } -bool netprot::Deserialize(LoginInfo* linfo, char* buf, uint32_t *buflen) { +bool netprot::Deserialize(LoginInfo* linfo, char* buf, uint32_t* buflen) { if (*buflen <= sizeof(LoginInfo)) return false; @@ -803,7 +803,7 @@ bool netprot::Deserialize(LoginInfo* linfo, char* buf, uint32_t *buflen) { return true; } -bool netprot::Deserialize(PlayerInfo* pinfo, char* buf, uint32_t *buflen) { +bool netprot::Deserialize(PlayerInfo* pinfo, char* buf, uint32_t* buflen) { if (*buflen <= sizeof(PlayerInfo)) return false; @@ -842,7 +842,7 @@ bool netprot::Deserialize(PlayerInfo* pinfo, char* buf, uint32_t *buflen) { return true; } -bool netprot::Deserialize(GameInfo* ginfo, char* buf, uint32_t *buflen) { +bool netprot::Deserialize(GameInfo* ginfo, char* buf, uint32_t* buflen) { if (*buflen <= sizeof(GameInfo)) return false; @@ -885,7 +885,7 @@ bool netprot::Deserialize(GameInfo* ginfo, char* buf, uint32_t *buflen) { return true; } -bool netprot::Deserialize(Chat* chat, char* buf, uint32_t *buflen) { +bool netprot::Deserialize(Chat* chat, char* buf, uint32_t* buflen) { if (*buflen <= sizeof(Chat)) return false; @@ -935,7 +935,7 @@ bool netprot::Deserialize(Chat* chat, char* buf, uint32_t *buflen) { strcpy(chat->mess, 140, ciboire); //*buflen = messsize + sizeof(uint64_t) * 3 + 1; - + return true; } @@ -1037,7 +1037,7 @@ bool netprot::Deserialize(BulletAdd* bull, char* buf, uint32_t* buflen) { return true; } -bool netprot::Deserialize(ErrorLog* errlog, char* buf, uint32_t *buflen) { +bool netprot::Deserialize(ErrorLog* errlog, char* buf, uint32_t* buflen) { if (*buflen <= sizeof(ErrorLog)) return false; @@ -1064,7 +1064,7 @@ netprot::PACKET_TYPE netprot::getType(char* buf, const uint32_t buflen) { return (netprot::PACKET_TYPE)buf[0]; } -netprot::Packet netprot::getPack(char* buf, uint32_t *buflen) { +netprot::Packet netprot::getPack(char* buf, uint32_t* buflen) { Packet pck = { nullptr, PACKET_TYPE::ERR }; Input* in = nullptr; Output* out = nullptr; @@ -1167,13 +1167,13 @@ netprot::Packet netprot::makePack(void* ptr, PACKET_TYPE type) { return pck; } -std::vector netprot::recvPacks(SOCKET sock, Buffer* buf, Buffer* outbuf) { +std::vector netprot::recvPacks(SOCKET sock, Buffer* buf) { std::vector lsPck; - int len = buf->tmp? buf->tmp - buf->ptr: 0, + int len = buf->tmp ? buf->tmp - buf->ptr : 0, end = 0; - char * cursor = buf->tmp ? buf->tmp: nullptr , - * next = buf->tmp ? buf->tmp + 1: buf->ptr, - * last = buf->tmp ? buf->tmp: buf->ptr; + char* cursor = buf->tmp ? buf->tmp : nullptr, + * next = buf->tmp ? buf->tmp + 1 : buf->ptr, + * last = buf->tmp ? buf->tmp : buf->ptr; bool ended = true; struct pollfd fds[1]; @@ -1186,13 +1186,13 @@ std::vector netprot::recvPacks(SOCKET sock, Buffer* buf, Buffer* outbuf) buf->tmp = nullptr; return lsPck; } - + int bytes = recv(sock, &buf->ptr[len], buf->len - len, 0); if (bytes <= 0) { // si recv() retourne -1 ou 0; ça veut dire qu'il y a plus rien a lire qui n'a pas déjà été traité. if (ended) buf->tmp = nullptr; return lsPck; - } + } len += bytes; end = len; @@ -1207,7 +1207,7 @@ std::vector netprot::recvPacks(SOCKET sock, Buffer* buf, Buffer* outbuf) if (end < 0) break; - cursor = (char*)memchr(next, '\r', end); + cursor = (char*)std::move(memchr(next, '\r', end)); if (cursor) { next = cursor; @@ -1215,25 +1215,15 @@ std::vector netprot::recvPacks(SOCKET sock, Buffer* buf, Buffer* outbuf) cmp = memcmp(cursor, Footer, sizeof(uint32_t)); if (cmp == 0) { - if (!outbuf) { - lsPck.push_back(last); - cursor += sizeof(uint32_t); - last = cursor; - next = cursor + 1; - } - else { - memcpy(&outbuf->ptr[cursor - last], last, cursor - last); - lsPck.push_back(&outbuf->ptr[cursor - last]); - cursor += sizeof(uint32_t); - last = cursor; - next = cursor + 1; - } + lsPck.push_back(std::move(last)); + cursor += sizeof(uint32_t); + last = cursor; + next = cursor + 1; } } else { - if (!outbuf) - buf->tmp = last; - cursor = &buf->ptr[len]; + buf->tmp = std::move(last); + cursor = std::move(&buf->ptr[len]); next = cursor + 1; break; }; @@ -1241,7 +1231,7 @@ std::vector netprot::recvPacks(SOCKET sock, Buffer* buf, Buffer* outbuf) } } -std::vector netprot::recvPacksFrom(SOCKET sock, Buffer* buf, sockaddr_in from, Buffer* outbuf) { +std::vector netprot::recvPacksFrom(SOCKET sock, Buffer* buf, sockaddr_in from) { std::vector lsPck; int len = buf->tmp ? buf->tmp - buf->ptr : 0, end = 0; @@ -1291,24 +1281,14 @@ std::vector netprot::recvPacksFrom(SOCKET sock, Buffer* buf, sockaddr_in cmp = memcmp(cursor, Footer, sizeof(uint32_t)); if (cmp == 0) { - if (!outbuf) { - lsPck.push_back(last); - cursor += sizeof(uint32_t); - last = cursor; - next = cursor + 1; - } - else { - memcpy(&outbuf->ptr[cursor - last], last, cursor - last); - lsPck.push_back(&outbuf->ptr[cursor - last]); - cursor += sizeof(uint32_t); - last = cursor; - next = cursor + 1; - } + lsPck.push_back(last); + cursor += sizeof(uint32_t); + last = cursor; + next = cursor + 1; } } else { - if (!outbuf) - buf->tmp = last; + buf->tmp = last; cursor = &buf->ptr[len]; next = cursor + 1; break; diff --git a/SQCSim-common/netprotocol.h b/SQCSim-common/netprotocol.h index d8a0b6a..2f12d6e 100644 --- a/SQCSim-common/netprotocol.h +++ b/SQCSim-common/netprotocol.h @@ -193,8 +193,8 @@ namespace netprot { template void sendPack(SOCKET sock, T* pack, Buffer* buf); template void sendPackTo(SOCKET sock, T* pack, Buffer* buf, sockaddr_in* sockad); - std::vector recvPacks(SOCKET sock, Buffer* buf, Buffer* oufbuf = nullptr); - std::vector recvPacksFrom(SOCKET sock, Buffer* buf, sockaddr_in from, Buffer* oufbuf = nullptr); + std::vector recvPacks(SOCKET sock, Buffer* buf); + std::vector recvPacksFrom(SOCKET sock, Buffer* buf, sockaddr_in from); /* Templates */ diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index e465a6a..87e18ea 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -224,7 +224,8 @@ void Server::Run() { Timestamp last = 0; std::vector chatlog; std::vector chunkdiffs; - std::vector bullets, outbox_bullets; + std::vector bullets; + std::vector::iterator> bullit; std::vector netbull; Chat* startchat = new Chat(); @@ -334,19 +335,21 @@ void Server::Run() { delete bull; } netbull.clear(); - - for (auto& bull : bullets) { + + for (auto bull = bullets.begin(); bull != bullets.end(); ++bull) { ChunkMod* cmod = nullptr; - if (bull->Update(m_world, (1. / 60.), 20, m_players, &cmod)) { + Bullet* bullet = *bull; + if (bullet->Update(m_world, (1. / 60.), 20, m_players, &cmod)) { if (cmod) - chunkdiffs.emplace_back(std::move(cmod)); - outbox_bullets.emplace_back(std::move(bull)); + chunkdiffs.emplace_back(cmod); + bullit.push_back(bull); + delete bullet; } } - for (auto gtfo : outbox_bullets) - delete gtfo; - outbox_bullets.clear(); + for (auto& bull: bullit) + bullets.erase(bull); + bullit.clear(); for (auto& chat : chatlog) { Log(chat->mess, false, false); @@ -362,10 +365,6 @@ void Server::Run() { delete chmo; } chunkdiffs.clear(); - - //for (auto& bull : outbox_bullets) - // delete bull; - //outbox_bullets.clear(); } Chat end; From 34976ef7ec938c30eed8013d40fe28af7b3c754a Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Fri, 8 Dec 2023 04:55:00 -0500 Subject: [PATCH 65/82] /* delete[] mess */ Well there's your mem leak. --- SQCSim-common/netprotocol.cpp | 140 +++++++++++++++++----------------- SQCSim-common/netprotocol.h | 6 +- SQCSim-srv/connection.cpp | 2 +- SQCSim-srv/server.cpp | 7 +- 4 files changed, 76 insertions(+), 79 deletions(-) diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index 47a8e9e..04f70bc 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -1167,8 +1167,7 @@ netprot::Packet netprot::makePack(void* ptr, PACKET_TYPE type) { return pck; } -std::vector netprot::recvPacks(SOCKET sock, Buffer* buf) { - std::vector lsPck; +void netprot::recvPacks(SOCKET sock, Buffer* buf, std::vector* lsPck) { int len = buf->tmp ? buf->tmp - buf->ptr : 0, end = 0; char* cursor = buf->tmp ? buf->tmp : nullptr, @@ -1184,80 +1183,14 @@ std::vector netprot::recvPacks(SOCKET sock, Buffer* buf) { if (!poll(fds, 1, 0)) { if (ended) buf->tmp = nullptr; - return lsPck; + return; } int bytes = recv(sock, &buf->ptr[len], buf->len - len, 0); if (bytes <= 0) { // si recv() retourne -1 ou 0; ça veut dire qu'il y a plus rien a lire qui n'a pas déjà été traité. if (ended) buf->tmp = nullptr; - return lsPck; - } - len += bytes; - end = len; - - ended = false; - - while (true) { - int cmp = 0; - - if (cursor) - end -= (cursor - buf->ptr); - - if (end < 0) - break; - - cursor = (char*)std::move(memchr(next, '\r', end)); - - if (cursor) { - next = cursor; - cursor--; - - cmp = memcmp(cursor, Footer, sizeof(uint32_t)); - if (cmp == 0) { - lsPck.push_back(std::move(last)); - cursor += sizeof(uint32_t); - last = cursor; - next = cursor + 1; - } - } - else { - buf->tmp = std::move(last); - cursor = std::move(&buf->ptr[len]); - next = cursor + 1; - break; - }; - } - } -} - -std::vector netprot::recvPacksFrom(SOCKET sock, Buffer* buf, sockaddr_in from) { - std::vector lsPck; - int len = buf->tmp ? buf->tmp - buf->ptr : 0, - end = 0; - char* cursor = buf->tmp ? buf->tmp : nullptr, - * next = buf->tmp ? buf->tmp + 1 : buf->ptr, - * last = buf->tmp ? buf->tmp : buf->ptr; - bool ended = true; - struct pollfd fds[1]; - sockaddr_in sockad = from; - addrlen_t socklen = sizeof(sockad); - - fds[0].fd = sock; - fds[0].events = POLLIN; - - while (true) { - if (!poll(fds, 1, 0)) { - if (ended) - buf->tmp = nullptr; - return lsPck; - } - - int bytes = recvfrom(sock, &buf->ptr[len], buf->len - len, 0, (sockaddr*)&sockad, &socklen); - if (bytes <= 0) { // si recv() retourne -1 ou 0; ça veut dire qu'il y a plus rien a lire qui n'a pas déjà été traité. - if (ended) - buf->tmp = nullptr; - return lsPck; + return; } len += bytes; end = len; @@ -1281,7 +1214,72 @@ std::vector netprot::recvPacksFrom(SOCKET sock, Buffer* buf, sockaddr_in cmp = memcmp(cursor, Footer, sizeof(uint32_t)); if (cmp == 0) { - lsPck.push_back(last); + lsPck->push_back(last); + cursor += sizeof(uint32_t); + last = cursor; + next = cursor + 1; + } + } + else { + buf->tmp = last; + cursor = &buf->ptr[len]; + next = cursor + 1; + break; + }; + } + } +} + +void netprot::recvPacksFrom(SOCKET sock, Buffer* buf, sockaddr_in from, std::vector* lsPck) { + int len = buf->tmp ? buf->tmp - buf->ptr : 0, + end = 0; + char* cursor = buf->tmp ? buf->tmp : nullptr, + * next = buf->tmp ? buf->tmp + 1 : buf->ptr, + * last = buf->tmp ? buf->tmp : buf->ptr; + bool ended = true; + struct pollfd fds[1]; + sockaddr_in sockad = from; + addrlen_t socklen = sizeof(sockad); + + fds[0].fd = sock; + fds[0].events = POLLIN; + + while (true) { + if (!poll(fds, 1, 0)) { + if (ended) + buf->tmp = nullptr; + return; + } + + int bytes = recvfrom(sock, &buf->ptr[len], buf->len - len, 0, (sockaddr*)&sockad, &socklen); + if (bytes <= 0) { // si recv() retourne -1 ou 0; ça veut dire qu'il y a plus rien a lire qui n'a pas déjà été traité. + if (ended) + buf->tmp = nullptr; + return; + } + len += bytes; + end = len; + + ended = false; + + while (true) { + int cmp = 0; + + if (cursor) + end -= (cursor - buf->ptr); + + if (end < 0) + break; + + cursor = (char*)memchr(next, '\r', end); + + if (cursor) { + next = cursor; + cursor--; + + cmp = memcmp(cursor, Footer, sizeof(uint32_t)); + if (cmp == 0) { + lsPck->push_back(last); cursor += sizeof(uint32_t); last = cursor; next = cursor + 1; diff --git a/SQCSim-common/netprotocol.h b/SQCSim-common/netprotocol.h index 2f12d6e..87a1645 100644 --- a/SQCSim-common/netprotocol.h +++ b/SQCSim-common/netprotocol.h @@ -129,7 +129,7 @@ namespace netprot { Chat() {} Chat(Chat* cha) : src_id(cha->src_id), dest_id(cha->dest_id), dest_team_id(cha->dest_team_id) { strcpy(mess, 140, cha->mess); } - ~Chat() {/* delete[] mess; */} + ~Chat() { delete[] mess; } }; struct ChunkMod { @@ -193,8 +193,8 @@ namespace netprot { template void sendPack(SOCKET sock, T* pack, Buffer* buf); template void sendPackTo(SOCKET sock, T* pack, Buffer* buf, sockaddr_in* sockad); - std::vector recvPacks(SOCKET sock, Buffer* buf); - std::vector recvPacksFrom(SOCKET sock, Buffer* buf, sockaddr_in from); + void recvPacks(SOCKET sock, Buffer* buf, std::vector* lsPck); + void recvPacksFrom(SOCKET sock, Buffer* buf, sockaddr_in from, std::vector* lsPck); /* Templates */ diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp index 61961cf..dbe7816 100644 --- a/SQCSim-srv/connection.cpp +++ b/SQCSim-srv/connection.cpp @@ -51,7 +51,7 @@ void Connection::getPacks(SOCKET sock) { std::vector lsPck; Input in; Sync sync; - lsPck = recvPacksFrom(sock, &m_buf, m_addr); + recvPacksFrom(sock, &m_buf, m_addr, &lsPck); for (auto& pck : lsPck) { uint32_t bsize = m_buf.len - (pck - m_buf.ptr); switch (netprot::getType(pck, 1)) { diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index 87e18ea..91a0f23 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -227,6 +227,7 @@ void Server::Run() { std::vector bullets; std::vector::iterator> bullit; std::vector netbull; + std::vector lsPck; Chat* startchat = new Chat(); startchat->src_id = 0; @@ -257,10 +258,9 @@ void Server::Run() { /* In */ - std::vector lsPck; Input in; Chat chat; Sync sync; - lsPck = recvPacks(m_sock_udp, &m_buf); + recvPacks(m_sock_udp, &m_buf, &lsPck); for (auto& pck : lsPck) { uint32_t bsize = m_buf.len - (pck - m_buf.ptr); switch (netprot::getType(pck, 1)) { @@ -370,6 +370,7 @@ void Server::Run() { Chat end; end.src_id = 0; char endmess[] = "Game over, man. Game over."; + strcpy(end.mess, 140, endmess); for (auto& [key, conn] : m_conns) { std::string str = conn->player->GetUsername(); @@ -377,8 +378,6 @@ void Server::Run() { } - strcpy(end.mess, 140, endmess); - for (auto& [key, conn] : m_conns) sendPackTo(m_sock_udp, &end, &m_buf, conn->getAddr()); From 3da68297e4d8f6ad7daf45e320f5a8881b646474 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Fri, 8 Dec 2023 04:58:27 -0500 Subject: [PATCH 66/82] Cleanup + client. --- SQCSim-srv/server.cpp | 6 +----- SQCSim2021/connector.cpp | 2 +- SQCSim2021/engine.cpp | 2 +- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index 91a0f23..d32057e 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -258,7 +258,7 @@ void Server::Run() { /* In */ - Input in; Chat chat; Sync sync; + Input in; Sync sync; recvPacks(m_sock_udp, &m_buf, &lsPck); for (auto& pck : lsPck) { @@ -274,10 +274,6 @@ void Server::Run() { case SYNC: if (Deserialize(&sync, pck, &bsize)) {} break; - case CHAT: - //if (Deserialize(&chat, pck, &bsize)) - //chatlog.push_back(chat); - break; default: break; } } diff --git a/SQCSim2021/connector.cpp b/SQCSim2021/connector.cpp index 3844783..f10b094 100644 --- a/SQCSim2021/connector.cpp +++ b/SQCSim2021/connector.cpp @@ -73,7 +73,7 @@ int Connector::Connect(const char* srv_addr, std::string name) { int errors = 0; std::vector lsPck; while (!ready) { - lsPck = netprot::recvPacks(m_sock_udp, &bf); + netprot::recvPacks(m_sock_udp, &bf, &lsPck); for (auto& pck : lsPck) { uint32_t bsize = bf.len - (pck - bf.ptr); diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index b1bdb34..848528e 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -1387,7 +1387,7 @@ void Engine::Render(float elapsedTime) { sendPackTo(m_conn.m_sock_udp, &input, &m_bufout, &m_conn.m_srvsockaddr); - lsPck = recvPacks(m_conn.m_sock_udp, &m_buf); + recvPacks(m_conn.m_sock_udp, &m_buf, &lsPck); char* prevptr = nullptr; for (auto& pck : lsPck) { // We could make a few threads out of this. Sync sync; Output out; ChunkMod cmod; BulletAdd bull; Chat chat; From 63d70be48870d538c538881ea956852e5654ae61 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Fri, 8 Dec 2023 05:07:05 -0500 Subject: [PATCH 67/82] Make player spawn point random working? --- SQCSim-srv/server.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index d32057e..c5c283b 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -204,8 +204,8 @@ void Server::Run() { m_conns.erase(key); continue; } - int x = 0,// (rand() % (CHUNK_SIZE_X * WORLD_SIZE_X - 1)),// -(CHUNK_SIZE_X * WORLD_SIZE_X / 2), - y = 0;// (rand() % (CHUNK_SIZE_Y * WORLD_SIZE_Y - 1));// -(CHUNK_SIZE_Y * WORLD_SIZE_Y / 2); + int x = (rand() % (CHUNK_SIZE_X * WORLD_SIZE_X - 1) - (CHUNK_SIZE_X * WORLD_SIZE_X / 2)) / 4, + y = (rand() % (CHUNK_SIZE_Y * WORLD_SIZE_Y - 1) - (CHUNK_SIZE_Y * WORLD_SIZE_Y / 2)) / 4; conn->player = new Player(Vector3f(x + .5f, CHUNK_SIZE_Y + 1.8f, y + .5f)); conn->player->m_username = conn->GetName(); m_players[key] = conn->player; @@ -231,7 +231,7 @@ void Server::Run() { Chat* startchat = new Chat(); startchat->src_id = 0; - char startmess[] = "How would -YOU- like to die today, motherfuckers?"; + char startmess[] = "How would -YOU- like to die today, motherf-words?"; strcpy(startchat->mess, 140, startmess); @@ -342,7 +342,6 @@ void Server::Run() { delete bullet; } } - for (auto& bull: bullit) bullets.erase(bull); bullit.clear(); From d6b1870b5b55a87d8561ea495503a62143964cef Mon Sep 17 00:00:00 2001 From: mduval76 <9343789@etu.cegepsth.qc.ca> Date: Fri, 8 Dec 2023 19:55:59 -0500 Subject: [PATCH 68/82] Push fake keyboard - Simulatekeyboard --- SQCSim2021/engine.cpp | 169 +++++++++++++++++++++++++++++++++++++++++- SQCSim2021/engine.h | 2 + 2 files changed, 170 insertions(+), 1 deletion(-) diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 30a6cac..a7e4a29 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -607,7 +607,7 @@ void Engine::StartMultiplayerGame() { } delete[] input; - + } delete[] ch;*/ @@ -1540,6 +1540,9 @@ void Engine::KeyPressEvent(unsigned char key) { } //Stop(); break; + case 38: // Shift + m_keyShift = true; + break; case 57: // Space - Sauter if (!m_keySpace) { m_keySpace = true; @@ -1661,6 +1664,9 @@ void Engine::KeyReleaseEvent(unsigned char key) { case 28: // 2 m_key2 = true; break; + case 38: // Shift + m_keyShift = false; + break; case 57: // Espace - Stop sauter m_keySpace = false; break; @@ -1704,6 +1710,167 @@ void Engine::MouseMoveEvent(int x, int y) { } } +char Engine::SimulateKeyboard(unsigned char key) { + switch (key) { + case 0: // A + if (!m_keyShift) { return 'a'; } + else { return 'A'; } + break; + case 1: // B + if (!m_keyShift) { return 'b'; } + else { return 'B'; } + break; + case 2: // C + if (!m_keyShift) { return 'c'; } + else { return 'C'; } + break; + case 3: // D + if (!m_keyShift) { return 'd'; } + else { return 'D'; } + break; + case 4: // E + if (!m_keyShift) { return 'e'; } + else { return 'E'; } + break; + case 5: // F + if (!m_keyShift) { return 'f'; } + else { return 'F'; } + break; + case 6: // G + if (!m_keyShift) { return 'g'; } + else { return 'G'; } + break; + case 7: // H + if (!m_keyShift) { return 'h'; } + else { return 'H'; } + break; + case 8: // I + if (!m_keyShift) { return 'i'; } + else { return 'I'; } + break; + case 9: // J + if (!m_keyShift) { return 'j'; } + else { return 'J'; } + break; + case 10: // K + if (!m_keyShift) { return 'k'; } + else { return 'K'; } + break; + case 11: // L + if (!m_keyShift) { return 'l'; } + else { return 'L'; } + break; + case 12: // M + if (!m_keyShift) { return 'm'; } + else { return 'M'; } + break; + case 13: // N + if (!m_keyShift) { return 'n'; } + else { return 'N'; } + break; + case 14: // O + if (!m_keyShift) { return 'o'; } + else { return 'O'; } + break; + case 15: // P + if (!m_keyShift) { return 'p'; } + else { return 'P'; } + break; + case 16: // Q + if (!m_keyShift) { return 'q'; } + else { return 'Q'; } + break; + case 17: // R + if (!m_keyShift) { return 'r'; } + else { return 'R'; } + break; + case 18: // S + if (!m_keyShift) { return 's'; } + else { return 'S'; } + break; + case 19: // T + if (!m_keyShift) { return 't'; } + else { return 'T'; } + break; + case 20: // U + if (!m_keyShift) { return 'u'; } + else { return 'U'; } + break; + case 21: // V + if (!m_keyShift) { return 'v'; } + else { return 'V'; } + break; + case 22: // W + if (!m_keyShift) { return 'w'; } + else { return 'W'; } + break; + case 23: // X + if (!m_keyShift) { return 'x'; } + else { return 'X'; } + break; + case 24: // Y + if (!m_keyShift) { return 'y'; } + else { return 'Y'; } + break; + case 25: // Z + if (!m_keyShift) { return 'z'; } + else { return 'Z'; } + break; + case 26: // 0 + if (!m_keyShift) { return '0'; } + else { return ')'; } + break; + case 27: // 1 + if (!m_keyShift) { return '1'; } + else { return '!'; } + break; + case 28: // 2 + if (!m_keyShift) { return '2'; } + else { return '\"'; } + break; + case 29: // 3 + if (!m_keyShift) { return '3'; } + else { return '/'; } + break; + case 30: // 4 + if (!m_keyShift) { return '4'; } + else { return '$'; } + break; + case 31: // 5 + if (!m_keyShift) { return '5'; } + else { return '%'; } + break; + case 32: // 6 + if (!m_keyShift) { return '6'; } + else { return '?'; } + break; + case 33: // 7 + if (!m_keyShift) { return '7'; } + else { return '&'; } + break; + case 34: // 8 + if (!m_keyShift) { return '8'; } + else { return '*'; } + break; + case 35: // 9 + if (!m_keyShift) { return '9'; } + else { return '(A)'; } + break; + case 36: // SPACE + return ' '; + break; + case 50: // . (Period) + return '.'; + break; + case 56: // _ (Underscore) + if (!m_keyShift) { return '-'; } + else { return '_'; } + break; + default: + break; + } +} + void Engine::MousePressEvent(const MOUSE_BUTTON& button, int x, int y) { m_mousemx = x; m_mousemy = y; diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index 399e783..ca82411 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -80,6 +80,7 @@ private: void PrintText(float x, float y, const std::string& t, float charSizeMultiplier = 1.0f); void ProcessNotificationQueue(); + char SimulateKeyboard(unsigned char key); Connector m_conn; @@ -211,6 +212,7 @@ private: bool m_keyS = false; bool m_keyD = false; bool m_keySpace = false; + bool m_keyShift = false; bool m_mouseL = false; bool m_mouseR = false; From 9562dc00b86232013d3281d579ec9d1829f0621c Mon Sep 17 00:00:00 2001 From: mduval76 <9343789@etu.cegepsth.qc.ca> Date: Fri, 8 Dec 2023 21:45:19 -0500 Subject: [PATCH 69/82] =?UTF-8?q?Push=20SimulateKeyboard=20diff=C3=A9renci?= =?UTF-8?q?e=20MAJ=20et=20MIN?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQCSim2021/engine.cpp | 215 ++++++++++++++++++++++++------------------ SQCSim2021/engine.h | 6 +- 2 files changed, 126 insertions(+), 95 deletions(-) diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index a7e4a29..7873f36 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -714,7 +714,12 @@ void Engine::DisplaySplashScreen() { glPopMatrix(); } -void Engine::DisplayLobbyMenu() { +void Engine::DisplayLobbyMenu(float elapsedTime) { + static float lobbyTime = 0.0f; + lobbyTime += elapsedTime; + float onInterval = 0.5f; + float offInterval = 1.0f; + GLint viewport[4]; glGetIntegerv(GL_VIEWPORT, viewport); @@ -748,22 +753,29 @@ void Engine::DisplayLobbyMenu() { glTexCoord2f(0, 1); glVertex2i(Width() * 0.6, Height() * 0.95); glEnd(); - //glBindTexture(GL_TEXTURE_2D, 0); - //glBegin(GL_QUADS); - //glTexCoord2f(0, 0); glVertex2i(Width() * 0.6, Height() * 0.4); - //glTexCoord2f(1, 0); glVertex2i(Width() * 0.975, Height() * 0.4); - //glTexCoord2f(1, 1); glVertex2i(Width() * 0.975, Height() * 0.475); - //glTexCoord2f(0, 1); glVertex2i(Width() * 0.6, Height() * 0.475); - //glEnd(); + glBlendFunc(GL_SRC_ALPHA, GL_ONE); m_textureFont.Bind(); std::ostringstream ss; glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - ss.str(""); - ss << "_____________________"; - PrintText(Width() * 0.6f, Height() * 0.4f, ss.str(), 2.5f); - ss.str(""); + if (m_charChanged) { + ss << m_inputChar; + } + + if (lobbyTime < onInterval) { + ss << "_"; + } + else if (lobbyTime > onInterval && lobbyTime < offInterval) { + ss << " "; + } + else { + lobbyTime -= offInterval; + } + + PrintText(Width() * 0.6f, Height() * 0.4f, ss.str(), 2.0f); + + glDisable(GL_BLEND); glColor4f(1.0f, 1.0f, 1.0f, 1.0f); glViewport(viewport[0], viewport[1], viewport[2], viewport[3]); @@ -1214,7 +1226,7 @@ void Engine::Render(float elapsedTime) { } if (m_gamestate == GameState::LOBBY) { - DisplayLobbyMenu(); + DisplayLobbyMenu(elapsedTime); return; } @@ -1507,9 +1519,11 @@ void Engine::DrawSlider(float centerX, float centerY, float value, float minVal, } } - - void Engine::KeyPressEvent(unsigned char key) { + if (m_gamestate == LOBBY) { + m_inputChar = SimulateKeyboard(key); + return; + } switch (key) { case 0: // A - Gauche if (!m_keyA) { @@ -1540,9 +1554,6 @@ void Engine::KeyPressEvent(unsigned char key) { } //Stop(); break; - case 38: // Shift - m_keyShift = true; - break; case 57: // Space - Sauter if (!m_keySpace) { m_keySpace = true; @@ -1593,6 +1604,12 @@ void Engine::KeyPressEvent(unsigned char key) { } void Engine::KeyReleaseEvent(unsigned char key) { + if (m_gamestate == LOBBY) { + if (key == 38) { + m_keyShift = false; + } + return; + } switch (key) { case 0: // A - Stop gauche m_keyA = false; @@ -1713,162 +1730,172 @@ void Engine::MouseMoveEvent(int x, int y) { char Engine::SimulateKeyboard(unsigned char key) { switch (key) { case 0: // A - if (!m_keyShift) { return 'a'; } - else { return 'A'; } + if (!m_keyShift) { m_inputChar = 'a'; } + else { m_inputChar = 'A'; } break; case 1: // B - if (!m_keyShift) { return 'b'; } - else { return 'B'; } + if (!m_keyShift) { m_inputChar = 'b'; } + else { m_inputChar = 'B'; } break; case 2: // C - if (!m_keyShift) { return 'c'; } - else { return 'C'; } + if (!m_keyShift) { m_inputChar = 'c'; } + else { m_inputChar = 'C'; } break; case 3: // D - if (!m_keyShift) { return 'd'; } - else { return 'D'; } + if (!m_keyShift) { m_inputChar = 'd'; } + else { m_inputChar = 'D'; } break; case 4: // E - if (!m_keyShift) { return 'e'; } - else { return 'E'; } + if (!m_keyShift) { m_inputChar = 'e'; } + else { m_inputChar = 'E'; } break; case 5: // F - if (!m_keyShift) { return 'f'; } - else { return 'F'; } + if (!m_keyShift) { m_inputChar = 'f'; } + else { m_inputChar = 'F'; } break; case 6: // G - if (!m_keyShift) { return 'g'; } - else { return 'G'; } + if (!m_keyShift) { m_inputChar = 'g'; } + else { m_inputChar = 'G'; } break; case 7: // H - if (!m_keyShift) { return 'h'; } - else { return 'H'; } + if (!m_keyShift) { m_inputChar = 'h'; } + else { m_inputChar = 'H'; } break; case 8: // I - if (!m_keyShift) { return 'i'; } - else { return 'I'; } + if (!m_keyShift) { m_inputChar = 'i'; } + else { m_inputChar = 'I'; } break; case 9: // J - if (!m_keyShift) { return 'j'; } - else { return 'J'; } + if (!m_keyShift) { m_inputChar = 'j'; } + else { m_inputChar = 'J'; } break; case 10: // K - if (!m_keyShift) { return 'k'; } - else { return 'K'; } + if (!m_keyShift) { m_inputChar = 'k'; } + else { m_inputChar = 'K'; } break; case 11: // L - if (!m_keyShift) { return 'l'; } - else { return 'L'; } + if (!m_keyShift) { m_inputChar = 'l'; } + else { m_inputChar = 'L'; } break; case 12: // M - if (!m_keyShift) { return 'm'; } - else { return 'M'; } + if (!m_keyShift) { m_inputChar = 'm'; } + else { m_inputChar = 'M'; } break; case 13: // N - if (!m_keyShift) { return 'n'; } - else { return 'N'; } + if (!m_keyShift) { m_inputChar = 'n'; } + else { m_inputChar = 'N'; } break; case 14: // O - if (!m_keyShift) { return 'o'; } - else { return 'O'; } + if (!m_keyShift) { m_inputChar = 'o'; } + else { m_inputChar = 'O'; } break; case 15: // P - if (!m_keyShift) { return 'p'; } - else { return 'P'; } + if (!m_keyShift) { m_inputChar = 'p'; } + else { m_inputChar = 'P'; } break; case 16: // Q - if (!m_keyShift) { return 'q'; } - else { return 'Q'; } + if (!m_keyShift) { m_inputChar = 'q'; } + else { m_inputChar = 'Q'; } break; case 17: // R - if (!m_keyShift) { return 'r'; } - else { return 'R'; } + if (!m_keyShift) { m_inputChar = 'r'; } + else { m_inputChar = 'R'; } break; case 18: // S - if (!m_keyShift) { return 's'; } - else { return 'S'; } + if (!m_keyShift) { m_inputChar = 's'; } + else { m_inputChar = 'S'; } break; case 19: // T - if (!m_keyShift) { return 't'; } - else { return 'T'; } + if (!m_keyShift) { m_inputChar = 't'; } + else { m_inputChar = 'T'; } break; case 20: // U - if (!m_keyShift) { return 'u'; } - else { return 'U'; } + if (!m_keyShift) { m_inputChar = 'u'; } + else { m_inputChar = 'U'; } break; case 21: // V - if (!m_keyShift) { return 'v'; } - else { return 'V'; } + if (!m_keyShift) { m_inputChar = 'v'; } + else { m_inputChar = 'V'; } break; case 22: // W - if (!m_keyShift) { return 'w'; } - else { return 'W'; } + if (!m_keyShift) { m_inputChar = 'w'; } + else { m_inputChar = 'W'; } break; case 23: // X - if (!m_keyShift) { return 'x'; } - else { return 'X'; } + if (!m_keyShift) { m_inputChar = 'x'; } + else { m_inputChar = 'X'; } break; case 24: // Y - if (!m_keyShift) { return 'y'; } - else { return 'Y'; } + if (!m_keyShift) { m_inputChar = 'y'; } + else { m_inputChar = 'Y'; } break; case 25: // Z - if (!m_keyShift) { return 'z'; } - else { return 'Z'; } + if (!m_keyShift) { m_inputChar = 'z'; } + else { m_inputChar = 'Z'; } break; case 26: // 0 - if (!m_keyShift) { return '0'; } - else { return ')'; } + if (!m_keyShift) { m_inputChar = '0'; } + else { m_inputChar = ')'; } break; case 27: // 1 - if (!m_keyShift) { return '1'; } - else { return '!'; } + if (!m_keyShift) { m_inputChar = '1'; } + else { m_inputChar = '!'; } break; case 28: // 2 - if (!m_keyShift) { return '2'; } - else { return '\"'; } + if (!m_keyShift) { m_inputChar = '2'; } + else { m_inputChar = '\"'; } break; case 29: // 3 - if (!m_keyShift) { return '3'; } - else { return '/'; } + if (!m_keyShift) { m_inputChar = '3'; } + else { m_inputChar = '/'; } break; case 30: // 4 - if (!m_keyShift) { return '4'; } - else { return '$'; } + if (!m_keyShift) { m_inputChar = '4'; } + else { m_inputChar = '$'; } break; case 31: // 5 - if (!m_keyShift) { return '5'; } - else { return '%'; } + if (!m_keyShift) { m_inputChar = '5'; } + else { m_inputChar = '%'; } break; case 32: // 6 - if (!m_keyShift) { return '6'; } - else { return '?'; } + if (!m_keyShift) { m_inputChar = '6'; } + else { m_inputChar = '?'; } break; case 33: // 7 - if (!m_keyShift) { return '7'; } - else { return '&'; } + if (!m_keyShift) { m_inputChar = '7'; } + else { m_inputChar = '&'; } break; case 34: // 8 - if (!m_keyShift) { return '8'; } - else { return '*'; } + if (!m_keyShift) { m_inputChar = '8'; } + else { m_inputChar = '*'; } break; case 35: // 9 - if (!m_keyShift) { return '9'; } - else { return '(A)'; } + if (!m_keyShift) { m_inputChar = '9'; } + else { m_inputChar = ')'; } break; case 36: // SPACE - return ' '; + m_inputChar = ' '; + break; + case 38: // SHIFT + m_keyShift = true; break; case 50: // . (Period) - return '.'; + m_inputChar = '.'; break; case 56: // _ (Underscore) - if (!m_keyShift) { return '-'; } - else { return '_'; } + if (!m_keyShift) { m_inputChar = '-'; } + else { m_inputChar = '_'; } break; default: break; } + + if ((int)key != 38) { + std::cout << "Key pressed: " << (int)key << " (" << m_inputChar << ")" << std::endl; + } + + m_charChanged = true; + return m_inputChar; } void Engine::MousePressEvent(const MOUSE_BUTTON& button, int x, int y) { diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index ca82411..b47bacd 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -62,7 +62,7 @@ private: void DisplayInfo(float elapsedTime, BlockType bloc); void DisplaySplashScreen(); - void DisplayLobbyMenu(); + void DisplayLobbyMenu(float elapsedTime); void DisplayMainMenu(); void DrawButtonBackgrounds(float centerX, float centerY, int iterations); @@ -202,6 +202,9 @@ private: bool m_selectedPlayOptions = false; bool m_selectedOptions = false; bool m_selectedQuit = false; + + char m_inputChar = 0; + bool m_charChanged = false; bool m_key1 = false; bool m_key2 = false; @@ -211,6 +214,7 @@ private: bool m_keyA = false; bool m_keyS = false; bool m_keyD = false; + bool m_keyEnter = false; bool m_keySpace = false; bool m_keyShift = false; From 850f5a59d8614438b7deeb15d0b0dc9eb3601018 Mon Sep 17 00:00:00 2001 From: mduval76 <9343789@etu.cegepsth.qc.ca> Date: Fri, 8 Dec 2023 22:15:10 -0500 Subject: [PATCH 70/82] Push string accumule comme il faut --- SQCSim2021/engine.cpp | 8 ++++++-- SQCSim2021/engine.h | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 7873f36..5afb035 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -759,10 +759,14 @@ void Engine::DisplayLobbyMenu(float elapsedTime) { std::ostringstream ss; glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - if (m_charChanged) { - ss << m_inputChar; + if (m_charChanged && m_currentInputString.size() < 26) { + m_currentInputString += m_inputChar; } + ss << m_currentInputString; + m_charChanged = false; + + if (lobbyTime < onInterval) { ss << "_"; } diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index b47bacd..b99fd76 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -204,6 +204,7 @@ private: bool m_selectedQuit = false; char m_inputChar = 0; + std::string m_currentInputString; bool m_charChanged = false; bool m_key1 = false; From 06cd890506518b761758d1edc53040a29197cab3 Mon Sep 17 00:00:00 2001 From: mduval76 <9343789@etu.cegepsth.qc.ca> Date: Fri, 8 Dec 2023 22:34:17 -0500 Subject: [PATCH 71/82] Push input rejette touches non valides. --- SQCSim2021/engine.cpp | 12 +++++++----- SQCSim2021/engine.h | 3 ++- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 5afb035..fcdd44f 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -1877,9 +1877,6 @@ char Engine::SimulateKeyboard(unsigned char key) { if (!m_keyShift) { m_inputChar = '9'; } else { m_inputChar = ')'; } break; - case 36: // SPACE - m_inputChar = ' '; - break; case 38: // SHIFT m_keyShift = true; break; @@ -1890,15 +1887,20 @@ char Engine::SimulateKeyboard(unsigned char key) { if (!m_keyShift) { m_inputChar = '-'; } else { m_inputChar = '_'; } break; + case 57: // SPACE + m_inputChar = ' '; + break; default: + m_invalidChar = true; break; } - if ((int)key != 38) { + if ((int)key != 38 && !m_invalidChar) { + m_charChanged = true; std::cout << "Key pressed: " << (int)key << " (" << m_inputChar << ")" << std::endl; } - m_charChanged = true; + m_invalidChar = false; return m_inputChar; } diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index b99fd76..1f8363f 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -203,8 +203,9 @@ private: bool m_selectedOptions = false; bool m_selectedQuit = false; - char m_inputChar = 0; std::string m_currentInputString; + char m_inputChar = 0; + bool m_invalidChar = false; bool m_charChanged = false; bool m_key1 = false; From ff10207257cbb893cc667963c9385ae43773daee Mon Sep 17 00:00:00 2001 From: mduval76 <9343789@etu.cegepsth.qc.ca> Date: Fri, 8 Dec 2023 23:06:33 -0500 Subject: [PATCH 72/82] Push backspace fonctionnel --- SQCSim2021/engine.cpp | 106 ++++++++++++++++++++++++++---------------- SQCSim2021/engine.h | 9 +++- 2 files changed, 72 insertions(+), 43 deletions(-) diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index fcdd44f..258480e 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -759,14 +759,21 @@ void Engine::DisplayLobbyMenu(float elapsedTime) { std::ostringstream ss; glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - if (m_charChanged && m_currentInputString.size() < 26) { - m_currentInputString += m_inputChar; + if (m_charChanged) { + if (m_keyBackspace) { + if (!m_currentInputString.empty()) { + m_currentInputString.pop_back(); + } + m_keyBackspace = false; + } + else if (m_currentInputString.size() < 26) { + m_currentInputString += m_inputChar; + } } ss << m_currentInputString; m_charChanged = false; - if (lobbyTime < onInterval) { ss << "_"; } @@ -794,6 +801,10 @@ void Engine::DisplayLobbyMenu(float elapsedTime) { } +void Engine::SetLobbyUsername() { + +} + void Engine::DisplayMainMenu() { GLint viewport[4]; glGetIntegerv(GL_VIEWPORT, viewport); @@ -1691,50 +1702,19 @@ void Engine::KeyReleaseEvent(unsigned char key) { case 57: // Espace - Stop sauter m_keySpace = false; break; - } -} - -void Engine::MouseMoveEvent(int x, int y) { - if (m_gamestate == GameState::PLAY) { - m_player.TurnLeftRight(x - (Width() / 2)); - m_player.TurnTopBottom(y - (Height() / 2)); - - // Centrer la souris seulement si elle n'est pas d�j� centr�e - // Il est n�cessaire de faire la v�rification pour �viter de tomber - // dans une boucle infinie o� l'appel � CenterMouse g�n�re un - // MouseMoveEvent, qui rapelle CenterMouse qui rapelle un autre - // MouseMoveEvent, etc - if (x == (Width() / 2) && y == (Height() / 2)) - return; - } - else if (m_gamestate == GameState::MAIN_MENU) { - DisplayMainMenu(); - } - else if (m_gamestate == GameState::OPTIONS) { - float centerX = Width() * 0.5f; - float centerY = Height() * 0.5f; - float leftBar = centerX - Width() * 0.15f; - float rightBar = centerX + Width() * 0.3f; - - if (m_selectedOption == 0 && m_selectedOptAudioMainBar) { - m_volPrincipal = x - leftBar; - } - else if (m_selectedOption == 0 && m_selectedOptAudioMusicBar) { - m_volMusique = x - leftBar; - } - else if (m_selectedOption == 0 && m_selectedOptAudioSfxBar) { - m_volEffets = x - leftBar; - } - else if (m_selectedOption == 2 && m_selectedGameplaySensitivityBar) { - m_volSensible = x - leftBar; - } + case 58: // Enter - comfirm input + m_keyEnter = false; + break; + case 59: // backspace - remove char + m_keyBackspace = false; + break; } } char Engine::SimulateKeyboard(unsigned char key) { switch (key) { case 0: // A - if (!m_keyShift) { m_inputChar = 'a'; } + if (!m_keyShift) { m_inputChar = 'a'; } else { m_inputChar = 'A'; } break; case 1: // B @@ -1890,6 +1870,12 @@ char Engine::SimulateKeyboard(unsigned char key) { case 57: // SPACE m_inputChar = ' '; break; + case 58: // ENTER + m_keyEnter = true; + break; + case 59: // BACKSPACE + m_keyBackspace = true; + break; default: m_invalidChar = true; break; @@ -1904,6 +1890,44 @@ char Engine::SimulateKeyboard(unsigned char key) { return m_inputChar; } + +void Engine::MouseMoveEvent(int x, int y) { + if (m_gamestate == GameState::PLAY) { + m_player.TurnLeftRight(x - (Width() / 2)); + m_player.TurnTopBottom(y - (Height() / 2)); + + // Centrer la souris seulement si elle n'est pas d�j� centr�e + // Il est n�cessaire de faire la v�rification pour �viter de tomber + // dans une boucle infinie o� l'appel � CenterMouse g�n�re un + // MouseMoveEvent, qui rapelle CenterMouse qui rapelle un autre + // MouseMoveEvent, etc + if (x == (Width() / 2) && y == (Height() / 2)) + return; + } + else if (m_gamestate == GameState::MAIN_MENU) { + DisplayMainMenu(); + } + else if (m_gamestate == GameState::OPTIONS) { + float centerX = Width() * 0.5f; + float centerY = Height() * 0.5f; + float leftBar = centerX - Width() * 0.15f; + float rightBar = centerX + Width() * 0.3f; + + if (m_selectedOption == 0 && m_selectedOptAudioMainBar) { + m_volPrincipal = x - leftBar; + } + else if (m_selectedOption == 0 && m_selectedOptAudioMusicBar) { + m_volMusique = x - leftBar; + } + else if (m_selectedOption == 0 && m_selectedOptAudioSfxBar) { + m_volEffets = x - leftBar; + } + else if (m_selectedOption == 2 && m_selectedGameplaySensitivityBar) { + m_volSensible = x - leftBar; + } + } +} + void Engine::MousePressEvent(const MOUSE_BUTTON& button, int x, int y) { m_mousemx = x; m_mousemy = y; diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index 1f8363f..31b60ec 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -62,13 +62,16 @@ private: void DisplayInfo(float elapsedTime, BlockType bloc); void DisplaySplashScreen(); - void DisplayLobbyMenu(float elapsedTime); void DisplayMainMenu(); void DrawButtonBackgrounds(float centerX, float centerY, int iterations); void DrawMainMenuButtons(float centerX, float centerY); void DrawSingleMultiButtons(float centerX, float centerY); + void DisplayLobbyMenu(float elapsedTime); + void SetLobbyUsername(); + void SetLobbyServerAddress(); + void DisplayOptionsMenu(); void DisplayAudioMenu(float centerX, float centerY); void DisplayGraphicsMenu(float centerX, float centerY); @@ -77,7 +80,6 @@ private: void DisplayBarPercentValue(float centerX, float centerY, float posX, float posY, float minVal, float maxVal, float value); void DrawSlider(float centerX, float centerY, float value, float minVal, float maxVal, float bottomSideValue, float topSideValue); - void PrintText(float x, float y, const std::string& t, float charSizeMultiplier = 1.0f); void ProcessNotificationQueue(); char SimulateKeyboard(unsigned char key); @@ -207,6 +209,8 @@ private: char m_inputChar = 0; bool m_invalidChar = false; bool m_charChanged = false; + bool m_settingUsername = false; + bool m_settingServer = false; bool m_key1 = false; bool m_key2 = false; @@ -219,6 +223,7 @@ private: bool m_keyEnter = false; bool m_keySpace = false; bool m_keyShift = false; + bool m_keyBackspace = false; bool m_mouseL = false; bool m_mouseR = false; From c88143c2bcae75af3ce49e6e878988c954d8bd99 Mon Sep 17 00:00:00 2001 From: mduval76 <9343789@etu.cegepsth.qc.ca> Date: Fri, 8 Dec 2023 23:42:01 -0500 Subject: [PATCH 73/82] Push inputs username et server address fonctionnels. --- SQCSim2021/engine.cpp | 144 ++++++++++++++++++++++++++++-------------- SQCSim2021/engine.h | 7 +- 2 files changed, 101 insertions(+), 50 deletions(-) diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 258480e..4cf9757 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -715,10 +715,6 @@ void Engine::DisplaySplashScreen() { } void Engine::DisplayLobbyMenu(float elapsedTime) { - static float lobbyTime = 0.0f; - lobbyTime += elapsedTime; - float onInterval = 0.5f; - float offInterval = 1.0f; GLint viewport[4]; glGetIntegerv(GL_VIEWPORT, viewport); @@ -745,49 +741,12 @@ void Engine::DisplayLobbyMenu(float elapsedTime) { glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - m_textureLobbyIdentify.Bind(); - glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(Width() * 0.6, Height() * 0.75); - glTexCoord2f(1, 0); glVertex2i(Width() * 0.975, Height() * 0.75); - glTexCoord2f(1, 1); glVertex2i(Width() * 0.975, Height() * 0.95); - glTexCoord2f(0, 1); glVertex2i(Width() * 0.6, Height() * 0.95); - glEnd(); - - glBlendFunc(GL_SRC_ALPHA, GL_ONE); - - m_textureFont.Bind(); - std::ostringstream ss; - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); - - if (m_charChanged) { - if (m_keyBackspace) { - if (!m_currentInputString.empty()) { - m_currentInputString.pop_back(); - } - m_keyBackspace = false; - } - else if (m_currentInputString.size() < 26) { - m_currentInputString += m_inputChar; - } + if (m_settingUsername) { + SetPlayerUsername(elapsedTime); } - - ss << m_currentInputString; - m_charChanged = false; - - if (lobbyTime < onInterval) { - ss << "_"; + else if (m_settingServer) { + SetServerAddress(elapsedTime); } - else if (lobbyTime > onInterval && lobbyTime < offInterval) { - ss << " "; - } - else { - lobbyTime -= offInterval; - } - - PrintText(Width() * 0.6f, Height() * 0.4f, ss.str(), 2.0f); - - glDisable(GL_BLEND); - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); glViewport(viewport[0], viewport[1], viewport[2], viewport[3]); @@ -798,11 +757,38 @@ void Engine::DisplayLobbyMenu(float elapsedTime) { glMatrixMode(GL_MODELVIEW); glPopMatrix(); - } -void Engine::SetLobbyUsername() { +void Engine::SetPlayerUsername(float elapsedTime) { + m_textureLobbyIdentify.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(Width() * 0.6, Height() * 0.75); + glTexCoord2f(1, 0); glVertex2i(Width() * 0.975, Height() * 0.75); + glTexCoord2f(1, 1); glVertex2i(Width() * 0.975, Height() * 0.95); + glTexCoord2f(0, 1); glVertex2i(Width() * 0.6, Height() * 0.95); + glEnd(); + glBlendFunc(GL_SRC_ALPHA, GL_ONE); + HandlePlayerInput(elapsedTime); + glDisable(GL_BLEND); + + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); +} + +void Engine::SetServerAddress(float elapsedTime) { + m_textureLobbyServer.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(Width() * 0.6, Height() * 0.75); + glTexCoord2f(1, 0); glVertex2i(Width() * 0.975, Height() * 0.75); + glTexCoord2f(1, 1); glVertex2i(Width() * 0.975, Height() * 0.95); + glTexCoord2f(0, 1); glVertex2i(Width() * 0.6, Height() * 0.95); + glEnd(); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE); + HandlePlayerInput(elapsedTime); + glDisable(GL_BLEND); + + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); } void Engine::DisplayMainMenu() { @@ -1890,6 +1876,68 @@ char Engine::SimulateKeyboard(unsigned char key) { return m_inputChar; } +void Engine::HandlePlayerInput(float elapsedTime) { + static float lobbyTime = 0.0f; + lobbyTime += elapsedTime; + float onInterval = 0.5f; + float offInterval = 1.0f; + + m_textureFont.Bind(); + std::ostringstream ss; + + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + + if (m_charChanged) { + if (m_keyBackspace) { + if (!m_currentInputString.empty()) { + m_currentInputString.pop_back(); + } + m_keyBackspace = false; + } + else if (m_keyEnter) { + if (m_settingUsername) { + if (!m_currentInputString.empty() && + m_currentInputString.size() > 1 && + m_currentInputString.size() < 26) { + m_username = m_currentInputString; + m_currentInputString = ""; + m_settingUsername = false; + m_settingServer = true; + } + } + else if (m_settingServer) { + if (!m_currentInputString.empty()) { + m_serverAddr = m_currentInputString; + m_currentInputString = ""; + m_settingServer = false; + } + } + m_keyEnter = false; + } + else if (m_settingUsername && m_currentInputString.size() < 26) { + m_currentInputString += m_inputChar; + } + else if (m_settingServer && m_currentInputString.size() < 15) { + m_currentInputString += m_inputChar; + } + } + + ss << m_currentInputString; + m_charChanged = false; + + if (lobbyTime < onInterval) { + ss << "_"; + } + else if (lobbyTime > onInterval && lobbyTime < offInterval) { + ss << " "; + } + else { + lobbyTime = 0.0f; + } + + PrintText(Width() * 0.6f, Height() * 0.4f, ss.str(), 2.0f); +} + void Engine::MouseMoveEvent(int x, int y) { if (m_gamestate == GameState::PLAY) { @@ -1979,7 +2027,7 @@ void Engine::MousePressEvent(const MOUSE_BUTTON& button, int x, int y) { else if (x > leftButton && x < rightButton && y > bottomSecond && y < topSecond) { if (m_selectedPlayOptions) { m_gamestate = GameState::LOBBY; - StartMultiplayerGame(); + m_settingUsername = true; } else { m_gamestate = GameState::OPTIONS; diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index 31b60ec..3303a11 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -69,8 +69,8 @@ private: void DrawSingleMultiButtons(float centerX, float centerY); void DisplayLobbyMenu(float elapsedTime); - void SetLobbyUsername(); - void SetLobbyServerAddress(); + void SetPlayerUsername(float elapsedTime); + void SetServerAddress(float elapsedTime); void DisplayOptionsMenu(); void DisplayAudioMenu(float centerX, float centerY); @@ -83,6 +83,7 @@ private: void PrintText(float x, float y, const std::string& t, float charSizeMultiplier = 1.0f); void ProcessNotificationQueue(); char SimulateKeyboard(unsigned char key); + void HandlePlayerInput(float elapsedTime); Connector m_conn; @@ -206,6 +207,8 @@ private: bool m_selectedQuit = false; std::string m_currentInputString; + std::string m_username; + std::string m_serverAddr; char m_inputChar = 0; bool m_invalidChar = false; bool m_charChanged = false; From 09979f1e72ef67798c99d0bb1d778baa4b9ae603 Mon Sep 17 00:00:00 2001 From: mduval76 <9343789@etu.cegepsth.qc.ca> Date: Sat, 9 Dec 2023 00:00:52 -0500 Subject: [PATCH 74/82] Push connexion multiplayer. --- SQCSim2021/define.h | 2 +- SQCSim2021/engine.cpp | 43 +++++++------------------------------------ SQCSim2021/engine.h | 1 + 3 files changed, 9 insertions(+), 37 deletions(-) diff --git a/SQCSim2021/define.h b/SQCSim2021/define.h index c9b3322..7f99020 100644 --- a/SQCSim2021/define.h +++ b/SQCSim2021/define.h @@ -41,7 +41,7 @@ enum GameState { SPLASH, LOBBY, OPTIONS, - QUIT, + QUIT, PLAY, PAUSE }; diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 4cf9757..011b373 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -576,43 +576,8 @@ int Engine::GetOptionsChoice() { } void Engine::StartMultiplayerGame() { - char* ch = new char[2]; - - //std::cout << "Jouer en ligne? [o/N] "; - //std::cin.getline(ch, 2); - //std::cout << std::endl; - - char* input = new char[32]; - std::string playname, srvname; - - /*if (*ch == 'o' || *ch == 'O') { - char* input = new char[32]; - std::string playname, srvname; - - while (playname.size() < 1) { - std::cout << "Veuillez entrer un nom de joueur: "; - std::cin.getline(input, 32); - std::cout << std::endl; - playname = input; - if (playname.size() < 1 || playname.size() > 32) - std::puts("Nom invalide."); - } - while (srvname.size() < 1) { - std::cout << "Veuillez entrer une adresse de serveur: "; - std::cin.getline(input, 32); - std::cout << std::endl; - srvname = input; - if (srvname.size() < 1 || srvname.size() > 32) - std::puts("Adresse serveur invalide."); - } - delete[] input; - - - } - delete[] ch;*/ - if (!m_conn.Init()) { - if (!m_conn.Connect(srvname.c_str(), playname)) { + if (!m_conn.Connect(m_serverAddr.c_str(), m_username)) { // setup jeu en reseau. std::cout << "ID recu du serveur: " << std::to_string(m_conn.getId()) << "!" << std::endl; std::cout << "Seed recu du serveur: " << std::to_string(m_conn.getSeed()) << "!" << std::endl; @@ -1228,6 +1193,10 @@ void Engine::Render(float elapsedTime) { if (m_gamestate == GameState::LOBBY) { DisplayLobbyMenu(elapsedTime); + if (m_multiReady) { + StartMultiplayerGame(); + std::cout << "Starting multiplayer game reached" << std::endl; + } return; } @@ -1910,6 +1879,8 @@ void Engine::HandlePlayerInput(float elapsedTime) { m_serverAddr = m_currentInputString; m_currentInputString = ""; m_settingServer = false; + m_multiReady = true; + m_gamestate = GameState::PLAY; } } m_keyEnter = false; diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index 3303a11..d7dc4cc 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -214,6 +214,7 @@ private: bool m_charChanged = false; bool m_settingUsername = false; bool m_settingServer = false; + bool m_multiReady = false; bool m_key1 = false; bool m_key2 = false; From 9aaad6426cc898e60a4a13af215d56ef3c54fac4 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Sat, 9 Dec 2023 12:02:04 -0500 Subject: [PATCH 75/82] :no_entry_sign: :ear: :leopard: --- SQCSim-common/bullet.cpp | 9 +++--- SQCSim-common/netprotocol.cpp | 25 ++++++++------ SQCSim-common/netprotocol.h | 36 ++++++++++----------- SQCSim-srv/connection.cpp | 18 ++++++----- SQCSim-srv/connection.h | 4 +-- SQCSim-srv/main.cpp | 7 +++- SQCSim-srv/server.cpp | 61 +++++++++++++++++++++++++++-------- SQCSim-srv/server.h | 5 ++- SQCSim2021/connector.cpp | 2 +- SQCSim2021/engine.cpp | 34 ++++++++++++------- SQCSim2021/engine.h | 3 +- 11 files changed, 130 insertions(+), 74 deletions(-) diff --git a/SQCSim-common/bullet.cpp b/SQCSim-common/bullet.cpp index 413c2cc..a489c55 100644 --- a/SQCSim-common/bullet.cpp +++ b/SQCSim-common/bullet.cpp @@ -38,11 +38,10 @@ bool Bullet::Update(World* world, float elapsedtime, int perframe, std::unordere else if (world->BlockAt(m_currentpos) != BTYPE_AIR) { if (chunkmod) { using namespace netprot; - ChunkMod* cmod = *chunkmod; - cmod = new ChunkMod(); - cmod->old_b_type = world->BlockAt(m_currentpos); - cmod->b_type = BTYPE_AIR; - cmod->pos = m_currentpos; + *chunkmod = new ChunkMod(); + (*chunkmod)->old_b_type = world->BlockAt(m_currentpos); + (*chunkmod)->b_type = BTYPE_AIR; + (*chunkmod)->pos = m_currentpos; } world->ChangeBlockAtPosition(BTYPE_AIR, m_currentpos); diff --git a/SQCSim-common/netprotocol.cpp b/SQCSim-common/netprotocol.cpp index 04f70bc..68feda2 100644 --- a/SQCSim-common/netprotocol.cpp +++ b/SQCSim-common/netprotocol.cpp @@ -198,7 +198,7 @@ void netprot::Serialize(Sync* sync, char* buf[], uint32_t* buflen) { (uint8_t)((vec[2] >> 8) & 0xFF), (uint8_t)(vec[2] & 0xFF) }; - memcpy(*buf + sizeof(uint64_t) * 2 + sizeof(uint32_t) + sizeof(uint16_t) + 2, vec8, sizeof(uint32_t) * 3); + memcpy(*buf + sizeof(uint64_t) * 2 + sizeof(uint32_t) + sizeof(uint16_t) + 1, vec8, sizeof(uint32_t) * 3); uint32_t hp; @@ -210,6 +210,8 @@ void netprot::Serialize(Sync* sync, char* buf[], uint32_t* buflen) { (uint8_t)((hp >> 8) & 0xFF), (uint8_t)(hp & 0xFF) }; + memcpy(*buf + sizeof(uint64_t) * 2 + sizeof(uint32_t) * 4 + sizeof(uint16_t) + 1, hp8, sizeof(float)); + *buflen = sizeof(uint64_t) * 2 + sizeof(uint32_t) * 4 + sizeof(uint16_t) + sizeof(float) + 1; } @@ -218,7 +220,8 @@ void netprot::Serialize(TeamInfo* tinfo, char* buf[], uint32_t* buflen) { size_t namesize = std::strlen(tinfo->name) + 1; - memcpy(*buf + 1, &tinfo->name, namesize); + strcpy(*buf + 1, namesize, tinfo->name); + uint64_t tid = tinfo->id; uint8_t tid8[sizeof(uint64_t)] = { (uint8_t)((tid >> 56) & 0xFF), @@ -241,7 +244,8 @@ void netprot::Serialize(LoginInfo* linfo, char* buf[], uint32_t* buflen) { size_t namesize = std::strlen(linfo->name) + 1; - memcpy(*buf + 1, &linfo->name, namesize); + strcpy(*buf + 1, namesize, linfo->name); + uint64_t sid = linfo->sid; uint8_t sid8[sizeof(uint64_t)] = { (uint8_t)((sid >> 56) & 0xFF), @@ -278,7 +282,8 @@ void netprot::Serialize(PlayerInfo* pinfo, char* buf[], uint32_t* buflen) { size_t namesize = std::strlen(pinfo->name) + 1; - memcpy(*buf + 1, &pinfo->name, namesize); + strcpy(*buf + 1, namesize, pinfo->name); + uint64_t id = pinfo->id; uint8_t id8[sizeof(uint64_t)] = { (uint8_t)((id >> 56) & 0xFF), @@ -703,7 +708,7 @@ bool netprot::Deserialize(Sync* sync, char* buf, uint32_t* buflen) { uint8_t subvec[3 * sizeof(uint32_t)] = { 0,0,0,0,0,0,0,0,0,0,0,0 }; - memcpy(subvec, &buf[2 + sizeof(uint64_t) * 2 + sizeof(uint32_t) + sizeof(uint16_t)], sizeof(uint8_t) * 12); + memcpy(subvec, &buf[1 + sizeof(uint64_t) * 2 + sizeof(uint32_t) + sizeof(uint16_t)], sizeof(uint8_t) * 12); uint32_t vec[3] = { (uint32_t)subvec[0] << 24 | (uint32_t)subvec[1] << 16 | @@ -722,7 +727,7 @@ bool netprot::Deserialize(Sync* sync, char* buf, uint32_t* buflen) { uint8_t hp8[4]; - memcpy(&hp8, &buf[2 + sizeof(uint64_t) * 2 + sizeof(uint32_t) * 4 + sizeof(uint16_t)], sizeof(uint32_t)); + memcpy(&hp8, &buf[1 + sizeof(uint64_t) * 2 + sizeof(uint32_t) * 4 + sizeof(uint16_t)], sizeof(uint32_t)); uint32_t hp = (uint32_t)hp8[0] << 24 | (uint32_t)hp8[1] << 16 | @@ -731,7 +736,7 @@ bool netprot::Deserialize(Sync* sync, char* buf, uint32_t* buflen) { memcpy(&sync->hp, &hp, sizeof(float)); - *buflen = sizeof(uint64_t) * 2 + sizeof(uint32_t) * 4 + sizeof(uint16_t) + sizeof(float); + *buflen = 1 + sizeof(uint64_t) * 2 + sizeof(uint32_t) * 4 + sizeof(uint16_t) + sizeof(float); return true; } @@ -745,7 +750,7 @@ bool netprot::Deserialize(TeamInfo* tinfo, char* buf, uint32_t* buflen) { if (namesize > 32) return false; - memcpy(&tinfo->name, &buf[1], namesize); + strcpy(tinfo->name, namesize, &buf[1]); uint8_t diff[sizeof(uint64_t)] = { 0,0,0,0,0,0,0,0 }; memcpy(diff, &buf[namesize + 1], sizeof(uint64_t)); @@ -773,7 +778,7 @@ bool netprot::Deserialize(LoginInfo* linfo, char* buf, uint32_t* buflen) { if (namesize > 32) return false; - memcpy(&linfo->name, &buf[1], namesize); + strcpy(linfo->name, namesize, &buf[1]); uint8_t diff[sizeof(uint64_t)] = { 0,0,0,0,0,0,0,0 }; memcpy(diff, &buf[namesize + 1], sizeof(uint64_t)); @@ -812,7 +817,7 @@ bool netprot::Deserialize(PlayerInfo* pinfo, char* buf, uint32_t* buflen) { if (namesize > 32) return false; - memcpy(&pinfo->name, &buf[1], namesize); + strcpy(pinfo->name, namesize, &buf[1]); uint8_t diff[sizeof(uint64_t)] = { 0,0,0,0,0,0,0,0 }; memcpy(diff, &buf[namesize + 1], sizeof(uint64_t)); diff --git a/SQCSim-common/netprotocol.h b/SQCSim-common/netprotocol.h index 87a1645..6171bcf 100644 --- a/SQCSim-common/netprotocol.h +++ b/SQCSim-common/netprotocol.h @@ -19,7 +19,7 @@ namespace netprot { /* Structures */ struct Buffer { // Pour pouvoir rendre l'utilisation des buffers plus clean. - char* ptr = new char[BUFFER_LENGTH] { 1 }, * tmp = nullptr; + char *ptr = new char[BUFFER_LENGTH] { 1 }, *tmp = nullptr; uint32_t len = BUFFER_LENGTH; ~Buffer() { delete[] ptr; } @@ -27,7 +27,7 @@ namespace netprot { }; struct Packet { // Pour pouvoir recevoir les paquets du recv() sans avoir à les aiguiller dans la même thread. - void* ptr = nullptr; // Notez que le pointeur doit être supprimé séparément lorsqu'il n'est plus utile. + void *ptr = nullptr; // Notez que le pointeur doit être supprimé séparément lorsqu'il n'est plus utile. PACKET_TYPE type = PACKET_TYPE::ERR; }; @@ -87,30 +87,30 @@ namespace netprot { }; struct TeamInfo { // cli <-> srv TCP once - char name[32]; + char *name = new char[32]; uint64_t id = 0; TeamInfo() {} - TeamInfo(TeamInfo* tem) : id(tem->id) { strcpy(tem->name, name); } + TeamInfo(TeamInfo* tem) : id(tem->id) { strcpy(name, 32, tem->name); } + ~TeamInfo() { delete[] name; } }; struct LoginInfo { // cli <-> srv TCP once - char name[32]; + char *name = new char[32]; uint64_t sid = 0, tid = 0; LoginInfo() {} - LoginInfo(LoginInfo* ply): sid(ply->sid), tid(ply->tid) { strcpy(ply->name, name); } + LoginInfo(LoginInfo* log): sid(log->sid), tid(log->tid) { strcpy(name, 32, log->name); } + ~LoginInfo() { delete[] name; } }; struct PlayerInfo { // cli <-> srv TCP once - char name[32]; + char *name = new char[32]; uint64_t id = 0, tid = 0; PlayerInfo() {} - PlayerInfo(PlayerInfo* log) : id(log->id), tid(log->tid) { - strcpy(log->name, name); - }; - PlayerInfo(int id, int tid, std::string strname) : id(id), tid(tid) { memcpy((void*)strname.c_str(), name, strname.length()); - } + PlayerInfo(PlayerInfo* ply) : id(ply->id), tid(ply->tid) { strcpy(name, 32, ply->name); }; + PlayerInfo(int id, int tid, std::string strname) : id(id), tid(tid) { strcpy(name, 32, strname.c_str()); } + ~PlayerInfo() { delete[] name; } }; struct GameInfo { // cli <-> srv TCP event (before game start)/ once @@ -125,10 +125,9 @@ namespace netprot { uint64_t src_id = 0, dest_id = 0, dest_team_id = 0; - char* mess = new char[140]; // Good 'nough for twitr, good 'nough for me. + char *mess = new char[140]; // Good 'nough for twitr, good 'nough for me. Chat() {} - Chat(Chat* cha) : src_id(cha->src_id), dest_id(cha->dest_id), dest_team_id(cha->dest_team_id) { - strcpy(mess, 140, cha->mess); } + Chat(Chat* cha) : src_id(cha->src_id), dest_id(cha->dest_id), dest_team_id(cha->dest_team_id) { strcpy(mess, 140, cha->mess); } ~Chat() { delete[] mess; } }; @@ -144,10 +143,11 @@ namespace netprot { }; struct ErrorLog { // srv -> cli TCP event - char mess[140]; - bool is_fatal; + char *mess = new char[140]; + bool is_fatal = false; ErrorLog() {}; - ErrorLog(ErrorLog* err) : is_fatal(err->is_fatal) { strcpy(err->mess, mess); } + ErrorLog(ErrorLog* err) : is_fatal(err->is_fatal) { strcpy(mess, 140, err->mess); } + ~ErrorLog() { delete[] mess; } }; /* Fonctions */ diff --git a/SQCSim-srv/connection.cpp b/SQCSim-srv/connection.cpp index dbe7816..669ae8f 100644 --- a/SQCSim-srv/connection.cpp +++ b/SQCSim-srv/connection.cpp @@ -4,16 +4,18 @@ Connection::Connection(SOCKET sock, sockaddr_in sockaddr, - LoginInfo log, - PlayerInfo play) : + LoginInfo *log, + PlayerInfo *play) : m_sock(sock), m_addr(sockaddr), - m_loginfo(log), - m_playinfo(play) { + m_loginfo(*log), + m_playinfo(*play) { } -Connection::~Connection() { closesocket(m_sock); } +Connection::~Connection() { + delete player; + closesocket(m_sock); } uint64_t Connection::GetHash(bool self) const { return self ? m_loginfo.sid : m_playinfo.id; } @@ -144,7 +146,7 @@ Timestamp Connection::Run(World* world) { player->Killer = GetHash(true); } - out.states.jumping = player->GetIsAirborne(); //abs(player->GetVelocity().y) > .2f; + out.states.jumping = player->GetIsAirborne(); out.states.running = player->GetVelocity().Length() > .5f; out.states.still = !out.states.running && !out.states.jumping; out.states.hit = player->m_hit; @@ -166,7 +168,7 @@ Timestamp Connection::Run(World* world) { player->GetDirection(), block, true); if (cmod) - ChunkDiffs.emplace_back(cmod); + ChunkDiffs.push_back(std::move(cmod)); } } else toggle = false; @@ -178,7 +180,7 @@ Timestamp Connection::Run(World* world) { else out.states.jumpshot = false; if (in.keys.shoot && m_shoot_acc <= 0.) { - Bullets.emplace_back(new Bullet(player->GetPOV() + player->GetDirection(), player->GetDirection(), GetHash(true))); + Bullets.push_back(std::move(new Bullet(player->GetPOV() + player->GetDirection(), player->GetDirection(), GetHash(true)))); m_shoot_acc = BULLET_TIME; } diff --git a/SQCSim-srv/connection.h b/SQCSim-srv/connection.h index 7a019e2..3c5ac23 100644 --- a/SQCSim-srv/connection.h +++ b/SQCSim-srv/connection.h @@ -16,8 +16,8 @@ public: Connection( SOCKET sock, sockaddr_in sockaddr, - LoginInfo log, - PlayerInfo play); + LoginInfo *log, + PlayerInfo *play); ~Connection(); Player* player = nullptr; diff --git a/SQCSim-srv/main.cpp b/SQCSim-srv/main.cpp index 98d39f9..74c28e1 100644 --- a/SQCSim-srv/main.cpp +++ b/SQCSim-srv/main.cpp @@ -3,6 +3,11 @@ int main() { std::unique_ptr server = std::make_unique(); if (server->Init() == 0) - if (server->Ready() == 0) + while (server->Ready() == 0) { server->Run(); + if (!server->NewGameRequested()) + break; + server->Cleanup(); + } + server->DeInit(); } \ No newline at end of file diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index c5c283b..f54db3a 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -132,7 +132,7 @@ int Server::Ready() { str.append(inet_ntop(AF_INET, &sockad.sin_addr, m_buf.ptr, m_buf.len)).append(": ").append(std::to_string(sockad.sin_port)); if (recv(sock, m_buf.ptr, m_buf.len, 0) > 0) { - PlayerInfo play; + PlayerInfo* play = new PlayerInfo(); m_buf.len = BUFFER_LENGTH; Packet pck = getPack(&m_buf); @@ -153,22 +153,20 @@ int Server::Ready() { sendPackTo(m_sock_udp, log, &m_buf, &sockad); - play.id = getUniqueId(); - play.tid = log->tid; - strcpy(play.name, log->name); + play->id = getUniqueId(); + play->tid = log->tid; + strcpy(play->name, 32, log->name); - Log(str.append(play.name).append(" SID: [").append(std::to_string(log->sid)).append("]") - .append(" ID: [").append(std::to_string(play.id)).append("]") - .append(" TID: [").append(std::to_string(play.tid)).append("]"), false, false); - play.tid = log->tid; + Log(str.append(play->name).append(" SID: [").append(std::to_string(log->sid)).append("]") + .append(" ID: [").append(std::to_string(play->id)).append("]") + .append(" TID: [").append(std::to_string(play->tid)).append("]"), false, false); + play->tid = log->tid; sendPackTo(m_sock_udp, &m_game, &m_buf, &sockad); - Connection* conn = new Connection(sock, sockad, *log, play); + Connection* conn = new Connection(sock, sockad, log, play); m_conns[log->sid] = conn; - delete log; - if (++nbrconn >= nbrjoueurs) readystart = true; } @@ -377,9 +375,44 @@ void Server::Run() { sendPackTo(m_sock_udp, &end, &m_buf, conn->getAddr()); // TODO: Gérer les 2-3 secondes post-game avant le billboard pour pas avoir un whiplash à la fin de la game. - system("pause"); + + char* ch = new char[2]; + std::cout << "Nouvelle partie? [o/N] "; + std::cin.getline(ch, 2); + std::cout << std::endl; + + m_exit = true; + if (ch[0] == 'o' || ch[0] == 'O') + m_exit = false; + + delete[] ch; } +void Server::Cleanup() { + for (auto& [key, conn] : m_conns) + delete conn; + + m_conns.clear(); + m_players.clear(); + delete m_world; + m_world = nullptr; +} + +void Server::DeInit() { + if (m_logfile.is_open()) + m_logfile.close(); + if (m_sock_udp) + closesocket(m_sock_udp); + if (m_sock_tcp) + closesocket(m_sock_tcp); + +#ifdef _WIN32 + WSACleanup(); +#endif +} + +bool Server::NewGameRequested() const { return !m_exit; } + inline std::string Server::LogTimestamp() { time_t rawtime; tm timeinfo; @@ -460,7 +493,7 @@ std::string Server::getDeathMessage(std::string username, std::string killer) co mess.append(temp.substr(0, ind)); mess.append(username); if (!bypass) { - mess.append(temp.substr(ind + 1, indk)); + mess.append(temp.substr(ind + 1, indk - 1)); mess.append(killer); mess.append(temp.substr(indk + 1)); } @@ -469,7 +502,7 @@ std::string Server::getDeathMessage(std::string username, std::string killer) co else { mess.append(temp.substr(0, indk)); mess.append(killer); - mess.append(temp.substr(indk + 1, ind)); + mess.append(temp.substr(indk + 1, ind - 1)); mess.append(username); mess.append(temp.substr(ind + 1)); } diff --git a/SQCSim-srv/server.h b/SQCSim-srv/server.h index 72c0945..c70a457 100644 --- a/SQCSim-srv/server.h +++ b/SQCSim-srv/server.h @@ -24,6 +24,9 @@ public: int Init(); int Ready(); void Run(); + void Cleanup(); + void DeInit(); + bool NewGameRequested() const; private: @@ -44,7 +47,7 @@ private: GameInfo m_game; World* m_world = nullptr; - const bool m_manual_setup = SRV_MANUAL_SETUP; + bool m_exit = true; std::string LogTimestamp(); void Log(std::string str, bool is_error, bool is_fatal); diff --git a/SQCSim2021/connector.cpp b/SQCSim2021/connector.cpp index f10b094..bcde34e 100644 --- a/SQCSim2021/connector.cpp +++ b/SQCSim2021/connector.cpp @@ -65,7 +65,7 @@ int Connector::Connect(const char* srv_addr, std::string name) { netprot::Buffer bf; netprot::LoginInfo log; - strcpy(log.name, name.c_str()); + strcpy(log.name, 32, name.c_str()); netprot::sendPack(m_sock_tcp, &log, &bf); diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 848528e..32f9721 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -18,7 +18,7 @@ struct Notification { // Use a vector to manage notifications std::vector notifications; -Engine::Engine() : m_remotePlayer(&m_pinfo), m_pinfo() {} +Engine::Engine() {} Engine::~Engine() { m_world.CleanUpWorld(m_renderCount, true); @@ -103,7 +103,7 @@ void Engine::Init() { m_world.SetSeed(seed); m_startTime = std::chrono::high_resolution_clock::now(); - m_remotePlayer.SetPosition(Vector3f(.5, CHUNK_SIZE_Y + 10., .5)); + // Gestion de souris. CenterMouse(); HideCursor(); @@ -1258,7 +1258,7 @@ void Engine::Render(float elapsedTime) { m_mouseWU = m_mouseWD = m_key1 = m_key2 = false; netprot::ChunkMod* cmod = nullptr; - if (m_mouseL) { + if (!m_player.AmIDead() && m_mouseL) { 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]) { @@ -1282,14 +1282,20 @@ void Engine::Render(float elapsedTime) { else if (m_mouseR) cmod = m_world.ChangeBlockAtCursor(BTYPE_METAL, m_player.GetPosition(), m_player.GetDirection(), m_block, m_networkgame); + static netprot::ChunkMod** wat = &m_chunkmod; for (int x = 0; x < MAX_BULLETS; ++x) { // Array de bullets en jeu. if (m_bullets[x]) { for (int b = 0; b < BULLET_UPDATES_PER_FRAME; ++b) { - if (m_bullets[x]->Update(&m_world, elapsedTime, BULLET_UPDATES_PER_FRAME, m_players, m_networkgame ? &m_chunkmod : nullptr)) { + if (m_bullets[x]->Update(&m_world, elapsedTime, BULLET_UPDATES_PER_FRAME, m_players, m_networkgame ? wat : nullptr)) { m_bullets[x]->~Bullet(); + + if (m_chunkmod) { + m_chunkmod_manifest.push_back(std::move(m_chunkmod)); + m_chunkmod = nullptr; + } + m_bullets[x] = nullptr; //if (m_whoosh[x]) // m_whoosh[x]->drop(); - //m_bullets[x] = nullptr; //m_whoosh[x] = nullptr; break; } @@ -1324,7 +1330,7 @@ void Engine::Render(float elapsedTime) { std::string user = m_player.m_username.append(" (Dead)"); m_player = Player(Vector3f(.5, CHUNK_SIZE_Y + 1.7f, .5), 0, 0); m_player.m_username = user; - + m_player.InflictDamage(-m_player.GetHP()); } m_time += elapsedTime; @@ -1349,6 +1355,7 @@ void Engine::Render(float elapsedTime) { sync_acc += tstamp - last; cmod_acc += tstamp - last; + last = tstamp; if (sync_acc >= 1000) { sync_acc -= 1000; @@ -1363,9 +1370,9 @@ void Engine::Render(float elapsedTime) { m_syncs[sync.timestamp] = sync; } - if (cmod_acc >= 1000) { - while (cmod_acc >= 1000) - cmod_acc -= 1000; + if (cmod_acc >= 3000) { + while (cmod_acc >= 3000) + cmod_acc -= 3000; if (!m_chunkmod_manifest.empty()) { ChunkMod* cmod = m_chunkmod_manifest.front(); m_chunkmod_manifest.pop_front(); @@ -1389,8 +1396,9 @@ void Engine::Render(float elapsedTime) { recvPacks(m_conn.m_sock_udp, &m_buf, &lsPck); char* prevptr = nullptr; + Chat chat; for (auto& pck : lsPck) { // We could make a few threads out of this. - Sync sync; Output out; ChunkMod cmod; BulletAdd bull; Chat chat; + Sync sync; Output out; ChunkMod cmod; BulletAdd bull; if (!prevptr) prevptr = m_buf.ptr; uint32_t bsize = m_buf.len - (pck - prevptr); @@ -1406,7 +1414,9 @@ void Engine::Render(float elapsedTime) { if (m_syncs.count(sync.timestamp)) { Sync comp = m_syncs[sync.timestamp]; - //m_player.InflictDamage(sync.hp - comp.hp); + std::cout << sync.hp << std::endl; + + m_player.InflictDamage(sync.hp - comp.hp); Vector3f diff = sync.position - comp.position; @@ -1463,7 +1473,7 @@ void Engine::Render(float elapsedTime) { m_bullets[0] = bult; break; } - m_audio.Create3DAudioObj(m_powpow, AUDIO_PATH "pow.wav", bull.pos, bull.dir * 10, false, .5f); + m_audio.Create3DAudioObj(m_powpow, AUDIO_PATH "pow.wav", bull.pos, bull.dir, false, 1.f); } else SystemNotification("Bullet is kraput."); break; diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index ef0cb73..18f01b5 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -218,9 +218,8 @@ private: std::unordered_map m_players; netprot::Buffer m_buf, m_bufout; netprot::ChunkMod* m_chunkmod = nullptr; - netprot::PlayerInfo m_pinfo; + std::unordered_map m_syncs; - RemotePlayer m_remotePlayer = RemotePlayer(netprot::PlayerInfo(),Vector3f(5.5f, CHUNK_SIZE_Y + 1.8f, 5.5f)); std::string m_messageNotification = ""; }; From 46298f8256f3336268f756ac6033b30975fa0bb0 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Sat, 9 Dec 2023 15:54:06 -0500 Subject: [PATCH 76/82] Oh yeah. --- SQCSim-srv/server.cpp | 4 ++-- SQCSim2021/engine.cpp | 36 ++++++++++++++++++++++++------------ SQCSim2021/engine.h | 4 ++-- 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index f54db3a..2bd43eb 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -202,8 +202,8 @@ void Server::Run() { m_conns.erase(key); continue; } - int x = (rand() % (CHUNK_SIZE_X * WORLD_SIZE_X - 1) - (CHUNK_SIZE_X * WORLD_SIZE_X / 2)) / 4, - y = (rand() % (CHUNK_SIZE_Y * WORLD_SIZE_Y - 1) - (CHUNK_SIZE_Y * WORLD_SIZE_Y / 2)) / 4; + int x = (rand() % (CHUNK_SIZE_X * WORLD_SIZE_X - 1) - (CHUNK_SIZE_X * WORLD_SIZE_X / 2)) / 8, + y = (rand() % (CHUNK_SIZE_Y * WORLD_SIZE_Y - 1) - (CHUNK_SIZE_Y * WORLD_SIZE_Y / 2)) / 8; conn->player = new Player(Vector3f(x + .5f, CHUNK_SIZE_Y + 1.8f, y + .5f)); conn->player->m_username = conn->GetName(); m_players[key] = conn->player; diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index dd1ce5d..7cdf9e5 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -29,9 +29,6 @@ Engine::~Engine() { } void Engine::Init() { - - uint64_t seed = SEED; - if (m_istarted) return; else m_istarted = true; @@ -39,7 +36,7 @@ void Engine::Init() { // Objet de skybox avec sa propre texture et son propre shader! m_skybox.Init(0.2f); // Objet de musique! - //m_audio.ToggleMusicState(); + m_audio.ToggleMusicState(); // Array pour les balles. for (int x = 0; x < MAX_BULLETS; ++x) { @@ -47,7 +44,8 @@ void Engine::Init() { m_whoosh[x] = nullptr; } - m_world.SetSeed(seed); + m_world.GetChunks().Reset(nullptr); + m_world.SetSeed(SEED); m_startTime = std::chrono::high_resolution_clock::now(); } @@ -609,7 +607,8 @@ int Engine::GetOptionsChoice() { return m_selectedOption; } -void Engine::StartMultiplayerGame() { +bool Engine::StartMultiplayerGame() { + bool ok = true; if (!m_conn.Init()) { if (!m_conn.Connect(m_serverAddr.c_str(), m_username)) { // setup jeu en reseau. @@ -620,12 +619,20 @@ void Engine::StartMultiplayerGame() { for (auto& [key, player] : m_conn.m_players) m_players[key] = new RemotePlayer(player); - //seed = m_conn.getSeed(); + //m_world.SetSeed(m_conn.getSeed()); + m_world.SetSeed(9370707); m_networkgame = true; } - else std::cout << "Erreur de connexion." << std::endl; + else { + std::cout << "Erreur de connexion." << std::endl; + ok = false; + } } - else std::cout << "Erreur de creation de socket." << std::endl; + else { + std::cout << "Erreur de creation de socket." << std::endl; + ok = false; + } + return ok; } void Engine::DisplayInfo(float elapsedTime, BlockType bloc) { @@ -1228,8 +1235,14 @@ void Engine::Render(float elapsedTime) { if (m_gamestate == GameState::LOBBY) { DisplayLobbyMenu(elapsedTime); if (m_multiReady) { - StartMultiplayerGame(); - std::cout << "Starting multiplayer game reached" << std::endl; + if (StartMultiplayerGame()) { + std::cout << "Starting multiplayer game reached" << std::endl; + m_gamestate = GameState::PLAY; + } + else { + std::cout << "Cannot reach server." << std::endl; + m_gamestate = GameState::MAIN_MENU; + } } return; } @@ -2018,7 +2031,6 @@ void Engine::HandlePlayerInput(float elapsedTime) { m_currentInputString = ""; m_settingServer = false; m_multiReady = true; - m_gamestate = GameState::PLAY; } } m_keyEnter = false; diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index 26a844b..69635a6 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -46,7 +46,7 @@ private: int GetFps(float elapsedTime) const; int GetCountdown(float elapsedTime); int GetOptionsChoice(); - void StartMultiplayerGame(); + bool StartMultiplayerGame(); bool LoadTexture(Texture& texture, const std::string& filename, bool useMipmaps = true, bool stopOnError = true); @@ -104,7 +104,7 @@ private: BlockInfo* m_blockinfo[BTYPE_LAST]; BoostInfo* m_boostinfo[BTYPE_BOOST_LAST]; - GameState m_gamestate = GameState::PLAY; + GameState m_gamestate = GameState::SPLASH; Shader m_shader01; From c176fddea13129f821930086c816e13d05a939fb Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Sat, 9 Dec 2023 16:25:24 -0500 Subject: [PATCH 77/82] Update engine.cpp --- SQCSim2021/engine.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 7cdf9e5..43c1deb 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -46,8 +46,6 @@ void Engine::Init() { m_world.GetChunks().Reset(nullptr); m_world.SetSeed(SEED); - - m_startTime = std::chrono::high_resolution_clock::now(); } void Engine::DeInit() {} @@ -1238,6 +1236,7 @@ void Engine::Render(float elapsedTime) { if (StartMultiplayerGame()) { std::cout << "Starting multiplayer game reached" << std::endl; m_gamestate = GameState::PLAY; + m_startTime = std::chrono::high_resolution_clock::now(); } else { std::cout << "Cannot reach server." << std::endl; From 5b0be2d98535e4a2e601b6364b8ea80774703651 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Sat, 9 Dec 2023 16:51:43 -0500 Subject: [PATCH 78/82] Gossage de musique --- SQCSim-srv/server.cpp | 2 +- SQCSim2021/audio.cpp | 2 +- SQCSim2021/engine.cpp | 11 +++++++---- SQCSim2021/engine.h | 3 ++- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index 2bd43eb..edf740c 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -302,7 +302,7 @@ void Server::Run() { for (auto& bull : conn->Bullets) { bullets.emplace_back(bull); - Log("POW!", false, false); + //Log("POW!", false, false); BulletAdd* nbul = new BulletAdd(); nbul->pos = bull->getPos(); nbul->dir = bull->getVel(); diff --git a/SQCSim2021/audio.cpp b/SQCSim2021/audio.cpp index 7691f88..fda7368 100644 --- a/SQCSim2021/audio.cpp +++ b/SQCSim2021/audio.cpp @@ -14,7 +14,7 @@ Audio::Audio(const char * music) { m_engine->setRolloffFactor(2); m_engine->setDefault3DSoundMinDistance(.1); m_engine->setDefault3DSoundMaxDistance(1000); - m_music = m_engine->play2D(music, false, true, true, irrklang::ESM_STREAMING); + m_music = m_engine->play2D(music, true, true, true, irrklang::ESM_STREAMING); } Audio::~Audio() { diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 43c1deb..bf78ee5 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -36,8 +36,8 @@ void Engine::Init() { // Objet de skybox avec sa propre texture et son propre shader! m_skybox.Init(0.2f); // Objet de musique! - m_audio.ToggleMusicState(); - + //m_menuaudio.ToggleMusicState(); + // Array pour les balles. for (int x = 0; x < MAX_BULLETS; ++x) { m_bullets[x] = nullptr; @@ -1236,6 +1236,8 @@ void Engine::Render(float elapsedTime) { if (StartMultiplayerGame()) { std::cout << "Starting multiplayer game reached" << std::endl; m_gamestate = GameState::PLAY; + //m_menuaudio.ToggleMusicState(); + m_audio.ToggleMusicState(); m_startTime = std::chrono::high_resolution_clock::now(); } else { @@ -1672,7 +1674,8 @@ void Engine::KeyPressEvent(unsigned char key) { else if (m_gamestate == GameState::PAUSE) { m_gamestate = GameState::PLAY; } - //Stop(); + //m_menuaudio.ToggleMusicState(); + m_audio.ToggleMusicState(); break; case 57: // Space - Sauter if (!m_keySpace) { @@ -1762,7 +1765,7 @@ void Engine::KeyReleaseEvent(unsigned char key) { m_keyL = false; break; case 12: // M - Toggle music - m_audio.ToggleMusicState(); + //m_audio.ToggleMusicState(); break; case 15: for (int x = 0; x < MAX_BULLETS; ++x) // Ajouter une balle dans l'array (aussi connu sous le nom de "faire pow pow"). diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index 69635a6..8ca3894 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -86,7 +86,8 @@ private: char SimulateKeyboard(unsigned char key); void HandlePlayerInput(float elapsedTime); - Audio m_audio = Audio(AUDIO_PATH "start.wav"); + //udio m_menuaudio = Audio(AUDIO_PATH "menumusic.wav"); + Audio m_audio = Audio(AUDIO_PATH "music01.wav"); irrklang::ISound* m_powpow, * m_scream; irrklang::ISound* m_whoosh[MAX_BULLETS]; From 7c1f70646a6edb6606ad250fa81541154670bb2a Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Mon, 11 Dec 2023 05:35:29 -0500 Subject: [PATCH 79/82] Correction bug de switch de fullscreen --- SQCSim2021/engine.cpp | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index bf78ee5..6b5b9cf 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -29,6 +29,25 @@ Engine::~Engine() { } void Engine::Init() { + glDisable(GL_FRAMEBUFFER_SRGB); + glEnable(GL_DEPTH_TEST); + glEnable(GL_STENCIL_TEST); + glEnable(GL_POINT_SMOOTH); + glEnable(GL_BLEND); + glEnable(GL_CULL_FACE); + glEnable(GL_TEXTURE_2D); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + gluPerspective(45.0f, (float)Width() / (float)Height(), 0.1f, VIEW_DISTANCE); + glShadeModel(GL_SMOOTH); + + glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); + glDisable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBlendEquation(GL_FUNC_SUBTRACT); + if (m_istarted) return; else m_istarted = true; @@ -57,25 +76,6 @@ void Engine::LoadResource() { abort(); } - glDisable(GL_FRAMEBUFFER_SRGB); - glEnable(GL_DEPTH_TEST); - glEnable(GL_STENCIL_TEST); - glEnable(GL_POINT_SMOOTH); - glEnable(GL_BLEND); - glEnable(GL_CULL_FACE); - glEnable(GL_TEXTURE_2D); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - gluPerspective(45.0f, (float)Width() / (float)Height(), 0.1f, VIEW_DISTANCE); - glShadeModel(GL_SMOOTH); - - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); - glDisable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glBlendEquation(GL_FUNC_SUBTRACT); - LoadTexture(m_skybox.GetTexture(), TEXTURE_PATH "skybox.png", true); LoadTexture(m_textureCrosshair, TEXTURE_PATH "cross.bmp", true); LoadTexture(m_textureFont, TEXTURE_PATH "font.bmp", true); @@ -2142,6 +2142,7 @@ void Engine::MousePressEvent(const MOUSE_BUTTON& button, int x, int y) { if (x > leftButton && x < rightButton && y > bottomFirst && y < topFirst) { if (m_selectedPlayOptions) { m_gamestate = GameState::PLAY; + m_audio.ToggleMusicState(); } else { m_selectedPlayOptions = true; From 7498076d7a8f460230b5a99cd3ac2199eb47de35 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Mon, 11 Dec 2023 07:31:20 -0500 Subject: [PATCH 80/82] Corrections timer --- SQCSim2021/SQCSim2021.vcxproj | 2 +- SQCSim2021/engine.cpp | 5 +++-- SQCSim2021/main.cpp | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/SQCSim2021/SQCSim2021.vcxproj b/SQCSim2021/SQCSim2021.vcxproj index cda35f7..7d14bc6 100644 --- a/SQCSim2021/SQCSim2021.vcxproj +++ b/SQCSim2021/SQCSim2021.vcxproj @@ -196,7 +196,7 @@ Fast - Console + Windows false true true diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 6b5b9cf..9b63b3e 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -1551,8 +1551,9 @@ void Engine::Render(float elapsedTime) { m_countdown = m_time + COUNTDOWN; m_resetcountdown = false; } - if (!m_stopcountdown) - m_countdown -= (int)m_time; + if (!m_stopcountdown) { + m_countdown = COUNTDOWN - (int)m_time; + } } DrawHud(elapsedTime, bloc); diff --git a/SQCSim2021/main.cpp b/SQCSim2021/main.cpp index 9fea7c8..98dc399 100644 --- a/SQCSim2021/main.cpp +++ b/SQCSim2021/main.cpp @@ -5,5 +5,5 @@ int main() { Engine engine; engine.SetMaxFps(60); - engine.Start("Syndicat Quebecois de la Construction Simulator 2023", BASE_WIDTH, BASE_HEIGHT, false); + engine.Start("Syndicat Quebecois de la Construction Simulator 2023", 1920, 1080, false); } From c099a3b8ebfabf02d21737a93980b475a1deeb4b Mon Sep 17 00:00:00 2001 From: mduval76 <9343789@etu.cegepsth.qc.ca> Date: Mon, 11 Dec 2023 21:41:40 -0500 Subject: [PATCH 81/82] Push menu pause fonctionnel --- SQCSim2021/define.h | 1 - SQCSim2021/engine.cpp | 147 ++++++++++++------ SQCSim2021/engine.h | 5 + .../textures/menus/backgrounds/bgPause.png | Bin 575715 -> 610071 bytes .../menus/buttons/pause/pauseMainMenu.png | Bin 0 -> 9767 bytes .../menus/buttons/pause/pauseResume.png | Bin 0 -> 6966 bytes 6 files changed, 105 insertions(+), 48 deletions(-) create mode 100644 SQCSim2021/media/textures/menus/buttons/pause/pauseMainMenu.png create mode 100644 SQCSim2021/media/textures/menus/buttons/pause/pauseResume.png diff --git a/SQCSim2021/define.h b/SQCSim2021/define.h index e457c33..d0382a7 100644 --- a/SQCSim2021/define.h +++ b/SQCSim2021/define.h @@ -50,7 +50,6 @@ enum GameState { SPLASH, LOBBY, OPTIONS, - QUIT, PLAY, PAUSE }; diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 6b5b9cf..c19f2e5 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -84,7 +84,7 @@ void Engine::LoadResource() { LoadTexture(m_textureLobbyMenu, TEXTURE_PATH "menus/backgrounds/bgLobby.png", false); LoadTexture(m_textureMainMenu, TEXTURE_PATH "menus/backgrounds/bgMainMenu.png", false); - //LoadTexture(m_texturePauseMenu, TEXTURE_PATH "menus/backgrounds/bgPause.png", false); + LoadTexture(m_texturePauseMenu, TEXTURE_PATH "menus/backgrounds/bgPause.png", false); LoadTexture(m_textureOptionsMenu, TEXTURE_PATH "menus/backgrounds/bgOptions.png", false); LoadTexture(m_textureSplashScreen, TEXTURE_PATH "menus/backgrounds/bgSplash.png", false); @@ -111,6 +111,9 @@ void Engine::LoadResource() { LoadTexture(m_textureUhd, TEXTURE_PATH "menus/labels/labelUhd.png", false); LoadTexture(m_textureMenuTitle, TEXTURE_PATH "menus/labels/labelTitle.png", false); + LoadTexture(m_texturePauseResume, TEXTURE_PATH "menus/buttons/pause/pauseResume.png", false); + LoadTexture(m_texturePauseMainMenu, TEXTURE_PATH "menus/buttons/pause/pauseMainMenu.png", false); + LoadTexture(m_textureMenuBack, TEXTURE_PATH "menus/buttons/main/mainBack.png", false); LoadTexture(m_textureMenuMulti, TEXTURE_PATH "menus/buttons/main/mainMulti.png", false); LoadTexture(m_textureMenuOptions, TEXTURE_PATH "menus/buttons/main/mainOptions.png", false); @@ -317,6 +320,7 @@ void Engine::ProcessNotificationQueue() { glMatrixMode(GL_PROJECTION); glPopMatrix(); + glMatrixMode(GL_MODELVIEW); glPopMatrix(); @@ -335,14 +339,10 @@ void Engine::DisplayCrosshair() { glLoadIdentity(); glTranslated(Width() / 2 - crossSize / 2, Height() / 2 - crossSize / 2, 0); glBegin(GL_QUADS); - glTexCoord2f(0, 0); - glVertex2i(0, 0); - glTexCoord2f(1, 0); - glVertex2i(crossSize, 0); - glTexCoord2f(1, 1); - glVertex2i(crossSize, crossSize); - glTexCoord2f(0, 1); - glVertex2i(0, crossSize); + glTexCoord2f(0, 0); glVertex2i(0, 0); + glTexCoord2f(1, 0); glVertex2i(crossSize, 0); + glTexCoord2f(1, 1); glVertex2i(crossSize, crossSize); + glTexCoord2f(0, 1); glVertex2i(0, crossSize); glEnd(); } @@ -461,18 +461,18 @@ void Engine::DrawHud(float elapsedTime, BlockType bloc) { glDisable(GL_STENCIL_TEST); glDisable(GL_DEPTH_TEST); + glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE); glBlendEquation(GL_FUNC_ADD); - glEnable(GL_BLEND); glMatrixMode(GL_PROJECTION); glPushMatrix(); - glLoadIdentity(); glOrtho(0, Width(), 0, Height(), -1, 1); glMatrixMode(GL_MODELVIEW); glPushMatrix(); + glLoadIdentity(); int timer = GetCountdown(elapsedTime); /*for (int i = 1; i < WORLD_SIZE_X; i++) { @@ -506,14 +506,13 @@ void Engine::DrawHud(float elapsedTime, BlockType bloc) { glBlendFunc(GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR); glBlendEquation(GL_FUNC_SUBTRACT); - glEnable(GL_STENCIL_TEST); - glEnable(GL_DEPTH_TEST); - glMatrixMode(GL_PROJECTION); glPopMatrix(); - glMatrixMode(GL_MODELVIEW); glPopMatrix(); + + glEnable(GL_STENCIL_TEST); + glEnable(GL_DEPTH_TEST); } void Engine::DisplayPovGun() { @@ -526,12 +525,12 @@ void Engine::DisplayPovGun() { glMatrixMode(GL_PROJECTION); glPushMatrix(); - glLoadIdentity(); glOrtho(0, Width(), 0, Height(), -1, 1); glMatrixMode(GL_MODELVIEW); glPushMatrix(); + glLoadIdentity(); float baseXOffsetPercentage = 0.4958; float baseWidthPercentage = 0.4688; @@ -542,26 +541,21 @@ void Engine::DisplayPovGun() { float quadHeight = baseHeightPercentage * Height(); m_texturePovGun.Bind(); - glLoadIdentity(); glTranslated(xTranslation, 0, 0); glBegin(GL_QUADS); - glTexCoord2f(0, 0); glVertex2i(0, 0); - glTexCoord2f(1, 0); glVertex2i(quadWidth, 0); - glTexCoord2f(1, 1); glVertex2i(quadWidth, quadHeight); - glTexCoord2f(0, 1); glVertex2i(0, quadHeight); + glTexCoord2f(0, 0); glVertex2i(0, 0); + glTexCoord2f(1, 0); glVertex2i(quadWidth, 0); + glTexCoord2f(1, 1); glVertex2i(quadWidth, quadHeight); + glTexCoord2f(0, 1); glVertex2i(0, quadHeight); glEnd(); - // Reset du blend function - glBlendFunc(GL_CONSTANT_COLOR, GL_ONE_MINUS_CONSTANT_COLOR); - glBlendEquation(GL_FUNC_SUBTRACT); - - glEnable(GL_STENCIL_TEST); - glEnable(GL_DEPTH_TEST); - glMatrixMode(GL_PROJECTION); glPopMatrix(); glMatrixMode(GL_MODELVIEW); glPopMatrix(); + + glEnable(GL_STENCIL_TEST); + glEnable(GL_DEPTH_TEST); } void Engine::PrintText(float x, float y, const std::string& t, float charSizeMultiplier) { @@ -719,7 +713,6 @@ void Engine::DisplaySplashScreen() { } void Engine::DisplayLobbyMenu(float elapsedTime) { - GLint viewport[4]; glGetIntegerv(GL_VIEWPORT, viewport); @@ -728,7 +721,6 @@ void Engine::DisplayLobbyMenu(float elapsedTime) { glMatrixMode(GL_PROJECTION); glPushMatrix(); - glLoadIdentity(); glOrtho(0, Width(), 0, Height(), -1, 1); @@ -758,7 +750,6 @@ void Engine::DisplayLobbyMenu(float elapsedTime) { glMatrixMode(GL_PROJECTION); glPopMatrix(); - glMatrixMode(GL_MODELVIEW); glPopMatrix(); } @@ -795,6 +786,47 @@ void Engine::SetServerAddress(float elapsedTime) { glColor4f(1.0f, 1.0f, 1.0f, 1.0f); } +void Engine::DisplayPauseMenu(float elapsedTime) { + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + glOrtho(0, Width(), 0, Height(), -1, 1); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + + m_texturePauseMenu.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(0, 0); + glTexCoord2f(1, 0); glVertex2i(Width(), 0); + glTexCoord2f(1, 1); glVertex2i(Width(), Height()); + glTexCoord2f(0, 1); glVertex2i(0, Height()); + glEnd(); + + glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + m_texturePauseResume.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(Width() * 0.025f, Height() * 0.75); + glTexCoord2f(1, 0); glVertex2i(Width() * 0.33f, Height() * 0.75); + glTexCoord2f(1, 1); glVertex2i(Width() * 0.33f, Height() * 0.95); + glTexCoord2f(0, 1); glVertex2i(Width() * 0.025f, Height() * 0.95); + glEnd(); + + m_texturePauseMainMenu.Bind(); + glBegin(GL_QUADS); + glTexCoord2f(0, 0); glVertex2i(Width() * 0.67f, Height() * 0.75); + glTexCoord2f(1, 0); glVertex2i(Width() * 0.9975f, Height() * 0.75); + glTexCoord2f(1, 1); glVertex2i(Width() * 0.9975f, Height() * 0.95); + glTexCoord2f(0, 1); glVertex2i(Width() * 0.67f, Height() * 0.95); + glEnd(); + + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); +} + void Engine::DisplayMainMenu() { GLint viewport[4]; glGetIntegerv(GL_VIEWPORT, viewport); @@ -1248,6 +1280,20 @@ void Engine::Render(float elapsedTime) { return; } + if (m_gamestate == GameState::PAUSE) { + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + glDisable(GL_STENCIL_TEST); + glDisable(GL_DEPTH_TEST); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + DisplayPauseMenu(elapsedTime); + ShowCursor(); + return; + } + if (m_gamestate == GameState::PLAY) { HideCursor(); CenterMouse(); @@ -1299,7 +1345,6 @@ void Engine::Render(float elapsedTime) { m_player.ApplyTransformation(skybox, false); // Version d'ApplyTransformation qui ne tient compte que de la rotation // (donc l'objet ne bouge pas relativement au joueur, ce qui est pratique pour une skybox!). - m_player.ApplyTransformation(remotePlayer, true, false); m_mouseWU = m_mouseWD = m_key1 = m_key2 = false; @@ -1535,7 +1580,6 @@ void Engine::Render(float elapsedTime) { } lsPck.clear(); - glDisable(GL_CULL_FACE); for (auto& [key, player] : m_players) { RemotePlayer* rt = static_cast(player); @@ -1557,7 +1601,6 @@ void Engine::Render(float elapsedTime) { DrawHud(elapsedTime, bloc); DisplayPovGun(); - } } @@ -1991,7 +2034,6 @@ char Engine::SimulateKeyboard(unsigned char key) { if ((int)key != 38 && !m_invalidChar) { m_charChanged = true; - std::cout << "Key pressed: " << (int)key << " (" << m_inputChar << ")" << std::endl; } m_invalidChar = false; @@ -2047,17 +2089,8 @@ void Engine::HandlePlayerInput(float elapsedTime) { ss << m_currentInputString; m_charChanged = false; - - if (lobbyTime < onInterval) { - ss << "_"; - } - else if (lobbyTime > onInterval && lobbyTime < offInterval) { - ss << " "; - } - else { - lobbyTime = 0.0f; - } - + + ss << (lobbyTime < onInterval ? "_" : (lobbyTime > onInterval && lobbyTime < offInterval) ? " " : (lobbyTime = 0.0f, "")); PrintText(Width() * 0.6f, Height() * 0.4f, ss.str(), 2.0f); } @@ -2162,7 +2195,7 @@ void Engine::MousePressEvent(const MOUSE_BUTTON& button, int x, int y) { m_selectedPlayOptions = false; } else { - m_gamestate = GameState::QUIT; + Stop(); } } } @@ -2261,6 +2294,26 @@ void Engine::MousePressEvent(const MOUSE_BUTTON& button, int x, int y) { m_selectedGameplaySensitivityBar = true; } } + else if (m_gamestate == GameState::PAUSE) { + float leftResume = centerX - Width() * 0.4735f; + float rightResume = centerX - Width() * 0.1765f; + float topResume = centerY - Height() * 0.271f; + float bottomResume = centerY - Height() * 0.4415f; + + float leftMainMenu = centerX + Width() * 0.17f; + float rightMainMenu = centerX + Width() * 0.4875f; + float topMainMenu = centerY - Height() * 0.255f; + float bottomMainMenu = centerY - Height() * 0.4415f; + + if (x > leftResume && x < rightResume && y > bottomResume && y < topResume) { + m_gamestate = GameState::PLAY; + m_audio.ToggleMusicState(); + } + else if (x > leftMainMenu && x < rightMainMenu && y > bottomMainMenu && y < topMainMenu) { + m_gamestate = GameState::MAIN_MENU; + m_selectedPlayOptions = false; + } + } } void Engine::MouseReleaseEvent(const MOUSE_BUTTON& button, int x, int y) { diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index 8ca3894..1f4bcbc 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -73,6 +73,8 @@ private: void SetPlayerUsername(float elapsedTime); void SetServerAddress(float elapsedTime); + void DisplayPauseMenu(float elapsedTime); + void DisplayOptionsMenu(); void DisplayAudioMenu(float centerX, float centerY); void DisplayGraphicsMenu(float centerX, float centerY); @@ -138,6 +140,9 @@ private: Texture m_textureCheck; Texture m_textureChecked; + Texture m_texturePauseResume; + Texture m_texturePauseMainMenu; + Texture m_textureOptAudio; Texture m_textureOptBack; Texture m_textureOptGameplay; diff --git a/SQCSim2021/media/textures/menus/backgrounds/bgPause.png b/SQCSim2021/media/textures/menus/backgrounds/bgPause.png index c236e26778f5995df4295157e1db1a114350bfe3..38bece6a4e0d20746a9494a887eeb1f443e4eda3 100644 GIT binary patch delta 304563 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

ctWzvE^GYYPE$Y0`@`33wh^z% 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 z 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

uCGep_=MkO>9@PK`*)_01NXXle_sX} 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�I>2`q`qp?y=){hl8CuUl8Ne7FGDik*`EPGfH-cxnbcKNdSAJ=}KudDrY*7~^8 z!uEc>=G(uyj`wFdmx>t5ovnYlt?t;f)LV-JZ}>#cVfz* z&kjzfE^Uij!s>o!S=^%M9PYH!unrPg62Lp#^4&xJbqbPNN+EB9GxZ;MEn>TBxLoM! zA=Q~{8DIH*+Y!TX_p-VC#3N1Fo_5DdZ7xTNx&}^FP0l-Ix|zRz?PQN5jk&G!yo^tr z61sh`ciGgYQxD$cgilFiD>pBHSEC^#tdShow(5SD_oZ4 zyB{|ndi!9m;{tINL$2??R(8~{ypvOrRbag6f>>_BCX21p4*0OHnle@QepIA`B;UP% z1$H$t*>4u?ew4mkOvZFgvHnlxcW)CHm-)<`{A_LNBPW4#nU~FMgLX{kzZ??qD6Qmt z*374CDqr+yr0#CIW!`%2#Rbi&I;XkjIv8><6IRQAb?;(EO|FrJ#FxtnKA8*G^w!_p z9)0IPTY*{ciQJ;^xy|`kTI~WOxc@uWm9&-|@?zh^<>dQJ@- zKc^r0yZnaw{w@Dnt=Z@AVBfcudHMDSm)?D8d(Ed)l05b6-T0stYPbHyZ?1Uo%KH2a z_U)?-vtKB53Gdo)VdMM5dF6>lf$9Ep!(ZD**1v3;y=eA~?EaYFyX1F0bC0{V=by)h z8Evv*OftKly2k&Td%s}5A!w=Y$BKEgpy}@a;}0r-f7<`}uu%BCT+Srx{e}A^oOGn- zR$jFD^Z0x1zwO`D56$2EVWG12dKH>Lk-9JYTkm2xKmO)S_x=U3`DOl<{rBd!MH` zHdog3Rm+7aUUxk5xIs8;%HQJ+LQ5q?XQ>D^d7cz)d2!TzOM+U51aF~|VMKR96wA8A zj)QOiK02aTeNisE+@|Nf?Avmwb)2_@4br~9{!+Rk{+kP*cU$@=$ zZSLt7tF>xNMA9xPG*7!1Bf3|3?Zwj5KfR3kBQzJDvhb_^f9%<{{`qykCs*D2UGCiY z^Y6jC_7bwaO((u7U!0UJY&`AQ%Por{8`sU5RdD!?MRI-Q?tQRx=FJ6Gc}ev55b{$g_0{D+F)&+jtTd;C=Y+ucU9rHcAqx4Bj>S+gXF zD>kU}EvMw{i$Xc`bA0=cH@DsFlU{Pd&CFBah)GATtkHt+KHKAVelx58y>1P6Ez?iq z(pP7n%v_l!*f%q2W0P2`g7f>=D>d3buDty0n)UJdzfRp+zHejo^}apzT;hz&8iXH} zmn$mHKELOg!vP~Ft|a$6X-D_3USeYLDF5x5yAbkU&G|KFBBc>le_vihHYzii#l6r;07 zvPWgLoK|ujT&nYH`TPGH?l(NrJh}Yz`n?);Q)g~@GGj~9F^5cFojGA{kFD72y*^DU z@sfSm#qQG1*sF9(DTGDSvEF=(TyxO;jqd8rO~Dfj!gfw>56CHER6SyQ^u!~TS|*NeD&mJlrEDHNHV6E+I|?73l^M)(aft>;`jx1qTRbn? z7w6xozq{Z~qF7m3G&s;c%NTW zxNxvCEoYnm7N=hE{}Ky6EA5?6+5#=R@I&u94hEos)fo7d5EA|^CwLks&# z-HkjiS&b{tHSZ646fZij;*G_gS##$k^F|5f9iJer*R!(T?MQ)!b^QL)-@^B$YW`R+ zw*Flpm%yBGedYYN;FY}$C$>M_^|&TgQ%&u-=#r@_jkU)&<{8z$yYtTWdBc*`!Uk)9 zeyeF#S?GDG#A?=@>JLrt`WN2y3gch3wAE8&#*)O`3_XL-3up94PH#J3{ZZQPmfHvg3cj@|pR?fbnCd*l~Qy7%|%!KKy9mGTQDLoYi?8}C2RsC)P0 z%lNzVIr1&5zdd&6+ozMe<⪚U1yf>z4+kLboSmwa#>U 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

t}ZC%*y7?#(BK~+kfzy7fze!6E%C; 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 diff --git a/SQCSim2021/media/textures/menus/buttons/pause/pauseMainMenu.png b/SQCSim2021/media/textures/menus/buttons/pause/pauseMainMenu.png new file mode 100644 index 0000000000000000000000000000000000000000..701a9a6f07a5af43ce41eeb930e6b04d27a482e5 GIT binary patch literal 9767 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�=b9CziH@3Ncs9_CtZG^%q6 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

    RG1$X=N1X{H1Kduo1eCsHF4p(YYji1n(h2t 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 Date: Tue, 12 Dec 2023 09:31:56 -0500 Subject: [PATCH 82/82] Erratum --- SQCSim2021/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SQCSim2021/main.cpp b/SQCSim2021/main.cpp index 98dc399..9fea7c8 100644 --- a/SQCSim2021/main.cpp +++ b/SQCSim2021/main.cpp @@ -5,5 +5,5 @@ int main() { Engine engine; engine.SetMaxFps(60); - engine.Start("Syndicat Quebecois de la Construction Simulator 2023", 1920, 1080, false); + engine.Start("Syndicat Quebecois de la Construction Simulator 2023", BASE_WIDTH, BASE_HEIGHT, false); }

BO>tnnZ!b)mCe#FI_Qf>D`N8^rCLhUK#pX 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