#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();
}
