Gestion du framerate maximal depuis le manager

This commit is contained in:
Mattéo Delabre 2016-04-12 20:11:51 +02:00
parent ca3d36bea8
commit 67074e9050
6 changed files with 45 additions and 17 deletions

View File

@ -14,6 +14,7 @@ class State;
class Manager { class Manager {
private: private:
sf::RenderWindow window; sf::RenderWindow window;
unsigned int framerate;
ResourceManager resource_manager; ResourceManager resource_manager;
sf::Clock clock; sf::Clock clock;
@ -65,6 +66,16 @@ public:
*/ */
sf::RenderWindow& getWindow(); sf::RenderWindow& getWindow();
/**
* Récupère le framerate (maximal) actuel
*/
unsigned int getFramerate();
/**
* Modifie le framerate (maximal) actuel
*/
void setFramerate(unsigned int set_framerate);
/** /**
* Renvoie le temps actuel du jeu * Renvoie le temps actuel du jeu
*/ */

View File

@ -240,10 +240,12 @@ void Editor::processEvent(const sf::Event& event) {
} }
void Editor::frame() { void Editor::frame() {
// titre de la fenêtre // attributs de la fenêtre
getManager().setTitle(sf::String(L"Édition de ") + getName()); getManager().setTitle(sf::String(L"Édition de ") + getName());
getManager().setFramerate(Manager::FPS);
// joue la musique de l'éditeur
getResourceManager().playMusic("editor.ogg"); getResourceManager().playMusic("editor.ogg");
getWindow().setFramerateLimit(Manager::FPS);
// dessin de la frame // dessin de la frame
draw(); draw();

View File

@ -35,9 +35,9 @@ void Game::processEvent(const sf::Event& event) {
} }
void Game::frame() { void Game::frame() {
// titre de la fenêtre // attributs de la fenêtre
getManager().setTitle(getName()); getManager().setTitle(getName());
getWindow().setFramerateLimit(0); getManager().setFramerate(0);
// si musique il y a, on la joue // si musique il y a, on la joue
if (getMusic() != "") { if (getMusic() != "") {

View File

@ -71,6 +71,18 @@ sf::RenderWindow& Manager::getWindow() {
return window; return window;
} }
unsigned int Manager::getFramerate() {
return framerate;
}
void Manager::setFramerate(unsigned int set_framerate) {
// on ne modifie le framerate maximal que s'il a changé
if (set_framerate != framerate) {
window.setFramerateLimit(set_framerate);
framerate = set_framerate;
}
}
sf::Time Manager::getCurrentTime() const { sf::Time Manager::getCurrentTime() const {
return clock.getElapsedTime(); return clock.getElapsedTime();
} }
@ -88,16 +100,15 @@ sf::String Manager::getTitle() {
} }
void Manager::setTitle(sf::String set_title) { void Manager::setTitle(sf::String set_title) {
if (title == set_title) { if (title != set_title) {
return; title = set_title;
}
title = set_title; // màj du titre selon le titre donné par l'état
if (title.isEmpty()) {
if (title.isEmpty()) { window.setTitle(sf::String(L"Skizzle"));
window.setTitle(sf::String(L"Skizzle")); } else {
} else { window.setTitle(sf::String(L"Skizzle ") + title);
window.setTitle(sf::String(L"Skizzle ") + title); }
} }
} }

View File

@ -71,10 +71,12 @@ void Menu::processEvent(const sf::Event& event) {
} }
void Menu::frame() { void Menu::frame() {
// titre de la fenêtre // attributsde la fenêtre
getManager().setTitle(""); getManager().setTitle("");
getManager().setFramerate(Manager::FPS);
// joue la musique du menu
getResourceManager().playMusic("menu.ogg"); getResourceManager().playMusic("menu.ogg");
getWindow().setFramerateLimit(Manager::FPS);
// affichage du menu // affichage du menu
sf::RenderWindow& window = getWindow(); sf::RenderWindow& window = getWindow();

View File

@ -24,10 +24,12 @@ void Rules::frame() {
sf::RenderWindow& window = getWindow(); sf::RenderWindow& window = getWindow();
sf::Vector2f size = (sf::Vector2f) window.getSize(); sf::Vector2f size = (sf::Vector2f) window.getSize();
// titre de la fenêtre // attributs de la fenêtre
getManager().setTitle(L"Règles"); getManager().setTitle(L"Règles");
getManager().setFramerate(Manager::FPS);
// joue la musique du menu
getResourceManager().playMusic("menu.ogg"); getResourceManager().playMusic("menu.ogg");
getWindow().setFramerateLimit(Manager::FPS);
// on s'assure d'être dans la vue par défaut (pas de zoom, 0x0 en haut gauche) // on s'assure d'être dans la vue par défaut (pas de zoom, 0x0 en haut gauche)
getManager().useGUIView(); getManager().useGUIView();