Compare commits

..

12 Commits

Author SHA1 Message Date
Jonathan Trottier
54e2f32aba comments 2023-10-02 15:58:08 -04:00
Jonathan Trottier
90fdc8ed1b deux méthodes pour afficher message systeme et notification de kill 2023-10-02 15:55:45 -04:00
Claudel-D-Roy
f0912614a4 Merge branch 'master' of https://github.com/CegepSTH/SQCSim2023 2023-09-25 16:05:52 -04:00
Claudel-D-Roy
421632a0d7 Booster Image 2023-09-25 16:05:41 -04:00
Jonathan Trottier
15d3864e4a Merge pull request #4 from CegepSTH/sqc10_compte_à_rebours
ajout countdown + display
ainsi que le bouton stop() avec g
et reset() avec t
2023-09-25 15:40:05 -04:00
Frederic Leger
47d7fbfc27 shutdown sur fin countdown 2023-09-25 15:38:37 -04:00
Claudel-D-Roy
1a215c823b Merge branch 'master' of https://github.com/CegepSTH/SQCSim2023 2023-09-24 13:11:31 -04:00
Claudel-D-Roy
9a0f162f33 Dessin pour animation de l'autre joueur 2023-09-24 13:11:28 -04:00
Frederic Leger
703b432fb7 ajout countdown + display
t = reset countdown
g = stop countdown
2023-09-23 17:15:35 -04:00
Frederic Leger
9aa426b804 Merge pull request #3 from CegepSTH/HUD
Hud
2023-09-18 16:53:01 -04:00
MarcEricMartel
cf75843117 Merge pull request #2 from CegepSTH/escalade_de_bloc
escalade de bloc à évaluer
2023-09-18 15:52:43 -04:00
Jonathan Trottier
0c79d55a84 escalade de bloc à évaluer
l'escalade de bloc est fonctionnelle, mais le jump se fait parfois humainement, d'autre, où le jump se fait plus horizontalement que verticalement
2023-09-16 20:34:28 -04:00
109 changed files with 196 additions and 7 deletions

View File

@@ -4,6 +4,7 @@
#include <SFML/Window.hpp> #include <SFML/Window.hpp>
#include <SFML/Graphics.hpp> #include <SFML/Graphics.hpp>
#include <iostream> #include <iostream>
#include <iomanip>
#ifdef _WIN32 #ifdef _WIN32
#include <windows.h> #include <windows.h>
@@ -33,6 +34,7 @@
#define VIEW_DISTANCE 256 #define VIEW_DISTANCE 256
#define TEXTURE_SIZE 128 #define TEXTURE_SIZE 128
#define MAX_BULLETS 64 #define MAX_BULLETS 64
#define COUNTDOWN 300
#define BASE_WIDTH 640 #define BASE_WIDTH 640
#define BASE_HEIGHT 480 #define BASE_HEIGHT 480

View File

