2016-04-03 19:05:27 +00:00
|
|
|
#ifndef __PTF_OBJECT_VIEW_HPP__
|
|
|
|
#define __PTF_OBJECT_VIEW_HPP__
|
|
|
|
|
|
|
|
#include <fstream>
|
|
|
|
#include <vector>
|
|
|
|
#include "view.hpp"
|
|
|
|
#include "object.hpp"
|
|
|
|
#include "manager.hpp"
|
|
|
|
#include "resource_manager.hpp"
|
|
|
|
|
|
|
|
/**
|
|
|
|
* La classe Level est une abstraction des
|
|
|
|
* classes affichant une collection d'objets, comme
|
|
|
|
* les classe de l'éditeur et du jeu
|
|
|
|
*/
|
|
|
|
class Level : public View {
|
|
|
|
private:
|
2016-04-06 12:02:11 +00:00
|
|
|
sf::String name;
|
2016-04-05 18:16:20 +00:00
|
|
|
int total_time;
|
2016-04-03 19:05:27 +00:00
|
|
|
sf::Sprite background;
|
|
|
|
|
|
|
|
std::vector<ObjectPtr> objects;
|
|
|
|
std::vector<std::pair<float, float>> zone;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
/**
|
|
|
|
* Dessine tous les objets et le fond à l'écran
|
|
|
|
*/
|
2016-04-05 15:50:28 +00:00
|
|
|
virtual void draw();
|
2016-04-03 19:05:27 +00:00
|
|
|
|
2016-04-07 22:19:01 +00:00
|
|
|
/**
|
|
|
|
* Traite un événement et renvoie true si le
|
|
|
|
* dessin de la frame doit être interrompu
|
|
|
|
*/
|
|
|
|
virtual bool processEvent(const sf::Event& event) = 0;
|
|
|
|
|
2016-04-03 19:05:27 +00:00
|
|
|
public:
|
|
|
|
Level(Manager& manager);
|
|
|
|
virtual ~Level();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Charge un niveau de jeu depuis le fichier donné
|
|
|
|
*/
|
2016-04-05 18:07:58 +00:00
|
|
|
virtual void load(std::ifstream& file);
|
2016-04-03 19:05:27 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Sauvegarde la configuration actuelle comme un niveau
|
|
|
|
*/
|
2016-04-05 18:07:58 +00:00
|
|
|
virtual void save();
|
2016-04-03 19:05:27 +00:00
|
|
|
|
2016-04-07 22:19:01 +00:00
|
|
|
/**
|
|
|
|
* Demande le passage à la frame suivante sur
|
|
|
|
* cette vue
|
|
|
|
*/
|
|
|
|
virtual bool frame();
|
|
|
|
|
2016-04-03 19:05:27 +00:00
|
|
|
/**
|
|
|
|
* Récupère le nom du niveau
|
|
|
|
*/
|
2016-04-06 12:02:11 +00:00
|
|
|
sf::String getName() const;
|
2016-04-03 19:05:27 +00:00
|
|
|
|
2016-04-05 18:16:20 +00:00
|
|
|
/**
|
|
|
|
* Modifie le nom du niveau
|
|
|
|
*/
|
2016-04-06 12:02:11 +00:00
|
|
|
void setName(sf::String set_name);
|
2016-04-05 18:16:20 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Récupère le temps total alloué pour terminer le niveau
|
|
|
|
*/
|
2016-04-06 12:02:11 +00:00
|
|
|
int getTotalTime() const;
|
2016-04-05 18:16:20 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Modifie le temps total du niveau
|
|
|
|
*/
|
|
|
|
void setTotalTime(int set_total_time);
|
|
|
|
|
2016-04-06 12:02:11 +00:00
|
|
|
/**
|
|
|
|
* Récupère le fond du niveau
|
|
|
|
*/
|
|
|
|
sf::Sprite getBackground() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Modifie le fond du niveau
|
|
|
|
*/
|
|
|
|
void setBackground(sf::Sprite set_background);
|
|
|
|
|
2016-04-03 19:05:27 +00:00
|
|
|
/**
|
|
|
|
* Récupère la liste des objets
|
|
|
|
*/
|
2016-04-04 18:25:17 +00:00
|
|
|
std::vector<ObjectPtr>& getObjects();
|
2016-04-03 19:05:27 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Récupère la zone du niveau
|
|
|
|
*/
|
2016-04-05 18:16:20 +00:00
|
|
|
std::vector<std::pair<float, float>>& getZone();
|
2016-04-07 22:19:01 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Récupère le centre de la vue
|
|
|
|
*/
|
|
|
|
sf::Vector2f getViewCenter();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Modifie le centre de la vue
|
|
|
|
*/
|
|
|
|
void setViewCenter(sf::Vector2f set_view_center);
|
2016-04-03 19:05:27 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|