Sauvegarde des events pour sous-traitement des vues

This commit is contained in:
Mattéo Delabre 2016-04-04 19:53:54 +02:00
parent 388decc3b6
commit 462656e99a
2 changed files with 17 additions and 15 deletions

View File

@ -15,7 +15,7 @@ private:
sf::Clock clock;
ResourceManager resource_manager;
std::array<bool, sf::Keyboard::KeyCount> keys;
std::vector<sf::Event> events;
std::shared_ptr<View> view;
@ -47,6 +47,12 @@ public:
*/
ResourceManager& getResourceManager();
/**
* Renvoie la liste des événements reçus pour la
* précédente frame
*/
const std::vector<sf::Event>& getEvents();
/**
* Renvoie un booléen attestant de l'appui sur la
* touche donnée ou non

View File

@ -3,13 +3,12 @@
Manager::Manager() : window(
sf::VideoMode(704, 480), "Projet CMI", sf::Style::Default,
sf::ContextSettings(0, 0, 2)
), view(NULL) {
keys.fill(false);
}
), view(NULL) {}
void Manager::start() {
while (window.isOpen()) {
sf::Event event;
events.clear();
// traitement des évènements reçus
while (window.pollEvent(event)) {
@ -19,21 +18,14 @@ void Manager::start() {
return;
}
// suivi de l'enfoncement et du relâchement des touches
if (event.type == sf::Event::KeyPressed) {
keys[event.key.code] = true;
}
if (event.type == sf::Event::KeyReleased) {
keys[event.key.code] = false;
}
// lorsque la fenêtre est redimensionnée par l'utilisateur
if (event.type == sf::Event::Resized) {
// 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);
window.setView(sf::View(visibleArea));
}
events.push_back(event);
}
// demande à la vue de se mettre à jour sur
@ -62,6 +54,10 @@ ResourceManager& Manager::getResourceManager() {
return resource_manager;
}
bool Manager::isKeyPressed(sf::Keyboard::Key key) const {
return keys[key];
const std::vector<sf::Event>& Manager::getEvents() {
return events;
}
bool Manager::isKeyPressed(sf::Keyboard::Key key) const {
return sf::Keyboard::isKeyPressed(key) && window.hasFocus();
}