Sauvegarde des events pour sous-traitement des vues
This commit is contained in:
parent
388decc3b6
commit
462656e99a
|
@ -15,7 +15,7 @@ private:
|
||||||
sf::Clock clock;
|
sf::Clock clock;
|
||||||
|
|
||||||
ResourceManager resource_manager;
|
ResourceManager resource_manager;
|
||||||
std::array<bool, sf::Keyboard::KeyCount> keys;
|
std::vector<sf::Event> events;
|
||||||
|
|
||||||
std::shared_ptr<View> view;
|
std::shared_ptr<View> view;
|
||||||
|
|
||||||
|
@ -47,6 +47,12 @@ public:
|
||||||
*/
|
*/
|
||||||
ResourceManager& getResourceManager();
|
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
|
* Renvoie un booléen attestant de l'appui sur la
|
||||||
* touche donnée ou non
|
* touche donnée ou non
|
||||||
|
|
|
@ -3,13 +3,12 @@
|
||||||
Manager::Manager() : window(
|
Manager::Manager() : window(
|
||||||
sf::VideoMode(704, 480), "Projet CMI", sf::Style::Default,
|
sf::VideoMode(704, 480), "Projet CMI", sf::Style::Default,
|
||||||
sf::ContextSettings(0, 0, 2)
|
sf::ContextSettings(0, 0, 2)
|
||||||
), view(NULL) {
|
), view(NULL) {}
|
||||||
keys.fill(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Manager::start() {
|
void Manager::start() {
|
||||||
while (window.isOpen()) {
|
while (window.isOpen()) {
|
||||||
sf::Event event;
|
sf::Event event;
|
||||||
|
events.clear();
|
||||||
|
|
||||||
// traitement des évènements reçus
|
// traitement des évènements reçus
|
||||||
while (window.pollEvent(event)) {
|
while (window.pollEvent(event)) {
|
||||||
|
@ -19,21 +18,14 @@ void Manager::start() {
|
||||||
return;
|
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
|
// lorsque la fenêtre est redimensionnée par l'utilisateur
|
||||||
if (event.type == sf::Event::Resized) {
|
if (event.type == sf::Event::Resized) {
|
||||||
// mise à jour de la caméra en fonction de la taille de la fenêtre
|
// 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);
|
sf::FloatRect visibleArea(0, 0, event.size.width, event.size.height);
|
||||||
window.setView(sf::View(visibleArea));
|
window.setView(sf::View(visibleArea));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
events.push_back(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
// demande à la vue de se mettre à jour sur
|
// demande à la vue de se mettre à jour sur
|
||||||
|
@ -62,6 +54,10 @@ ResourceManager& Manager::getResourceManager() {
|
||||||
return resource_manager;
|
return resource_manager;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Manager::isKeyPressed(sf::Keyboard::Key key) const {
|
const std::vector<sf::Event>& Manager::getEvents() {
|
||||||
return keys[key];
|
return events;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Manager::isKeyPressed(sf::Keyboard::Key key) const {
|
||||||
|
return sf::Keyboard::isKeyPressed(key) && window.hasFocus();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue