skizzle/include/editor.hpp

64 lines
1.3 KiB
C++
Raw Normal View History

#ifndef __PTF_EDITOR_HPP__
#define __PTF_EDITOR_HPP__
2016-04-03 20:08:11 +00:00
#include <unordered_map>
2016-04-03 20:08:11 +00:00
#include "level.hpp"
#include "util/widget_timer.hpp"
2016-04-03 20:08:11 +00:00
/**
* La classe Editor permet l'édition de
* niveaux du jeu
*/
class Editor : public Level {
private:
2016-04-07 09:22:20 +00:00
std::vector<ObjectPtr> selection;
WidgetTimer widget_timer;
/**
* Ajoute un objet du type actuel à la position donnée
*/
void addObject(sf::Vector2f position);
/**
* Supprime les objets passant par la position donnée
*/
void removeObject(sf::Vector2f position);
/**
* Met à jour la sélection avec la position donnée :
* - si la position correspond à un objet, si cet objet n'est
* pas sélectionné on le sélectionne, sinon on le désélectionne
* - si la sélection est modifiée, renvoie true, sinon false
*/
bool updateSelection(sf::Vector2f position);
/**
* Lance le test du niveau
*/
void testLevel();
protected:
/**
* Dessine tous les objets, le fond et
* l'interface de l'éditeur
*/
virtual void draw();
2016-04-03 20:08:11 +00:00
public:
Editor(Manager& manager);
virtual ~Editor();
/**
* Charge un niveau de jeu depuis le fichier donné
*/
virtual void load(std::ifstream& file);
2016-04-03 20:08:11 +00:00
/**
* Demande le passage à la frame suivante sur
* cette vue
*/
void frame();
};
#endif