Utilisation du widget timer dans l'éditeur
This commit is contained in:
parent
0aa9e86af7
commit
e5d3212a08
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include <unordered_map>
|
||||
#include "level.hpp"
|
||||
#include "util/widget_timer.hpp"
|
||||
|
||||
/**
|
||||
* La classe Editor permet l'édition de
|
||||
|
@ -11,6 +12,7 @@
|
|||
class Editor : public Level {
|
||||
private:
|
||||
std::unordered_map<ObjectPtr, bool> selection;
|
||||
WidgetTimer widget_timer;
|
||||
|
||||
/**
|
||||
* Ajoute un objet du type actuel à la position donnée
|
||||
|
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 301 B |
|
@ -1,9 +1,11 @@
|
|||
#include <cmath>
|
||||
#include <iostream>
|
||||
#include "editor.hpp"
|
||||
#include "block.hpp"
|
||||
#include "constants.hpp"
|
||||
|
||||
Editor::Editor(Manager& manager) : Level(manager) {
|
||||
Editor::Editor(Manager& manager) : Level(manager),
|
||||
widget_timer(manager, std::bind(&Editor::setTotalTime, this, std::placeholders::_1)) {
|
||||
// activation de la synchronisation verticale
|
||||
// car, dans l'éditeur, nous n'avons besoin que de dessiner
|
||||
// (pas de mise à jour physique)
|
||||
|
@ -20,9 +22,15 @@ void Editor::load(std::ifstream& file) {
|
|||
void Editor::frame() {
|
||||
const std::vector<sf::Event>& events = manager.getEvents();
|
||||
|
||||
// traitement des événements
|
||||
for (unsigned int i = 0; i < events.size(); i++) {
|
||||
const sf::Event& event = events[i];
|
||||
|
||||
// traitement des événements du widget timer
|
||||
if (widget_timer.processEvent(event)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// lorsque l'on clique dans l'éditeur
|
||||
if (event.type == sf::Event::MouseButtonPressed) {
|
||||
sf::Vector2f position(event.mouseButton.x, event.mouseButton.y);
|
||||
|
@ -33,25 +41,25 @@ void Editor::frame() {
|
|||
if (!updateSelection(position)) {
|
||||
addObject(position);
|
||||
}
|
||||
}
|
||||
|
||||
if (event.mouseButton.button == sf::Mouse::Right) {
|
||||
} else if (event.mouseButton.button == sf::Mouse::Right) {
|
||||
// clic droit : on supprime l'objet pointé
|
||||
removeObject(position);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// dessin de la frame
|
||||
draw();
|
||||
}
|
||||
|
||||
void Editor::draw() {
|
||||
Level::draw();
|
||||
|
||||
sf::RenderWindow& window = manager.getWindow();
|
||||
sf::View window_view = manager.getWindowView();
|
||||
sf::Color selection_color(255, 50, 41);
|
||||
|
||||
// on dessine des carrés de sélection autour des objets sélectionnés
|
||||
// dessin de la sélection autour des objets sélectionnés
|
||||
for (auto iter = selection.begin(); iter != selection.end(); iter++) {
|
||||
sf::VertexArray selection(sf::LinesStrip, 5);
|
||||
std::unique_ptr<sf::FloatRect> aabb = iter->first->getAABB();
|
||||
|
@ -70,6 +78,10 @@ void Editor::draw() {
|
|||
window.draw(selection);
|
||||
}
|
||||
|
||||
// dessin du widget timer
|
||||
widget_timer.setTimeLeft(getTotalTime());
|
||||
widget_timer.draw(sf::Vector2f(window_view.getSize().x / 2 - 50, 0));
|
||||
|
||||
// menu
|
||||
sf::RectangleShape menu(sf::Vector2f(window_view.getSize().x, 64));
|
||||
menu.setPosition(sf::Vector2f(0, window_view.getSize().y - 64));
|
||||
|
|
Loading…
Reference in New Issue