Renommage ::View => State pour éviter les confusions

This commit is contained in:
Mattéo Delabre 2016-04-09 15:53:12 +02:00
parent affcc09abb
commit 0688a2d501
13 changed files with 71 additions and 74 deletions

View File

@ -84,13 +84,13 @@ public:
virtual ~Editor(); virtual ~Editor();
/** /**
* Appelé par le manager lorsque la vue commence à * Appelé par le manager lorsque l'état commence à
* être utilisée * être utilisée
*/ */
virtual void begin(); virtual void begin();
/** /**
* Demande le passage à la frame suivante sur cette vue * Demande le passage à la frame suivante sur cet état
*/ */
virtual void frame(const std::vector<sf::Event>& events); virtual void frame(const std::vector<sf::Event>& events);
}; };

View File

@ -13,7 +13,7 @@ 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<View> return_view; std::shared_ptr<State> return_state;
/** /**
* Met à jour les objets du jeu pour * Met à jour les objets du jeu pour
@ -43,13 +43,12 @@ public:
virtual ~Game(); virtual ~Game();
/** /**
* Appelé par le manager lorsque la vue commence à * Appelé par le manager lorsque le jeu commence
* être utilisée
*/ */
virtual void begin(); virtual void begin();
/** /**
* Demande le passage à la frame suivante sur cette vue * Demande le passage à la frame suivante du jeu
*/ */
virtual void frame(const std::vector<sf::Event>& events); virtual void frame(const std::vector<sf::Event>& events);
@ -57,7 +56,7 @@ public:
* 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<View> set_return_view); void setTestMode(std::shared_ptr<State> set_return_state);
}; };
#endif #endif

View File

@ -1,9 +1,9 @@
#ifndef __PTF_OBJECT_VIEW_HPP__ #ifndef __PTF_LEVEL_HPP__
#define __PTF_OBJECT_VIEW_HPP__ #define __PTF_LEVEL_HPP__
#include <fstream> #include <fstream>
#include <vector> #include <vector>
#include "view.hpp" #include "state.hpp"
#include "object.hpp" #include "object.hpp"
#include "manager.hpp" #include "manager.hpp"
#include "resource_manager.hpp" #include "resource_manager.hpp"
@ -14,9 +14,9 @@ enum class GravityDirection {NORTH, EAST, SOUTH, WEST};
/** /**
* La classe Level est une abstraction des * La classe Level est une abstraction des
* classes affichant une collection d'objets, comme * classes affichant une collection d'objets, comme
* les classe de l'éditeur et du jeu * les classes de l'éditeur et du jeu
*/ */
class Level : public View { class Level : public State {
private: private:
sf::View camera; sf::View camera;
sf::String name; sf::String name;
@ -67,13 +67,12 @@ public:
virtual void save(); virtual void save();
/** /**
* Appelé par le manager lorsque la vue commence à * Appelé par le manager lorsque l'état commence à être utilisé
* être utilisée
*/ */
virtual void begin(); virtual void begin();
/** /**
* Demande le passage à la frame suivante sur cette vue * Demande le passage à la frame suivante sur cet état
*/ */
virtual void frame(const std::vector<sf::Event>& events); virtual void frame(const std::vector<sf::Event>& events);

View File

@ -2,11 +2,11 @@
#define __PTF_MANAGER_HPP__ #define __PTF_MANAGER_HPP__
#include "resource_manager.hpp" #include "resource_manager.hpp"
#include "view.hpp" #include "state.hpp"
#include <memory> #include <memory>
/** /**
* Gestionnaire principal de toutes les vues et * Gestionnaire principal de tous les états, vues et
* ressources du jeu * ressources du jeu
*/ */
class Manager { class Manager {
@ -19,8 +19,8 @@ private:
ResourceManager resource_manager; ResourceManager resource_manager;
std::vector<sf::Event> events; std::vector<sf::Event> events;
std::shared_ptr<View> view; std::shared_ptr<State> state;
std::shared_ptr<View> next_view; std::shared_ptr<State> next_state;
bool running; bool running;
@ -38,14 +38,14 @@ public:
void quit(); void quit();
/** /**
* Renvoie la vue actuelle du jeu * Renvoie l'état actuel du jeu
*/ */
std::shared_ptr<View> getView(); std::shared_ptr<State> getState();
/** /**
* Charge la vue donnée dans le jeu * Charge l'état donné dans le jeu
*/ */
void setView(std::shared_ptr<View> set_view); void setState(std::shared_ptr<State> set_state);
/** /**
* Renvoie la fenêtre actuellement utilisée pour le dessin * Renvoie la fenêtre actuellement utilisée pour le dessin

View File

@ -2,7 +2,7 @@
#define __PTF_MENU_HPP__ #define __PTF_MENU_HPP__
#include "manager.hpp" #include "manager.hpp"
#include "view.hpp" #include "state.hpp"
#include <functional> #include <functional>
#include <vector> #include <vector>
@ -11,7 +11,7 @@
* et permet de choisir entre jouer, lire les règles * et permet de choisir entre jouer, lire les règles
* et quitter. * et quitter.
*/ */
class Menu : public View { class Menu : public State {
private: private:
std::vector<sf::String> choices; std::vector<sf::String> choices;
std::vector<sf::Text> labels; std::vector<sf::Text> labels;
@ -49,13 +49,12 @@ public:
virtual ~Menu(); virtual ~Menu();
/** /**
* Appelé par le manager lorsque la vue commence à * Appelé par le manager lorsque le menu est affiché
* être utilisée
*/ */
virtual void begin(); virtual void begin();
/** /**
* Dessine le menu * Dessine la prochaine frame du menu
*/ */
virtual void frame(const std::vector<sf::Event>& events); virtual void frame(const std::vector<sf::Event>& events);

View File

@ -1,5 +1,5 @@
#ifndef __PTF_VIEW_HPP__ #ifndef __PTF_STATE_HPP__
#define __PTF_VIEW_HPP__ #define __PTF_STATE_HPP__
#include <SFML/Graphics.hpp> #include <SFML/Graphics.hpp>
@ -8,9 +8,9 @@ class Manager;
class Object; class Object;
/** /**
* Classe abstraite pour les vues * Classe abstraite pour les états de jeu
*/ */
class View { class State {
private: private:
Manager& manager; Manager& manager;
@ -21,17 +21,17 @@ protected:
virtual void processEvent(const sf::Event& event) = 0; virtual void processEvent(const sf::Event& event) = 0;
public: public:
View(Manager& manager); State(Manager& manager);
virtual ~View(); virtual ~State();
/** /**
* Appelé par le manager lorsque la vue commence à * Appelé par le manager lorsque l'état commence à
* être utilisée * être utilisé
*/ */
virtual void begin() = 0; virtual void begin() = 0;
/** /**
* Demande le passage à la frame suivante sur cette vue * Demande le passage à la frame suivante sur cet état
*/ */
virtual void frame(const std::vector<sf::Event>& events); virtual void frame(const std::vector<sf::Event>& events);

View File

@ -378,6 +378,6 @@ void Editor::test() {
} }
// mise en mode test // mise en mode test
game->setTestMode(getManager().getView()); game->setTestMode(getManager().getState());
getManager().setView(game); getManager().setState(game);
} }

View File

@ -8,7 +8,7 @@ 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()),
test_mode(false), return_view(nullptr) {} test_mode(false), return_state(nullptr) {}
Game::~Game() {} Game::~Game() {}
@ -53,7 +53,7 @@ void Game::processEvent(const sf::Event& event) {
// 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.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Space && test_mode) {
test_mode = false; test_mode = false;
getManager().setView(return_view); getManager().setState(return_state);
} }
} }
@ -128,7 +128,7 @@ void Game::update() {
} }
} }
void Game::setTestMode(std::shared_ptr<View> set_return_view) { void Game::setTestMode(std::shared_ptr<State> set_return_state) {
return_view = set_return_view; return_state = set_return_state;
test_mode = true; test_mode = true;
} }

