From 703b432fb72bd09e8d7b085f1c8d30c589b26fff Mon Sep 17 00:00:00 2001 From: Frederic Leger <57264593+freeedleger@users.noreply.github.com> Date: Sat, 23 Sep 2023 17:15:35 -0400 Subject: [PATCH] ajout countdown + display t = reset countdown g = stop countdown --- SQCSim2021/define.h | 2 ++ SQCSim2021/engine.cpp | 34 ++++++++++++++++++++++++++++++++-- SQCSim2021/engine.h | 7 ++++++- 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/SQCSim2021/define.h b/SQCSim2021/define.h index cdac451..254d53a 100644 --- a/SQCSim2021/define.h +++ b/SQCSim2021/define.h @@ -4,6 +4,7 @@ #include #include #include +#include #ifdef _WIN32 #include @@ -33,6 +34,7 @@ #define VIEW_DISTANCE 256 #define TEXTURE_SIZE 128 #define MAX_BULLETS 64 +#define COUNTDOWN 300 #define BASE_WIDTH 640 #define BASE_HEIGHT 480 diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index 1177fd3..57dd6ff 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -120,7 +120,7 @@ void Engine::DisplayCrosshair() { void Engine::DisplayCurrentItem() { } -void Engine::DisplayHud() { +void Engine::DisplayHud(int timer) { glBindTexture(GL_TEXTURE_2D, 0); glLoadIdentity(); glDisable(GL_BLEND); @@ -186,6 +186,13 @@ void Engine::DisplayHud() { std::ostringstream ss; ss << m_player.GetUsername(); PrintText(fPosX, fPosY, scale, ss.str()); + + //Countdown + ss.str(""); + ss << "Time: " << (int)(timer / 60) << ":" << std::setw(2) << std::setfill('0') << timer % 60; + PrintText(Width() - Width() * 0.15, Height() - (Height() / 19.2), scale, ss.str()); + + } void Engine::DisplayInfo(float elapsedTime, BlockType bloc) { @@ -240,13 +247,14 @@ void Engine::DrawHud(float elapsedTime, BlockType bloc) { glMatrixMode(GL_MODELVIEW); glPushMatrix(); + int timer = GetCountdown(elapsedTime); if (m_displayInfo) { DisplayInfo(elapsedTime, bloc); } if (m_displayHud) { - DisplayHud(); + DisplayHud(timer); } if (m_displayCrosshair) { @@ -295,6 +303,16 @@ float Engine::GetScale() const { } int Engine::GetFps(float elapsedTime) const { return 1 / elapsedTime; } +int Engine::GetCountdown(float elapsedTime) { + if (m_resetcountdown) + { + m_countdown = m_time + COUNTDOWN; + m_resetcountdown = false; + } + if(!m_stopcountdown) + m_time += elapsedTime; + return m_countdown - (int)m_time; +} void Engine::Render(float elapsedTime) { //static float gameTime = elapsedTime; @@ -424,6 +442,8 @@ void Engine::KeyPressEvent(unsigned char key) { break; case 5: // F - Ignorer break; + case 6: // G - Ignorer + break; case 12: // M - Ignorer break; case 7: // H - Ignorer @@ -432,6 +452,8 @@ void Engine::KeyPressEvent(unsigned char key) { break; case 17: // R - Ignorer break; + case 19: // T - Ignorer + break; case 24: // Y - Ignorer break; case 255: // Fn - Ignorer @@ -456,6 +478,10 @@ void Engine::KeyReleaseEvent(unsigned char key) { 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; @@ -473,6 +499,10 @@ void Engine::KeyReleaseEvent(unsigned char key) { 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; diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index e96a931..0d7156f 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -35,12 +35,13 @@ private: float GetScale() const; int GetFps(float elapsedTime) const; + int GetCountdown(float elapsedTime); bool LoadTexture(Texture& texture, const std::string& filename, bool useMipmaps = true, bool stopOnError = true); void DisplayCrosshair(); void DisplayCurrentItem(); - void DisplayHud(); + void DisplayHud(int timer); void DisplayInfo(float elapsedTime, BlockType bloc); void DrawHud(float elapsedTime, BlockType bloc); void PrintText(float x, float y, float scale, const std::string& t); @@ -67,8 +68,10 @@ private: Bullet* m_bullets[MAX_BULLETS]; float m_scale; + float m_time = 0; int m_renderCount = 0; + int m_countdown = COUNTDOWN; bool m_wireframe = false; bool m_isSkybox = true; @@ -77,6 +80,8 @@ private: bool m_displayCrosshair = true; bool m_displayHud = true; bool m_displayInfo = false; + bool m_resetcountdown = false; + bool m_stopcountdown = false; bool m_keyW = false; bool m_keyA = false;