Différents modes de jeu
This commit is contained in:
parent
7b51972823
commit
76f9b3e081
|
@ -9,11 +9,18 @@
|
|||
* d'une partie de jeu
|
||||
*/
|
||||
class Game : public Level {
|
||||
public:
|
||||
/**
|
||||
* Les différents modes de jeu
|
||||
*/
|
||||
enum class Mode {NORMAL, PAUSED, WON, LOST};
|
||||
|
||||
private:
|
||||
WidgetTimer widget_timer;
|
||||
sf::Time next_frame_time;
|
||||
bool test_mode;
|
||||
std::shared_ptr<State> return_state;
|
||||
Mode mode;
|
||||
|
||||
/**
|
||||
* Met à jour les objets du jeu pour
|
||||
|
@ -52,11 +59,26 @@ public:
|
|||
*/
|
||||
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
|
||||
* vers l'éditeur donné
|
||||
*/
|
||||
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
|
||||
|
|
Binary file not shown.
Binary file not shown.
38
src/game.cpp
38
src/game.cpp
|
@ -3,8 +3,6 @@
|
|||
#include "player.hpp"
|
||||
#include "constants.hpp"
|
||||
|
||||
const float CAMERA_TOLERANCE_RATIO = 2.f / 3.f;
|
||||
|
||||
Game::Game(Manager& manager) : Level(manager),
|
||||
widget_timer(manager, false),
|
||||
next_frame_time(manager.getCurrentTime()),
|
||||
|
@ -14,17 +12,32 @@ Game::~Game() {}
|
|||
|
||||
void Game::begin() {
|
||||
Level::begin();
|
||||
|
||||
mode = Game::Mode::NORMAL;
|
||||
getWindow().setFramerateLimit(0);
|
||||
}
|
||||
|
||||
void Game::processEvent(const sf::Event& event) {
|
||||
Level::processEvent(event);
|
||||
|
||||
if (event.type == sf::Event::KeyPressed) {
|
||||
// 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;
|
||||
return_state = nullptr;
|
||||
|
||||
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() {
|
||||
|
@ -37,10 +50,13 @@ void Game::frame() {
|
|||
// on replanifie la prochaine frame
|
||||
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();
|
||||
}
|
||||
|
||||
// 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();
|
||||
|
||||
// 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) {
|
||||
return_state = set_return_state;
|
||||
test_mode = true;
|
||||
}
|
||||
|
||||
Game::Mode Game::getMode() {
|
||||
return mode;
|
||||
}
|
||||
|
||||
void Game::setMode(Game::Mode set_mode) {
|
||||
mode = set_mode;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue