skizzle/src/states/rules.cpp

55 lines
1.6 KiB
C++

#include "manager.hpp"
#include "resource_manager.hpp"
#include "states/rules.hpp"
Rules::Rules(Manager& manager) : State(manager) {
background.setTexture(*ResourceManager::get().getTexture("rules.tga"));
}
Rules::~Rules() {}
void Rules::enable() {
// attributs de la fenêtre
getManager().setTitle(L"Règles");
getManager().getWindow().setFramerateLimit(Manager::FPS);
// joue la musique du menu
ResourceManager::get().playMusic("menu.ogg");
}
void Rules::processEvent(const sf::Event& event) {
// appui sur échap, retour, entrée, espace : on dépile l'état
if (event.type == sf::Event::KeyPressed) {
if (event.key.code == sf::Keyboard::Escape ||
event.key.code == sf::Keyboard::BackSpace ||
event.key.code == sf::Keyboard::Return ||
event.key.code == sf::Keyboard::Space) {
getManager().popState();
}
}
}
void Rules::frame() {
sf::RenderWindow& window = getManager().getWindow();
sf::Vector2f size = (sf::Vector2f) window.getSize();
// on s'assure d'être dans la vue par défaut (pas de zoom, 0x0 en haut gauche)
getManager().useGUIView();
// affichage du fond
window.clear(sf::Color(22, 22, 22));
// on met à l'échelle le fond de telle sorte qu'il soit toujours
// entièrement visible en hauteur
float bg_scale = size.y / 1100;
background.setScale(bg_scale, bg_scale);
background.setPosition(sf::Vector2f(
size.x / 2 - background.getGlobalBounds().width / 2,
size.y / 2 - 720 * bg_scale
));
window.draw(background);
window.display();
}