From 2cb7d4c776ba446fb6db9b9fefda4385cb60e000 Mon Sep 17 00:00:00 2001 From: MarcEricMartel Date: Wed, 18 Oct 2023 09:33:56 -0400 Subject: [PATCH] =?UTF-8?q?D=C3=A9but?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQCSim-srv/define.h | 1 + SQCSim-srv/server.cpp | 38 ++++++++++++++++++++++++++++++---- SQCSim-srv/server.h | 1 + SQCSim2021/engine.cpp | 47 ++++++++++++++++++++++++++----------------- 4 files changed, 65 insertions(+), 22 deletions(-) diff --git a/SQCSim-srv/define.h b/SQCSim-srv/define.h index 626a26a..bba3377 100644 --- a/SQCSim-srv/define.h +++ b/SQCSim-srv/define.h @@ -10,6 +10,7 @@ #define MAX_CONNECTIONS 16 #define ID_LIST_SIZE 127 #define BUFFER_LENGTH 150 +#define SRV_MANUAL_SETUP true typedef unsigned char LogDest; enum LOG_DEST { CONSOLE, LOGFILE, LOG_LAST }; diff --git a/SQCSim-srv/server.cpp b/SQCSim-srv/server.cpp index cbda844..b115adf 100644 --- a/SQCSim-srv/server.cpp +++ b/SQCSim-srv/server.cpp @@ -65,6 +65,31 @@ int Server::Init() { } int Server::Ready() { + int nbrjoueurs = 0, + nbrconn = 0; +#ifdef SRV_MANUAL_SETUP + do { + Log("Entrez la durée de la partie: ", false, false); + std::cin >> m_game.countdown; + std::cout << std::endl; + } while (m_game.countdown < 1); + do { + Log("Entrez le seed de la partie: ", false, false); + std::cin >> m_game.seed; + std::cout << std::endl; + } while (m_game.seed < 1); + do { + Log("Entrez le nombre de joueurs: ", false, false); + std::cin >> nbrjoueurs; + std::cout << std::endl; + } while (nbrjoueurs > 0 && nbrjoueurs >= MAX_CONNECTIONS); +#else // setup preconfiguré + m_game.countdown = 360; + m_game.seed = 9370707; + nbrjoueurs = 1; +#endif + m_game.gameType = 1; + if (listen(m_sock_tcp, MAX_CONNECTIONS) < 0) { Log("Écoute sur le port TCP.", true, true); return 1; @@ -79,13 +104,17 @@ int Server::Ready() { buildIdList(ID_LIST_SIZE); - m_game.countdown = 360; - m_game.gameType = 1; - m_game.seed = 9370707; + while (!readystart) { sockaddr_in sockad; + +#ifdef _WIN32 + int addrlen = sizeof(sockad); +#else // maudit que c'est con, ça. unsigned int addrlen = sizeof(sockad); +#endif + SOCKET sock = accept(m_sock_tcp, (sockaddr*)&sockad, &addrlen); if (sock < 0) @@ -127,7 +156,8 @@ int Server::Ready() { Connection* conn = new Connection(sock, sockad, log, play); m_players[log.sid] = conn; - readystart = true; + if (++nbrconn >= nbrjoueurs) + readystart = true; } } } diff --git a/SQCSim-srv/server.h b/SQCSim-srv/server.h index 6c77038..ddaf97b 100644 --- a/SQCSim-srv/server.h +++ b/SQCSim-srv/server.h @@ -34,6 +34,7 @@ private: netprot::GameInfo m_game; World* m_world = nullptr; + const bool m_manual_setup = SRV_MANUAL_SETUP; std::string LogTimestamp(); void Log(std::string str, bool is_error, bool is_fatal); diff --git a/SQCSim2021/engine.cpp b/SQCSim2021/engine.cpp index a5939e6..b5fc361 100644 --- a/SQCSim2021/engine.cpp +++ b/SQCSim2021/engine.cpp @@ -229,6 +229,10 @@ void Engine::Init() { abort(); } + uint64_t seed = SEED; + std::string playname = ""; + char ch; + glDisable(GL_FRAMEBUFFER_SRGB); glEnable(GL_DEPTH_TEST); glEnable(GL_STENCIL_TEST); @@ -258,31 +262,37 @@ void Engine::Init() { // Array pour les balles. for (int x = 0; x < MAX_BULLETS; ++x) { m_bullets[x] = nullptr; - m_whoosh[x] = nullptr; // = m_audio.m_engine.m_audio.m_engine->addSoundSourceFromFile(AUDIO_PATH "noise.ogg", irrklang::ESM_AUTO_DETECT, false); + m_whoosh[x] = nullptr; } - uint64_t seed = SEED; - std::string playname = "La Chienne � Jacques"; - if (NETWORK_TEST) { // Test connexion r�seau. +#ifdef NETWORK_TEST + std::cout << "Jouer en ligne? [o/N] "; + std::cin >> ch; + std::cout << std::endl; + + if (ch == 'o' || ch == 'O') { + std::cout << "Veuillez entrer un nom de joueur: "; + std::getline(std::cin, playname); + std::cout << std::endl; + if (!m_conn.Init()) { if (!m_conn.Connect(SRV_ADDR, playname)) { - // setup jeu en r�seau. - std::cout << "ID re�u du serveur: " << std::to_string(m_conn.getId()) << "!" << std::endl; - std::cout << "Seed re�u du serveur: " << std::to_string(m_conn.getSeed()) << "!" << std::endl; + // 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; seed = m_conn.getSeed(); } else std::cout << "Erreur de connexion." << std::endl; } - else std::cout << "Erreur de cr�ation de socket." << std::endl; + else std::cout << "Erreur de creation de socket." << std::endl; } +#endif m_world.SetSeed(seed); // Init Chunks m_world.GetChunks().Reset(nullptr); - - // Gestion de souris. CenterMouse(); HideCursor(); @@ -461,7 +471,7 @@ void Engine::DisplayHud(int timer) { glVertex2f(fPosX, fPosY); // Haut-Gauche glEnd(); - //TODO: Associer avec m�chanique de vie du joueur + //TODO: Associer avec mechanique de vie du joueur // Barre HP glColor3f(0.0f * facteurOmbrage, 1.0f * facteurOmbrage, 0.0f * facteurOmbrage); @@ -472,7 +482,7 @@ void Engine::DisplayHud(int timer) { glVertex2f(fPosX, fPosY); // Haut-Gauche glEnd(); - // Barre �quip + // Barre equip glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glColor3f(1.0f * facteurOmbrage, 1.0f * facteurOmbrage, 1.0f * facteurOmbrage); @@ -633,6 +643,7 @@ float Engine::GetScale() const { } int Engine::GetFps(float elapsedTime) const { return 1 / elapsedTime; } + int Engine::GetCountdown(float elapsedTime) { if (m_resetcountdown) { @@ -684,16 +695,16 @@ void Engine::Render(float elapsedTime) { 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(), .8f); + m_audio.Create3DAudioObj(step, AUDIO_PATH "step.wav", vstep, m_player.GetVelocity(), .8f, false); leftright = !leftright; break; case Player::Sound::FALL: - m_audio.Create3DAudioObj(step, AUDIO_PATH "hit.wav", m_player.GetPosition(), m_player.GetVelocity(), 1.f); + m_audio.Create3DAudioObj(step, AUDIO_PATH "hit.wav", m_player.GetPosition(), m_player.GetVelocity(), 1.f, false); break; default: break; } - m_audio.Update3DAudio(m_player.GetPOV(), m_player.GetDirection(), m_player.GetVelocity()); // Ajustement du positionnement 3D avec les coordonn�es du joueur et - // son vecteur de v�locit� (pour l'effet Doppler) + 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; } @@ -755,7 +766,7 @@ void Engine::Render(float elapsedTime) { 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(), 1.f); + m_audio.Create3DAudioObj(m_scream, AUDIO_PATH "scream.wav", m_player.GetPOV(), m_player.GetVelocity(), 1.f, false); fell = true; } else if (m_player.GetPosition().y < -20.f) { @@ -813,7 +824,7 @@ void Engine::KeyPressEvent(unsigned char key) { break; case 10: // K - Debugging DisplayNotification() m_keyK = true; - m_messageNotification = "notifications systeme peuvent �tre affich�"; + m_messageNotification = "notifications systeme peuvent etre affichees"; break; case 11: // L - Debugging DisplayNotification() m_keyL = true;