Différents modes de jeu
This commit is contained in:
parent
7b51972823
commit
76f9b3e081
|
@ -9,11 +9,18 @@
|
||||||
* d'une partie de jeu
|
* d'une partie de jeu
|
||||||
*/
|
*/
|
||||||
class Game : public Level {
|
class Game : public Level {
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* Les différents modes de jeu
|
||||||
|
*/
|
||||||
|
enum class Mode {NORMAL, PAUSED, WON, LOST};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
WidgetTimer widget_timer;
|
WidgetTimer widget_timer;
|
||||||
sf::Time next_frame_time;
|
sf::Time next_frame_time;
|
||||||
bool test_mode;
|
bool test_mode;
|
||||||
std::shared_ptr<State> return_state;
|
std::shared_ptr<State> return_state;
|
||||||
|
Mode mode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Met à jour les objets du jeu pour
|
* Met à jour les objets du jeu pour
|
||||||
|
@ -52,11 +59,26 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void frame();
|
virtual void frame();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère si on est en mode test ou pas
|
||||||
|
*/
|
||||||
|
bool getTestMode();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mise en mode test : l'appui sur espace renvoie
|
* Mise en mode test : l'appui sur espace renvoie
|
||||||
* vers l'éditeur donné
|
* vers l'éditeur donné
|
||||||
*/
|
*/
|
||||||
void setTestMode(std::shared_ptr<State> set_return_state);
|
void setTestMode(std::shared_ptr<State> set_return_state);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère le mode actuel de jeu
|
||||||
|
*/
|
||||||
|
Mode getMode();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Modifie le mode actuel de jeu
|
||||||
|
*/
|
||||||
|
void setMode(Mode set_mode);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Binary file not shown.
Binary file not shown.
38
src/game.cpp
38
src/game.cpp
|
@ -3,8 +3,6 @@
|
||||||
#include "player.hpp"
|
#include "player.hpp"
|
||||||
#include "constants.hpp"
|
#include "constants.hpp"
|
||||||
|
|
||||||
const float CAMERA_TOLERANCE_RATIO = 2.f / 3.f;
|
|
||||||
|
|
||||||
Game::Game(Manager& manager) : Level(manager),
|
Game::Game(Manager& manager) : Level(manager),
|
||||||
widget_timer(manager, false),
|
widget_timer(manager, false),
|
||||||
next_frame_time(manager.getCurrentTime()),
|
next_frame_time(manager.getCurrentTime()),
|
||||||
|
@ -14,17 +12,32 @@ Game::~Game() {}
|
||||||
|
|
||||||
void Game::begin() {
|
void Game::begin() {
|
||||||
Level::begin();
|
Level::begin();
|
||||||
|
|
||||||
|
mode = Game::Mode::NORMAL;
|
||||||
getWindow().setFramerateLimit(0);
|
getWindow().setFramerateLimit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Game::processEvent(const sf::Event& event) {
|
void Game::processEvent(const sf::Event& event) {
|
||||||
Level::processEvent(event);
|
Level::processEvent(event);
|
||||||
|
|
||||||
|
if (event.type == sf::Event::KeyPressed) {
|
||||||
// appui sur espace en mode test : retour à l'éditeur
|
// appui sur espace en mode test : retour à l'éditeur
|
||||||
if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Space && test_mode) {
|
if (event.key.code == sf::Keyboard::Space && test_mode) {
|
||||||
test_mode = false;
|
test_mode = false;
|
||||||
|
return_state = nullptr;
|
||||||
|
|
||||||
getManager().setState(return_state);
|
getManager().setState(return_state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// appui sur échap : échange entre le mode pause et normal
|
||||||
|
if (event.key.code == sf::Keyboard::Escape) {
|
||||||
|
if (mode == Game::Mode::NORMAL) {
|
||||||
|
mode = Game::Mode::PAUSED;
|
||||||
|
} else if (mode == Game::Mode::PAUSED) {
|
||||||
|
mode = Game::Mode::NORMAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Game::frame() {
|
void Game::frame() {
|
||||||
|
@ -37,10 +50,13 @@ void Game::frame() {
|
||||||
// on replanifie la prochaine frame
|
// on replanifie la prochaine frame
|
||||||
next_frame_time += Constants::PHYSICS_TIME;
|
next_frame_time += Constants::PHYSICS_TIME;
|
||||||
|
|
||||||
// on met à jour la physique d'un cran temporel
|
// on met à jour la physique d'un cran temporel,
|
||||||
|
// si on est en mode normal
|
||||||
|
if (mode == Game::Mode::NORMAL) {
|
||||||
update();
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
// on s'assure que la caméré soit centrée sur nos joueurs
|
// on s'assure que la caméra soit centrée sur nos joueurs
|
||||||
ensureCentered();
|
ensureCentered();
|
||||||
|
|
||||||
// si on a encore suffisamment de temps, on dessine
|
// si on a encore suffisamment de temps, on dessine
|
||||||
|
@ -125,7 +141,19 @@ void Game::update() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Game::getTestMode() {
|
||||||
|
return test_mode;
|
||||||
|
}
|
||||||
|
|
||||||
void Game::setTestMode(std::shared_ptr<State> set_return_state) {
|
void Game::setTestMode(std::shared_ptr<State> set_return_state) {
|
||||||
return_state = set_return_state;
|
return_state = set_return_state;
|
||||||
test_mode = true;
|
test_mode = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Game::Mode Game::getMode() {
|
||||||
|
return mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Game::setMode(Game::Mode set_mode) {
|
||||||
|
mode = set_mode;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue