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 {
private:
sf::RenderWindow window;
unsigned int framerate;
ResourceManager resource_manager;
sf::Clock clock;
@ -65,6 +66,16 @@ public:
*/
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
*/

View File

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

View File

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

View File

@ -71,6 +71,18 @@ sf::RenderWindow& Manager::getWindow() {
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 {
return clock.getElapsedTime();
}
@ -88,18 +100,17 @@ sf::String Manager::getTitle() {
}
void Manager::setTitle(sf::String set_title) {
if (title == set_title) {
return;
}
if (title != set_title) {
title = set_title;
// màj du titre selon le titre donné par l'état
if (title.isEmpty()) {
window.setTitle(sf::String(L"Skizzle"));
} else {
window.setTitle(sf::String(L"Skizzle ") + title);
}
}
}
bool Manager::isKeyPressed(sf::Keyboard::Key key) const {
return sf::Keyboard::isKeyPressed(key) && window.hasFocus();

View File

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

View File

@ -24,10 +24,12 @@ void Rules::frame() {
sf::RenderWindow& window = getWindow();
sf::Vector2f size = (sf::Vector2f) window.getSize();
// titre de la fenêtre
// attributs de la fenêtre
getManager().setTitle(L"Règles");
getManager().setFramerate(Manager::FPS);
// joue la musique du menu
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)
getManager().useGUIView();