From 2e2ba7150f243206874918211ff46868995a94c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matt=C3=A9o=20Delabre?= Date: Wed, 6 Apr 2016 15:21:46 +0200 Subject: [PATCH] Police monospace pour le timer, centrage timer, affichage timer sur jeu --- include/game.hpp | 8 ++++ include/util/widget_timer.hpp | 7 ++- res/monoid.ttf | Bin 0 -> 81952 bytes src/editor.cpp | 2 +- src/game.cpp | 11 +++++ src/util/widget_button.cpp | 5 ++- src/util/widget_timer.cpp | 82 ++++++++++++++++++++++------------ 7 files changed, 81 insertions(+), 34 deletions(-) create mode 100644 res/monoid.ttf diff --git a/include/game.hpp b/include/game.hpp index 3e3e0d9..e242a18 100644 --- a/include/game.hpp +++ b/include/game.hpp @@ -10,6 +10,7 @@ */ class Game : public Level { private: + WidgetTimer widget_timer; sf::Time next_frame_time; bool test_mode; std::shared_ptr return_view; @@ -20,6 +21,13 @@ private: */ void update(); +protected: + /** + * Dessine tous les objets, le fond et + * l'interface de jeu + */ + virtual void draw(); + public: Game(Manager& manager); virtual ~Game(); diff --git a/include/util/widget_timer.hpp b/include/util/widget_timer.hpp index e602c74..2417c6f 100644 --- a/include/util/widget_timer.hpp +++ b/include/util/widget_timer.hpp @@ -13,17 +13,20 @@ class WidgetTimer { private: Manager& manager; + bool can_change; std::function time_left_cb; int time_left; sf::RectangleShape timer_zone; - sf::Text timer_text; + sf::Text timer_seconds_text; + sf::Text timer_sep_text; + sf::Text timer_minutes_text; WidgetButton timer_up; WidgetButton timer_down; public: - WidgetTimer(Manager& manager, std::function time_left_cb); + WidgetTimer(Manager& manager, bool can_change, std::function time_left_cb = std::function()); /** * Process l'événement et renvoie true si diff --git a/res/monoid.ttf b/res/monoid.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8034ff64e8f537da04cb8df5c8a78b31e38ee636 GIT binary patch literal 81952 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 QI~^xM;qSHU4t(){07JBk82|tP literal 0 HcmV?d00001 diff --git a/src/editor.cpp b/src/editor.cpp index a310964..d7f338b 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -6,7 +6,7 @@ #include "constants.hpp" Editor::Editor(Manager& manager) : Level(manager), - widget_timer(manager, std::bind(&Editor::setTotalTime, this, std::placeholders::_1)) {} + widget_timer(manager, true, std::bind(&Editor::setTotalTime, this, std::placeholders::_1)) {} Editor::~Editor() {} diff --git a/src/game.cpp b/src/game.cpp index fd1f4e9..f4d821d 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -2,6 +2,7 @@ #include "constants.hpp" Game::Game(Manager& manager) : Level(manager), + widget_timer(manager, false), next_frame_time(manager.getCurrentTime()), test_mode(false), return_view(nullptr) {} @@ -48,6 +49,16 @@ void Game::frame() { } } +void Game::draw() { + Level::draw(); + + sf::View window_view = manager.getWindowView(); + + // dessin du widget + widget_timer.setTimeLeft(getTotalTime()); + widget_timer.draw(sf::Vector2f(window_view.getSize().x / 2 - 50, 0)); +} + void Game::update() { std::vector colliding; diff --git a/src/util/widget_button.cpp b/src/util/widget_button.cpp index 8e763e5..6a16d5c 100644 --- a/src/util/widget_button.cpp +++ b/src/util/widget_button.cpp @@ -4,7 +4,8 @@ const unsigned int WidgetButton::ARROW_UP = 0; const unsigned int WidgetButton::ARROW_DOWN = 1; const sf::Color ARROW_COLOR = sf::Color(33, 33, 33); -const sf::Color CLICKED_COLOR = sf::Color(187, 222, 251); +const sf::Color CLICKED_COLOR = sf::Color(190, 190, 190); +const sf::Color REST_COLOR = sf::Color(230, 230, 230); WidgetButton::WidgetButton( Manager& manager, std::function click_cb, @@ -57,7 +58,7 @@ void WidgetButton::draw(sf::Vector2f position) { } // coloration des boutons si enfoncement - button.setFillColor(sf::Color::Transparent); + button.setFillColor(REST_COLOR); if (sf::Mouse::isButtonPressed(sf::Mouse::Left)) { sf::Vector2f mouse_position = (sf::Vector2f) sf::Mouse::getPosition(window); diff --git a/src/util/widget_timer.cpp b/src/util/widget_timer.cpp index cd869c8..d4fd0c2 100644 --- a/src/util/widget_timer.cpp +++ b/src/util/widget_timer.cpp @@ -1,33 +1,33 @@ #include #include "util/widget_timer.hpp" -/** - * Formattage du temps en m:ss - */ -std::string formatTime(int time) { - std::string minutes = std::to_string(time / 60); - std::string seconds = std::to_string(time % 60); - - // ajout d'un zéro devant les secondes si nécessaire - if (seconds.size() == 1) { - seconds = "0" + seconds; - } - - return minutes + ":" + seconds; -} - -WidgetTimer::WidgetTimer(Manager& manager, std::function time_left_cb) : - manager(manager), time_left_cb(time_left_cb), timer_zone(sf::Vector2f(100, 32)), +WidgetTimer::WidgetTimer(Manager& manager, bool can_change, std::function time_left_cb) : + manager(manager), can_change(can_change), time_left_cb(time_left_cb), + timer_zone(sf::Vector2f(100, 32)), timer_up(manager, std::bind(&WidgetTimer::addTime, this), sf::Vector2f(30, 16), WidgetButton::ARROW_UP), timer_down(manager, std::bind(&WidgetTimer::subtractTime, this), sf::Vector2f(30, 16), WidgetButton::ARROW_DOWN) { // initialisation des formes - timer_text.setFont(manager.getResourceManager().getFont("main_font.ttf")); - timer_text.setCharacterSize(24); - timer_text.setColor(sf::Color::Black); + timer_seconds_text.setFont(manager.getResourceManager().getFont("monoid.ttf")); + timer_seconds_text.setCharacterSize(18); + timer_seconds_text.setColor(sf::Color::Black); + + timer_sep_text.setString(":"); + timer_sep_text.setFont(manager.getResourceManager().getFont("monoid.ttf")); + timer_sep_text.setCharacterSize(18); + timer_sep_text.setColor(sf::Color::Black); + + timer_minutes_text.setFont(manager.getResourceManager().getFont("monoid.ttf")); + timer_minutes_text.setCharacterSize(18); + timer_minutes_text.setColor(sf::Color::Black); } bool WidgetTimer::processEvent(const sf::Event& event) { + // si le timer n'est pas modifiable, pas d'évent à gérer + if (!can_change) { + return false; + } + // gestion des boutons if (timer_up.processEvent(event)) { return true; @@ -51,7 +51,7 @@ bool WidgetTimer::processEvent(const sf::Event& event) { sf::Vector2f position(event.mouseWheelScroll.x, event.mouseWheelScroll.y); if (timer_zone.getGlobalBounds().contains(position)) { - time_left_cb(time_left + round(event.mouseWheelScroll.delta)); + time_left_cb(time_left + round(event.mouseWheelScroll.delta * 10)); return true; } } @@ -67,21 +67,45 @@ void WidgetTimer::draw(sf::Vector2f position) { window.draw(timer_zone); // affichage du temps du niveau - timer_text.setString(formatTime(time_left)); - timer_text.setPosition(position + sf::Vector2f(60 - round(timer_text.getGlobalBounds().width), 0)); - window.draw(timer_text); + sf::String minutes = std::to_string(time_left / 60); + sf::String seconds = std::to_string(time_left % 60); - // affichage des boutons - timer_up.draw(position + sf::Vector2f(70, 0)); - timer_down.draw(position + sf::Vector2f(70, 16)); + // ajout d'un zéro devant les secondes si nécessaire + if (minutes.getSize() == 1) { + minutes = "0" + minutes; + } + + if (seconds.getSize() == 1) { + seconds = "0" + seconds; + } + + timer_minutes_text.setString(minutes); + timer_seconds_text.setString(seconds); + + float base_x = can_change ? 30 : 45; + timer_sep_text.setPosition(position + sf::Vector2f(base_x, 6)); + timer_seconds_text.setPosition(position + sf::Vector2f(base_x + 8, 6)); + timer_minutes_text.setPosition(position + sf::Vector2f( + base_x - 3 - floor(timer_minutes_text.getGlobalBounds().width), 6 + )); + + window.draw(timer_sep_text); + window.draw(timer_seconds_text); + window.draw(timer_minutes_text); + + // interface de modification du temps + if (can_change) { + timer_up.draw(position + sf::Vector2f(70, 0)); + timer_down.draw(position + sf::Vector2f(70, 16)); + } } void WidgetTimer::addTime() { - time_left_cb(time_left + 5); + time_left_cb(time_left + 1); } void WidgetTimer::subtractTime() { - time_left_cb(time_left - 5); + time_left_cb(time_left - 1); } void WidgetTimer::setTimeLeft(int set_time_left) {