2016-03-28 15:23:47 +00:00
|
|
|
#include "manager.hpp"
|
|
|
|
|
|
|
|
Manager::Manager() : window(
|
|
|
|
sf::VideoMode(704, 480), "Projet CMI", sf::Style::Default,
|
|
|
|
sf::ContextSettings(0, 0, 2)
|
2016-04-05 15:50:28 +00:00
|
|
|
), view(NULL) {
|
|
|
|
window_view = window.getView();
|
|
|
|
}
|
2016-03-28 15:23:47 +00:00
|
|
|
|
|
|
|
void Manager::start() {
|
|
|
|
while (window.isOpen()) {
|
|
|
|
sf::Event event;
|
2016-04-04 17:53:54 +00:00
|
|
|
events.clear();
|
2016-03-28 15:23:47 +00:00
|
|
|
|
|
|
|
// traitement des évènements reçus
|
|
|
|
while (window.pollEvent(event)) {
|
|
|
|
// fermeture de la fenêtre
|
|
|
|
if (event.type == sf::Event::Closed) {
|
|
|
|
window.close();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2016-04-01 09:01:03 +00:00
|
|
|
// lorsque la fenêtre est redimensionnée par l'utilisateur
|
2016-04-03 10:34:10 +00:00
|
|
|
if (event.type == sf::Event::Resized) {
|
2016-04-01 09:01:03 +00:00
|
|
|
// mise à jour de la caméra en fonction de la taille de la fenêtre
|
|
|
|
sf::FloatRect visibleArea(0, 0, event.size.width, event.size.height);
|
2016-04-05 15:50:28 +00:00
|
|
|
setWindowView(sf::View(visibleArea));
|
2016-04-03 10:34:10 +00:00
|
|
|
}
|
2016-04-04 17:53:54 +00:00
|
|
|
|
|
|
|
events.push_back(event);
|
2016-03-28 15:23:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// demande à la vue de se mettre à jour sur
|
|
|
|
// la prochaine frame
|
|
|
|
if (view == NULL) {
|
|
|
|
throw std::runtime_error("Aucune vue à afficher pour le jeu");
|
|
|
|
}
|
|
|
|
|
2016-03-30 12:02:54 +00:00
|
|
|
view->frame();
|
2016-04-05 15:50:28 +00:00
|
|
|
window.display();
|
2016-03-28 15:23:47 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-03-28 17:57:55 +00:00
|
|
|
void Manager::setView(std::shared_ptr<View> set_view) {
|
|
|
|
view = set_view;
|
|
|
|
}
|
|
|
|
|
2016-03-28 15:23:47 +00:00
|
|
|
sf::RenderWindow& Manager::getWindow() {
|
|
|
|
return window;
|
|
|
|
}
|
|
|
|
|
2016-04-03 18:19:48 +00:00
|
|
|
sf::Time Manager::getCurrentTime() const {
|
|
|
|
return clock.getElapsedTime();
|
2016-03-28 15:23:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
ResourceManager& Manager::getResourceManager() {
|
|
|
|
return resource_manager;
|
|
|
|
}
|
|
|
|
|
2016-04-04 17:53:54 +00:00
|
|
|
const std::vector<sf::Event>& Manager::getEvents() {
|
|
|
|
return events;
|
|
|
|
}
|
|
|
|
|
2016-04-05 15:50:28 +00:00
|
|
|
sf::View Manager::getWindowView() {
|
|
|
|
return window_view;
|
|
|
|
}
|
|
|
|
|
|
|
|
void Manager::setWindowView(sf::View set_window_view) {
|
|
|
|
window.setView(set_window_view);
|
|
|
|
window_view = set_window_view;
|
|
|
|
}
|
|
|
|
|
2016-03-28 15:23:47 +00:00
|
|
|
bool Manager::isKeyPressed(sf::Keyboard::Key key) const {
|
2016-04-04 17:53:54 +00:00
|
|
|
return sf::Keyboard::isKeyPressed(key) && window.hasFocus();
|
2016-03-28 15:23:47 +00:00
|
|
|
}
|