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