Correction de l'alignement des règles

This commit is contained in:
Mattéo Delabre 2016-04-11 21:38:12 +02:00
parent 6dc9e706f9
commit 6dbea09bcb
4 changed files with 94 additions and 6 deletions

30
include/rules.hpp Normal file
View File

@ -0,0 +1,30 @@
#ifndef __PTF_RULES_HPP__
#define __PTF_RULES_HPP__
#include "manager.hpp"
#include "state.hpp"
/**
* La classe Rules affiche les règles du jeu
*/
class Rules : public State {
private:
sf::Sprite background;
public:
Rules(Manager& manager);
virtual ~Rules();
/**
* Traite l'événement donné
*/
virtual void processEvent(const sf::Event& event);
/**
* Demande le dessin d'une frame
*/
virtual void frame();
};
#endif

View File

@ -31,8 +31,9 @@ void Game::processEvent(const sf::Event& event) {
getManager().popState(); getManager().popState();
} }
// appui sur échap : échange entre le mode pause et normal // appui sur retour échap : échange entre le mode pause et normal
if (event.key.code == sf::Keyboard::Escape) { if (event.key.code == sf::Keyboard::Escape ||
event.key.code == sf::Keyboard::BackSpace) {
if (getMode() == Game::Mode::NORMAL) { if (getMode() == Game::Mode::NORMAL) {
setMode(Game::Mode::PAUSED); setMode(Game::Mode::PAUSED);
} else if (getMode() == Game::Mode::PAUSED) { } else if (getMode() == Game::Mode::PAUSED) {

View File

@ -37,10 +37,17 @@ void Menu::processEvent(const sf::Event& event) {
} }
} }
// touche entrée : on exécute le choix sélectionné // touche entrée ou espace : on exécute le choix sélectionné
if (event.key.code == sf::Keyboard::Return) { if (event.key.code == sf::Keyboard::Return ||
event.key.code == sf::Keyboard::Space) {
actions[selection](); actions[selection]();
} }
// touche retour ou échap : on revient au menu principal
if (event.key.code == sf::Keyboard::BackSpace ||
event.key.code == sf::Keyboard::Escape) {
loadMainMenu();
}
} }
// au clic, on exécute le choix pointé s'il y a lieu // au clic, on exécute le choix pointé s'il y a lieu
@ -82,11 +89,13 @@ void Menu::frame() {
// dessin du fond // dessin du fond
window.clear(sf::Color::White); window.clear(sf::Color::White);
// on met à l'échelle le fond de telle sorte qu'il soit toujours
// entièrement visible en largeur
float bg_scale = size.x / background.getLocalBounds().width; float bg_scale = size.x / background.getLocalBounds().width;
background.setScale(bg_scale, bg_scale); background.setScale(bg_scale, bg_scale);
background.setPosition(sf::Vector2f( background.setPosition(sf::Vector2f(
size.x / 2 - background.getGlobalBounds().width / 2, 0, size.y - background.getGlobalBounds().height
size.y - background.getGlobalBounds().height
)); ));
window.draw(background); window.draw(background);

48
src/rules.cpp Normal file
View File

@ -0,0 +1,48 @@
#include "rules.hpp"
#include <cmath>
Rules::Rules(Manager& manager) : State(manager) {
background.setTexture(getResourceManager().getTexture("bg_rules.png"));
getWindow().setFramerateLimit(Manager::FPS);
}
Rules::~Rules() {}
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 = getWindow();
sf::Vector2f size = (sf::Vector2f) window.getSize();
// titre de la fenêtre
getManager().setTitle(L"Règles");
// 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();
}