109 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
	
#ifndef __PTF_MANAGER_HPP__
 | 
						|
#define __PTF_MANAGER_HPP__
 | 
						|
 | 
						|
#include "resource_manager.hpp"
 | 
						|
#include "state.hpp"
 | 
						|
#include <memory>
 | 
						|
 | 
						|
/**
 | 
						|
 * Gestionnaire principal de tous les états, vues et
 | 
						|
 * ressources du jeu
 | 
						|
 */
 | 
						|
class Manager {
 | 
						|
private:
 | 
						|
    sf::RenderWindow window;
 | 
						|
    ResourceManager resource_manager;
 | 
						|
 | 
						|
    sf::Clock clock;
 | 
						|
    sf::View gui_view;
 | 
						|
    sf::String title;
 | 
						|
 | 
						|
    std::shared_ptr<State> state;
 | 
						|
    std::shared_ptr<State> next_state;
 | 
						|
 | 
						|
    bool running;
 | 
						|
 | 
						|
public:
 | 
						|
    /**
 | 
						|
     * Énumération des modificateurs
 | 
						|
     */
 | 
						|
    enum class Modifier {CONTROL, ALT, SHIFT, SYSTEM};
 | 
						|
 | 
						|
    /**
 | 
						|
     * Taux maximal de frames par seconde
 | 
						|
     */
 | 
						|
    static const unsigned int FPS;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Temps idéal entre deux frames
 | 
						|
     */
 | 
						|
    static const sf::Time FRAME_TIME;
 | 
						|
 | 
						|
    Manager();
 | 
						|
 | 
						|
    /**
 | 
						|
     * Démarre la boucle principale du jeu
 | 
						|
     */
 | 
						|
    void start();
 | 
						|
 | 
						|
    /**
 | 
						|
     * Termine la boucle principale et quitte le jeu
 | 
						|
     */
 | 
						|
    void quit();
 | 
						|
 | 
						|
    /**
 | 
						|
     * Renvoie l'état actuel du jeu
 | 
						|
     */
 | 
						|
    std::shared_ptr<State> getState();
 | 
						|
 | 
						|
    /**
 | 
						|
     * Charge l'état donné dans le jeu
 | 
						|
     */
 | 
						|
    void setState(std::shared_ptr<State> set_state);
 | 
						|
 | 
						|
    /**
 | 
						|
     * Renvoie la fenêtre actuellement utilisée pour le dessin
 | 
						|
     */
 | 
						|
    sf::RenderWindow& getWindow();
 | 
						|
 | 
						|
    /**
 | 
						|
     * Renvoie le temps actuel du jeu
 | 
						|
     */
 | 
						|
    sf::Time getCurrentTime() const;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Renvoie le gestionnaire de ressources
 | 
						|
     */
 | 
						|
    ResourceManager& getResourceManager();
 | 
						|
 | 
						|
    /**
 | 
						|
     * Passage en vue de l'interface
 | 
						|
     * (coin en haut à gauche, zoom 1:1)
 | 
						|
     */
 | 
						|
    void useGUIView();
 | 
						|
 | 
						|
    /**
 | 
						|
     * Renvoie le titre actuel de la fenêtre
 | 
						|
     */
 | 
						|
    sf::String getTitle();
 | 
						|
 | 
						|
    /**
 | 
						|
     * Modifie le titre actuel de la fenêtre
 | 
						|
     */
 | 
						|
    void setTitle(sf::String set_title);
 | 
						|
 | 
						|
    /**
 | 
						|
     * Renvoie un booléen attestant de l'appui sur la
 | 
						|
     * touche donnée ou non
 | 
						|
     */
 | 
						|
    bool isKeyPressed(sf::Keyboard::Key key) const;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Renvoie un booléen attestant de l'appui sur le
 | 
						|
     * modificateur
 | 
						|
     */
 | 
						|
    bool isKeyPressed(Modifier modifier) const;
 | 
						|
};
 | 
						|
 | 
						|
#endif
 |