skizzle/include/menu.hpp

87 lines
1.6 KiB
C++
Raw Normal View History

#ifndef __SKIZZLE_MENU_HPP__
#define __SKIZZLE_MENU_HPP__
2016-04-06 09:38:13 +00:00
#include "state.hpp"
2016-04-09 00:32:11 +00:00
#include <functional>
2016-04-06 09:38:13 +00:00
#include <vector>
2016-04-20 15:31:13 +00:00
#include <memory>
2016-04-06 09:38:13 +00:00
class Manager;
2016-04-06 09:38:13 +00:00
/**
* La classe Menu charge le menu du jeu
* et permet de choisir entre jouer, lire les règles
* et quitter.
*/
class Menu : public State {
2016-04-09 00:32:11 +00:00
private:
2016-04-09 21:33:05 +00:00
sf::Sprite background;
2016-04-20 15:31:13 +00:00
std::shared_ptr<sf::Font> font;
2016-04-09 21:33:05 +00:00
2016-04-09 00:32:11 +00:00
std::vector<sf::String> choices;
std::vector<sf::Text> labels;
2016-04-09 00:32:11 +00:00
std::vector<std::function<void(void)>> actions;
unsigned int selection;
protected:
/**
* Affiche le menu principal
*/
void loadMainMenu();
/**
* Affiche le menu de choix des niveaux
*/
void loadLevelMenu();
/**
* Affiche le menu de choix des niveaux
*/
void loadEditorMenu();
/**
* Démarre le jeu avec le niveau dont le chemin
* complet absolu est donné en paramètre
*/
void launchGame(std::string path);
/**
* Démarre les règles
*/
void launchRules();
/**
* Démarre l'éditeur avec le niveau dont le chemin
* complet absolu est donné en paramètre, ou bien
* en édition de nouveau niveau
*/
void launchEditor(std::string path);
/**
* Quitte le menu
*/
void quit();
2016-04-06 09:38:13 +00:00
public:
Menu(Manager& manager);
virtual ~Menu();
/**
* Active l'état
*/
virtual void enable();
2016-04-06 09:38:13 +00:00
/**
2016-04-09 21:57:23 +00:00
* Traite l'événement donné
*/
virtual void processEvent(const sf::Event& event);
/**
* Demande le dessin d'une frame
*/
2016-04-09 21:57:23 +00:00
virtual void frame();
2016-04-06 09:38:13 +00:00
};
#endif