This repository has been archived on 2024-01-18. You can view files and clone it, but cannot push or open issues or pull requests.
DamesEtCo/src/Ecran.cpp

76 lines
1.8 KiB
C++
Raw Normal View History

2023-11-24 20:13:20 +01:00
#include "../includes/Ecran.hpp"
2023-12-30 22:52:38 +01:00
#include <iomanip>
#include <iostream>
2023-12-01 16:36:50 +01:00
sf::RenderWindow Ecran::window;
std::string Ecran::message = "";
2023-12-30 22:52:38 +01:00
bool Ecran::fps = false;
Ecran::Ecran(const uint w, const uint h, const std::string n, const bool pf) {
2023-11-24 20:13:20 +01:00
// Création de la fenêtre SFML
2023-12-28 18:01:28 +01:00
window.create(sf::VideoMode(w, h + bottomTxtPadding), n,
sf::Style::Titlebar | sf::Style::Close);
2023-12-30 22:52:38 +01:00
fps = pf;
2023-11-24 20:13:20 +01:00
}
Ecran::~Ecran() {}
void Ecran::afficher(
const std::function<void()> dessin,
2023-12-28 00:30:44 +01:00
const std::function<void(const int, const int)> onLeftClick) const {
2023-12-28 17:09:00 +01:00
sf::Font font;
font.loadFromFile("assets/open-sans-latin-400-normal.ttf");
sf::Text text;
text.setFont(font);
text.setCharacterSize(24);
2023-12-28 18:01:28 +01:00
text.setPosition(3, hauteur());
2023-12-28 17:09:00 +01:00
text.setFillColor(sf::Color::White);
2023-12-30 22:52:38 +01:00
sf::Clock fpsClock;
sf::Clock printFpsclock;
2023-11-24 20:13:20 +01:00
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
2023-12-28 00:30:44 +01:00
// Fermeture de la fenêtre
2023-11-24 20:13:20 +01:00
if (event.type == sf::Event::Closed) {
window.close();
}
2023-12-28 00:30:44 +01:00
// Récupération des coordonnées du clic de souris
if (event.type == sf::Event::MouseButtonPressed &&
event.mouseButton.button == sf::Mouse::Left) {
2023-12-28 00:30:44 +01:00
onLeftClick(event.mouseButton.x, event.mouseButton.y);
}
}
2023-12-28 00:28:34 +01:00
window.clear();
2023-12-28 00:27:29 +01:00
// Appel d'une fonction dessin
dessin();
2023-12-28 17:09:00 +01:00
// Ecriture du message
text.setString(message);
window.draw(text);
2023-11-24 20:13:20 +01:00
window.display();
2023-12-30 22:52:38 +01:00
// Affichage des FPS
if (fps) {
float currentTime = fpsClock.restart().asSeconds();
// Toutes les 2 secondes
if (printFpsclock.getElapsedTime().asSeconds() >= 2.f) {
std::cout << " " << std::fixed << std::setprecision(2)
<< 1.f / currentTime << std::endl;
printFpsclock.restart();
}
}
2023-11-24 20:13:20 +01:00
}
}