From 8b448f507230521b054d648dca712e27aa41d09a Mon Sep 17 00:00:00 2001 From: mduval76 <9343789@etu.cegepsth.qc.ca> Date: Sun, 3 Dec 2023 00:47:04 -0500 Subject: [PATCH] Push pre-gamestate Pause --- SQCSim2021/engine.cpp | 106 +++++++++++++++++++++++------------------- SQCSim2021/engine.h | 1 + 2 files changed, 58 insertions(+), 49 deletions(-) diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index c45f0ee..e040e15 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -55,9 +55,8 @@ void Engine::Init() { glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBlendEquation(GL_FUNC_SUBTRACT); - if (m_istarted) { + if (m_istarted) return; - } else m_istarted = true; // Objet de skybox avec sa propre texture et son propre shader! @@ -71,52 +70,52 @@ void Engine::Init() { m_whoosh[x] = nullptr; } - //char* ch = new char[2]; + char* ch = new char[2]; - //std::cout << "Jouer en ligne? [o/N] "; - //std::cin.getline(ch, 2); - //std::cout << std::endl; + 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; + 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; + 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); + 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); + 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; + 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); @@ -126,9 +125,6 @@ void Engine::Init() { 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() {} @@ -278,6 +274,11 @@ void Engine::Render(float elapsedTime) { return; } + if (m_gamestate == GameState::PAUSE) { + DisplayPauseMenu(); + return; + } + if (m_gamestate == GameState::PLAY) { HideCursor(); CenterMouse(); //D�placement de centermouse dans l'action de jouer @@ -942,16 +943,23 @@ void Engine::DisplaySplashScreen() { glTexCoord2f(0, 1); glVertex2i(-imageWidth / 2, imageHeight / 2); glEnd(); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glBlendEquation(GL_FUNC_ADD); - glEnable(GL_BLEND); - glMatrixMode(GL_PROJECTION); glPopMatrix(); glMatrixMode(GL_MODELVIEW); glPopMatrix(); } +void Engine::DisplayPauseMenu() { + + 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(); +} + void Engine::DisplayMainMenu() { GLint viewport[4]; glGetIntegerv(GL_VIEWPORT, viewport); diff --git a/SQCSim2021/engine.h b/SQCSim2021/engine.h index 5b3ab48..aff6ebd 100644 --- a/SQCSim2021/engine.h +++ b/SQCSim2021/engine.h @@ -61,6 +61,7 @@ private: void DisplayInfo(float elapsedTime, BlockType bloc); void DisplaySplashScreen(); + void DisplayPauseMenu(); void DisplayMainMenu(); void DrawButtonBackgrounds(float centerX, float centerY, int iterations);