Merge pull request #18 from CegepSTH/L-CSplash

Créé branche_L_C
This commit is contained in:
MarcEricMartel 2023-10-27 12:38:40 -04:00 committed by GitHub
commit 102153a093
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 87 additions and 24 deletions

View File

@ -28,6 +28,56 @@ Engine::~Engine() {
m_world.GetChunks().Get(x, y)->~Chunk();
}
void Engine::DrawSplachScreen()
{
glDisable(GL_LIGHTING);
glDisable(GL_DEPTH_TEST);
glDisable(GL_STENCIL_TEST);
// Définir la matrice de projection en mode orthographique
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(-Width() / 2, Width() / 2, -Height() / 2, Height() / 2, -1, 1);
// Définir la matrice de modèle-vue
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
// L'image sera centrée autour de l'origine (0, 0, 0)
int imageWidth = Width(); // Remplacez par la largeur de votre image
int imageHeight = Height(); // Remplacez par la hauteur de votre image
// Texture
SplachScreenTexture.Bind();
// Dessiner un quadrilatère centré
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();
// Activer la transparence
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBlendEquation(GL_FUNC_ADD);
glEnable(GL_BLEND);
// Restaurer les matrices précédentes
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
}
void Engine::DrawMenu()
{
static const int sTitle = 400;
@ -223,6 +273,8 @@ void Engine::DrawMenu()
}
void Engine::Init() {
GLenum glewErr = glewInit();
if (glewErr != GLEW_OK) {
std::cerr << " ERREUR GLEW : " << glewGetErrorString(glewErr) << std::endl;
@ -298,6 +350,7 @@ void Engine::LoadResource() {
LoadTexture(MenuTitleTexture, MENU_ITEM_PATH "test.png");
LoadTexture(MenuBGTexture, MENU_ITEM_PATH "test.png");
LoadTexture(SplachScreenTexture, TEXTURE_PATH "sc2.png");
LoadTexture(MenuQuitTexture, MENU_ITEM_PATH "BasicQuit.png");
LoadTexture(MenuOptionsTexture, MENU_ITEM_PATH "test.png");
LoadTexture(MenuStartTexture, MENU_ITEM_PATH "BasicPlay.png");
@ -649,7 +702,10 @@ int Engine::GetCountdown(float elapsedTime) {
void Engine::Render(float elapsedTime) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
if (m_gamestate == GameState::PLAY)
m_time_SplashScreen += elapsedTime;
if(m_time_SplashScreen < 2)
DrawSplachScreen();
else if (m_gamestate == GameState::PLAY)
{
HideCursor();
CenterMouse(); //D<>placement de centermouse dans l'action de jouer
@ -684,11 +740,11 @@ 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(), false,.8f);
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(), false,1.f);
break;
default: break;
}
@ -755,7 +811,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(), false,1.f);
fell = true;
}
else if (m_player.GetPosition().y < -20.f) {

View File

@ -25,6 +25,7 @@ public:
Engine();
virtual ~Engine();
virtual void DrawMenu();
virtual void DrawSplachScreen();
virtual void Init();
virtual void DeInit();
virtual void LoadResource();
@ -87,9 +88,13 @@ private:
Texture MenuStartTexture;
Texture MenuQuitTexture;
Texture MenuOptionsTexture;
Texture SplachScreenTexture;
float m_scale;
float m_time = 0;
float m_time_SplashScreen = 0;
float m_Width = 0;
float m_Height = 0;
int m_renderCount = 0;
int m_countdown = COUNTDOWN;

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

View File

@ -9,6 +9,7 @@ OpenglContext::~OpenglContext()
{
}
bool OpenglContext::Start(const std::string& title, int width, int height, bool fullscreen)
{
m_title = title;
@ -22,13 +23,14 @@ bool OpenglContext::Start(const std::string& title, int width, int height, bool
while (m_app.isOpen())
{
clock.restart();
sf::Event Event;
while (m_app.pollEvent(Event))
{
switch(Event.type)
clock.restart();
sf::Event Event;
while (m_app.pollEvent(Event))
{
switch (Event.type)
{
case sf::Event::Closed:
m_app.close();
break;
@ -51,29 +53,29 @@ bool OpenglContext::Start(const std::string& title, int width, int height, bool
MouseReleaseEvent(ConvertMouseButton(Event.mouseButton.button), Event.mouseButton.x, Event.mouseButton.y);
break;
case sf::Event::MouseWheelMoved:
if(Event.mouseWheel.delta > 0)
if (Event.mouseWheel.delta > 0)
MousePressEvent(MOUSE_BUTTON_WHEEL_UP, Event.mouseButton.x, Event.mouseButton.y);
else
MousePressEvent(MOUSE_BUTTON_WHEEL_DOWN, Event.mouseButton.x, Event.mouseButton.y);
break;
default: break;
}
}
}
m_app.setActive();
Render(m_lastFrameTime);
m_app.display();
m_lastFrameTime = clock.getElapsedTime().asSeconds();
// Handle ourself frame rate limit, sf::Window::setFramerateLimit doesn't seems to work
float waitTime = (1.f / m_maxFps) - m_lastFrameTime;
if(waitTime > 0)
{
sf::sleep(sf::seconds(waitTime));
m_app.setActive();
Render(m_lastFrameTime);
m_app.display();
m_lastFrameTime = clock.getElapsedTime().asSeconds();
}
// Handle ourself frame rate limit, sf::Window::setFramerateLimit doesn't seems to work
float waitTime = (1.f / m_maxFps) - m_lastFrameTime;
if (waitTime > 0)
{
sf::sleep(sf::seconds(waitTime));
m_lastFrameTime = clock.getElapsedTime().asSeconds();
}
}
UnloadResource();

View File

@ -4,6 +4,7 @@
#include <string>
#include <SFML/Window.hpp>
#include "define.h"
#include "texture.h"
// Documentation de SFML: http://www.sfml-dev.org/documentation/index-fr.php
class OpenglContext
@ -31,7 +32,6 @@ public:
virtual void MousePressEvent(const MOUSE_BUTTON &button, int x, int y) = 0;
virtual void MouseReleaseEvent(const MOUSE_BUTTON &button, int x, int y) = 0;
bool Start(const std::string& title, int width, int height, bool fullscreen);
bool Stop();