View File

@ -21,7 +21,7 @@ std::map<unsigned int, std::function<ObjectPtr(std::ifstream&)>> object_type_map
{GravityBlock::TYPE_ID, GravityBlock::load} {GravityBlock::TYPE_ID, GravityBlock::load}
}; };
Level::Level(Manager& manager) : View(manager), gravity(0, GRAVITY) {} Level::Level(Manager& manager) : State(manager), gravity(0, GRAVITY) {}
Level::~Level() {} Level::~Level() {}
void Level::load(std::ifstream& file) { void Level::load(std::ifstream& file) {
@ -128,7 +128,7 @@ void Level::begin() {
void Level::frame(const std::vector<sf::Event>& events) { void Level::frame(const std::vector<sf::Event>& events) {
// traitement des événements // traitement des événements
View::frame(events); State::frame(events);
} }
void Level::processEvent(const sf::Event& event) { void Level::processEvent(const sf::Event& event) {

View File

@ -12,7 +12,7 @@ int main() {
std::shared_ptr<Editor> editor = std::shared_ptr<Editor>(new Editor(manager)); std::shared_ptr<Editor> editor = std::shared_ptr<Editor>(new Editor(manager));
try { try {
manager.setView(menu); manager.setState(menu);
manager.start(); manager.start();
} catch (const std::exception& exception) { } catch (const std::exception& exception) {
std::cerr << "Le programme a quitté après une erreur d'exécution." << std::endl; std::cerr << "Le programme a quitté après une erreur d'exécution." << std::endl;

View File

@ -4,7 +4,7 @@ Manager::Manager() : window(
sf::VideoMode(704, 480), "Skizzle", sf::Style::Default, sf::VideoMode(704, 480), "Skizzle", sf::Style::Default,
sf::ContextSettings(0, 0, 2) sf::ContextSettings(0, 0, 2)
), default_view(window.getDefaultView()), title(sf::String(L"")), ), default_view(window.getDefaultView()), title(sf::String(L"")),
view(NULL), next_view(NULL), running(false) {} state(NULL), next_state(NULL), running(false) {}
void Manager::start() { void Manager::start() {
running = true; running = true;
@ -13,11 +13,11 @@ void Manager::start() {
sf::Event event; sf::Event event;
std::vector<sf::Event> events; std::vector<sf::Event> events;
// si un changement de vue a été demandé, on l'effectue maintenant // si un changement d'état a été demandé, on l'effectue maintenant
if (next_view != nullptr) { if (next_state != nullptr) {
view = next_view; state = next_state;
next_view->begin(); next_state->begin();
next_view = nullptr; next_state = nullptr;
} }
// traitement des évènements reçus // traitement des évènements reçus
@ -37,13 +37,13 @@ void Manager::start() {
events.push_back(event); events.push_back(event);
} }
// demande à la vue de se mettre à jour sur // demande à l'état de se mettre à jour sur
// la prochaine frame // la prochaine frame
if (view == NULL) { if (state == NULL) {
throw std::runtime_error("Aucune vue à afficher pour le jeu"); throw std::runtime_error("Aucune état à afficher pour le jeu");
} }
view->frame(events); state->frame(events);
window.display(); window.display();
} }
} }
@ -52,14 +52,14 @@ void Manager::quit() {
running = false; running = false;
} }
std::shared_ptr<View> Manager::getView() { std::shared_ptr<State> Manager::getState() {
return view; return state;
} }
void Manager::setView(std::shared_ptr<View> set_view) { void Manager::setState(std::shared_ptr<State> set_state) {
// on ne change pas immédiatement la vue, on attend // on ne change pas immédiatement l'état, on attend
// la prochaine frame pour éviter toute erreur de segmentation // la prochaine frame pour éviter toute erreur de segmentation
next_view = set_view; next_state = set_state;
} }
sf::RenderWindow& Manager::getWindow() { sf::RenderWindow& Manager::getWindow() {

View File

@ -5,7 +5,7 @@
const float MAX_WIDTH_PROPORTION = 1.f / 3.f; const float MAX_WIDTH_PROPORTION = 1.f / 3.f;
Menu::Menu(Manager& manager) : View(manager) {} Menu::Menu(Manager& manager) : State(manager) {}
Menu::~Menu() {} Menu::~Menu() {}
void Menu::begin() { void Menu::begin() {
@ -20,7 +20,7 @@ void Menu::begin() {
void Menu::frame(const std::vector<sf::Event>& events) { void Menu::frame(const std::vector<sf::Event>& events) {
// traitement des événements // traitement des événements
View::frame(events); State::frame(events);
// titre de la fenêtitre // titre de la fenêtitre
getManager().setTitle(""); getManager().setTitle("");
@ -164,8 +164,8 @@ void Menu::loadRules() {
} }
void Menu::launchEditor() { void Menu::launchEditor() {
std::shared_ptr<View> editor = std::shared_ptr<View>(new Editor(getManager())); std::shared_ptr<Editor> editor = std::shared_ptr<Editor>(new Editor(getManager()));
getManager().setView(editor); getManager().setState(editor);
} }
void Menu::launchGame(std::string name) { void Menu::launchGame(std::string name) {
@ -177,7 +177,7 @@ void Menu::launchGame(std::string name) {
game->load(file); game->load(file);
file.close(); file.close();
getManager().setView(game); getManager().setState(game);
} }
void Menu::quit() { void Menu::quit() {

View File

@ -1,29 +1,29 @@
#include "view.hpp" #include "state.hpp"
#include "manager.hpp" #include "manager.hpp"
View::View(Manager& manager) : manager(manager) {} State::State(Manager& manager) : manager(manager) {}
View::~View() {} State::~State() {}
void View::frame(const std::vector<sf::Event>& events) { void State::frame(const std::vector<sf::Event>& events) {
// traitement des événements // traitement des événements
for (unsigned int i = 0; i < events.size(); i++) { for (unsigned int i = 0; i < events.size(); i++) {
processEvent(events[i]); processEvent(events[i]);
} }
} }
Manager& View::getManager() { Manager& State::getManager() {
return manager; return manager;
} }
// raccourcis vers des méthodes du gestionnaire // raccourcis vers des méthodes du gestionnaire
ResourceManager& View::getResourceManager() { ResourceManager& State::getResourceManager() {
return manager.getResourceManager(); return manager.getResourceManager();
} }
sf::RenderWindow& View::getWindow() { sf::RenderWindow& State::getWindow() {
return manager.getWindow(); return manager.getWindow();
} }
bool View::isKeyPressed(sf::Keyboard::Key key) const { bool State::isKeyPressed(sf::Keyboard::Key key) const {
return manager.isKeyPressed(key); return manager.isKeyPressed(key);
} }