From d83fdb18fd466fcbed647d476c98f05b74a7e754 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matt=C3=A9o=20Delabre?= Date: Sun, 10 Apr 2016 04:47:02 +0200 Subject: [PATCH] Uniformisation des FPS & constante PHYSICS_TIME => FRAME_TIME --- include/constants.hpp | 20 -------------------- include/manager.hpp | 10 ++++++++++ src/editor.cpp | 2 +- src/game.cpp | 2 +- src/level.cpp | 2 +- src/manager.cpp | 3 +++ src/menu.cpp | 2 +- src/object.cpp | 4 ++-- 8 files changed, 19 insertions(+), 26 deletions(-) diff --git a/include/constants.hpp b/include/constants.hpp index 91ba168..0354af6 100644 --- a/include/constants.hpp +++ b/include/constants.hpp @@ -11,26 +11,6 @@ namespace Constants { */ static const float ATTRACTION = 2000000; - /** - * Constante de déplacement. Définit la quantité de - * mouvement qui est donnée à un objet lorsqu'il - * est manipulé manuellement par le joueur - */ - static const float MOVE = 200; - - /** - * Constante de gravité. Utilisée dans la formule - * pour calculer la force de gravité appliquée - * uniformément vers le bas de la fenêtre sur tous - * les objets - */ - static const float GRAVITY = 235; - - /** - * Durée fixe d'une étape de simulation physique - */ - static const sf::Time PHYSICS_TIME = sf::seconds(1.f / 60); - /** * Correction positionnelle : pourcentage de correction * et seuil de correction diff --git a/include/manager.hpp b/include/manager.hpp index a833bea..cd0a4c7 100644 --- a/include/manager.hpp +++ b/include/manager.hpp @@ -30,6 +30,16 @@ public: */ enum class Modifier {CONTROL, ALT, SHIFT, SYSTEM}; + /** + * Taux maximal de frames par seconde + */ + static const unsigned int FPS; + + /** + * Temps idéal entre deux frames + */ + static const sf::Time FRAME_TIME; + Manager(); /** diff --git a/src/editor.cpp b/src/editor.cpp index dacbae8..a60bd44 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -38,7 +38,7 @@ void Editor::begin() { Level::begin(); getResourceManager().playMusic("editor.ogg"); - getWindow().setFramerateLimit(60); + getWindow().setFramerateLimit(Manager::FPS); } void Editor::processEvent(const sf::Event& event) { diff --git a/src/game.cpp b/src/game.cpp index a2f681b..171b66e 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -48,7 +48,7 @@ void Game::frame() { if (current_time >= next_frame_time) { // si nous sommes en retard ou dans les temps // on replanifie la prochaine frame - next_frame_time += Constants::PHYSICS_TIME; + next_frame_time += Manager::FRAME_TIME; // on met à jour la physique d'un cran temporel, // si on est en mode normal diff --git a/src/level.cpp b/src/level.cpp index 104034a..e89eea8 100644 --- a/src/level.cpp +++ b/src/level.cpp @@ -152,7 +152,7 @@ void Level::draw() { // animation de la rotation de la caméra float goal = std::fmod((float) gravity_direction * 90, 360); float diff = goal - camera_angle; - float speed = diff * Constants::PHYSICS_TIME.asSeconds() * 5; + float speed = diff * Manager::FRAME_TIME.asSeconds() * 5; if (std::abs(diff) < .05f) { camera_angle = goal; diff --git a/src/manager.cpp b/src/manager.cpp index 5500ae5..12e3947 100644 --- a/src/manager.cpp +++ b/src/manager.cpp @@ -1,5 +1,8 @@ #include "manager.hpp" +const unsigned int Manager::FPS = 60; +const sf::Time Manager::FRAME_TIME = sf::seconds(1.f / Manager::FPS); + Manager::Manager() : window( sf::VideoMode(704, 480), "Skizzle", sf::Style::Default, sf::ContextSettings(0, 0, 2) diff --git a/src/menu.cpp b/src/menu.cpp index 73165ab..7c08dbd 100644 --- a/src/menu.cpp +++ b/src/menu.cpp @@ -12,7 +12,7 @@ void Menu::begin() { loadMainMenu(); getResourceManager().playMusic("menu.ogg"); - getWindow().setFramerateLimit(60); + getWindow().setFramerateLimit(Manager::FPS); } void Menu::processEvent(const sf::Event& event) { diff --git a/src/object.cpp b/src/object.cpp index 3f1b17c..5545fe8 100644 --- a/src/object.cpp +++ b/src/object.cpp @@ -131,11 +131,11 @@ sf::Vector2f Object::getForces(const Level& level) const { void Object::updateVelocity(const Level& level) { acceleration = getForces(level) * getMassInvert(); - velocity += acceleration * Constants::PHYSICS_TIME.asSeconds(); + velocity += acceleration * Manager::FRAME_TIME.asSeconds(); } void Object::updatePosition() { - position += velocity * Constants::PHYSICS_TIME.asSeconds(); + position += velocity * Manager::FRAME_TIME.asSeconds(); } bool Object::detectCollision(const Object& obj, CollisionData& data) const {