@@ -4,6 +4,24 @@
#include "transformation.h" #include "transformation.h"
#include "player.h" #include "player.h"
#include <iostream>
#include <chrono>
#include <thread>
#include <queue>
// Define a structure to represent notifications
struct Notification {
std::string message;
float displayStartTime = 0.0f;
};
// Use a queue to manage notifications
//std::queue<Notification> notificationQueue;
// Use a vector to manage notifications
std::vector<Notification> notifications;
Engine::Engine() {} Engine::Engine() {}
Engine::~Engine() { Engine::~Engine() {
@@ -100,6 +118,91 @@ void Engine::LoadResource() {
void Engine::UnloadResource() {} void Engine::UnloadResource() {}
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() {
m_textureFont.Bind();
float scale = GetScale() / 2.0f;
unsigned int xOffset = Width() - Width() * 0.26;
unsigned int yOffset = Height() - (Height() / 2.2);
// Iterate through the notifications and display them
for (auto it = notifications.begin(); it != notifications.end(); ) {
float timeSinceDisplay = m_time - it->displayStartTime;
// Display the notification message with vertical offset
unsigned int y = yOffset - (static_cast<unsigned int>(scale * 20) * (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, scale, 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();
// Check if it's time to remove the notification (display for 2 seconds)
if (timeSinceDisplay >= 4.0f) {
it = notifications.erase(it); // Remove the notification
}
else {
++it;
}
}
}
void Engine::DisplayCrosshair() { void Engine::DisplayCrosshair() {
m_textureCrosshair.Bind(); m_textureCrosshair.Bind();
static const int crossSize = 32; static const int crossSize = 32;
@@ -120,7 +223,7 @@ void Engine::DisplayCrosshair() {
void Engine::DisplayCurrentItem() { void Engine::DisplayCurrentItem() {
} }
void Engine::DisplayHud() { void Engine::DisplayHud(int timer) {
glBindTexture(GL_TEXTURE_2D, 0); glBindTexture(GL_TEXTURE_2D, 0);
glLoadIdentity(); glLoadIdentity();
glDisable(GL_BLEND); glDisable(GL_BLEND);
@@ -186,6 +289,13 @@ void Engine::DisplayHud() {
std::ostringstream ss; std::ostringstream ss;
ss << m_player.GetUsername(); ss << m_player.GetUsername();
PrintText(fPosX, fPosY, scale, ss.str()); 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) { void Engine::DisplayInfo(float elapsedTime, BlockType bloc) {
@@ -240,13 +350,25 @@ void Engine::DrawHud(float elapsedTime, BlockType bloc) {
glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_MODELVIEW);
glPushMatrix(); glPushMatrix();
int timer = GetCountdown(elapsedTime);
// Appel de la fonction pour l'affichage de notifications
if (m_keyK) {
SystemNotification(m_messageNotification);
m_keyK = false;
}
if (m_keyL) {
KillNotification(m_player, m_player);
m_keyL = false;
}
if (m_displayInfo) { if (m_displayInfo) {
DisplayInfo(elapsedTime, bloc); DisplayInfo(elapsedTime, bloc);
} }
if (m_displayHud) { if (m_displayHud) {
DisplayHud(); DisplayHud(timer);
} }
if (m_displayCrosshair) { if (m_displayCrosshair) {
@@ -295,6 +417,18 @@ float Engine::GetScale() const {
} }
int Engine::GetFps(float elapsedTime) const { return 1 / elapsedTime; } 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_countdown < m_time)
Stop();
if(!m_stopcountdown)
m_time += elapsedTime;
return m_countdown - (int)m_time;
}
void Engine::Render(float elapsedTime) { void Engine::Render(float elapsedTime) {
//static float gameTime = elapsedTime; //static float gameTime = elapsedTime;
@@ -373,6 +507,7 @@ void Engine::Render(float elapsedTime) {
if (m_isSkybox) m_skybox.Render(skybox); if (m_isSkybox) m_skybox.Render(skybox);
ProcessNotificationQueue();
DrawHud(elapsedTime, bloc); DrawHud(elapsedTime, bloc);
static bool fell = false; static bool fell = false;
@@ -424,6 +559,15 @@ void Engine::KeyPressEvent(unsigned char key) {
break; break;
case 5: // F - Ignorer case 5: // F - Ignorer
break; break;
case 10: // K - Debugging DisplayNotification()
m_keyK = true;
m_messageNotification = "notifications systeme peuvent <20>tre affich<63>";
break;
case 11: // L - Debugging DisplayNotification()
m_keyL = true;
break;
case 6: // G - Ignorer
break;
case 12: // M - Ignorer case 12: // M - Ignorer
break; break;
case 7: // H - Ignorer case 7: // H - Ignorer
@@ -432,6 +576,8 @@ void Engine::KeyPressEvent(unsigned char key) {
break; break;
case 17: // R - Ignorer case 17: // R - Ignorer
break; break;
case 19: // T - Ignorer
break;
case 24: // Y - Ignorer case 24: // Y - Ignorer
break; break;
case 255: // Fn - Ignorer case 255: // Fn - Ignorer
@@ -456,6 +602,10 @@ void Engine::KeyReleaseEvent(unsigned char key) {
case 5: // F - Toggle flash case 5: // F - Toggle flash
m_flash = !m_flash; m_flash = !m_flash;
break; 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 case 7: // H - Toggle HUD
m_displayHud = !m_displayHud; m_displayHud = !m_displayHud;
std::cout << "DISPLAY HUD " << (m_displayHud ? "enabled" : "disabled") << std::endl; std::cout << "DISPLAY HUD " << (m_displayHud ? "enabled" : "disabled") << std::endl;
@@ -464,6 +614,12 @@ void Engine::KeyReleaseEvent(unsigned char key) {
m_displayInfo = !m_displayInfo; m_displayInfo = !m_displayInfo;
std::cout << "DISPLAY INFO " << (m_displayInfo ? "enabled" : "disabled") << std::endl; std::cout << "DISPLAY INFO " << (m_displayInfo ? "enabled" : "disabled") << std::endl;
break; break;
case 10: // K
m_keyK = false;
break;
case 11: // L - Debugging DisplayNotification()
m_keyL = false;
break;
case 12: // M - Toggle music case 12: // M - Toggle music
m_audio.ToggleMusicState(); m_audio.ToggleMusicState();
break; break;
@@ -473,6 +629,10 @@ void Engine::KeyReleaseEvent(unsigned char key) {
case 18: // S - Stop reculer case 18: // S - Stop reculer
m_keyS = false; m_keyS = false;
break; break;
case 19: // T -Reset countdown
m_resetcountdown = true;
std::cout << "RESET COUNTDOWN" << std::endl;
break;
case 22: // W - Stop avancer case 22: // W - Stop avancer
m_keyW = false; m_keyW = false;
break; break;

View File

@@ -35,12 +35,17 @@ private:
float GetScale() const; float GetScale() const;
int GetFps(float elapsedTime) const; int GetFps(float elapsedTime) const;
int GetCountdown(float elapsedTime);
bool LoadTexture(Texture& texture, const std::string& filename, bool useMipmaps = true, bool stopOnError = true); bool LoadTexture(Texture& texture, const std::string& filename, bool useMipmaps = true, bool stopOnError = true);
void SystemNotification(std::string systemLog);
void KillNotification(Player killer, Player killed);
void DisplayNotification(std::string message);
void ProcessNotificationQueue();
void DisplayCrosshair(); void DisplayCrosshair();
void DisplayCurrentItem(); void DisplayCurrentItem();
void DisplayHud(); void DisplayHud(int timer);
void DisplayInfo(float elapsedTime, BlockType bloc); void DisplayInfo(float elapsedTime, BlockType bloc);
void DrawHud(float elapsedTime, BlockType bloc); void DrawHud(float elapsedTime, BlockType bloc);
void PrintText(float x, float y, float scale, const std::string& t); void PrintText(float x, float y, float scale, const std::string& t);
@@ -63,12 +68,14 @@ private:
irrklang::ISound* m_scream; irrklang::ISound* m_scream;
Player m_player = Player(Vector3f(.5f, CHUNK_SIZE_Y + 1.8f, .5f)); Player m_player = Player(Vector3f(.5f, CHUNK_SIZE_Y + 1.8f, .5f));
Bullet* m_bullets[MAX_BULLETS]; Bullet* m_bullets[MAX_BULLETS];
float m_scale; float m_scale;
float m_time = 0;
int m_renderCount = 0; int m_renderCount = 0;
int m_countdown = COUNTDOWN;
bool m_wireframe = false; bool m_wireframe = false;
bool m_isSkybox = true; bool m_isSkybox = true;
@@ -77,7 +84,11 @@ private:
bool m_displayCrosshair = true; bool m_displayCrosshair = true;
bool m_displayHud = true; bool m_displayHud = true;
bool m_displayInfo = false; bool m_displayInfo = false;
bool m_resetcountdown = false;
bool m_stopcountdown = false;
bool m_keyK = false;
bool m_keyL = false;
bool m_keyW = false; bool m_keyW = false;
bool m_keyA = false; bool m_keyA = false;
bool m_keyS = false; bool m_keyS = false;
@@ -88,6 +99,8 @@ private:
bool m_mouseC = false; bool m_mouseC = false;
bool m_mouseWU = false; bool m_mouseWU = false;
bool m_mouseWD = false; bool m_mouseWD = false;
std::string m_messageNotification = "";
}; };
#endif // ENGINE_H__ #endif // ENGINE_H__

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 370 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 370 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 655 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 658 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 654 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 678 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 473 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 481 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 481 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 688 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 701 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 843 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 874 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 891 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 842 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 874 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 891 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 688 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 701 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 390 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

Some files were not shown because too many files have changed in this diff Show More