Correction de l'alignement des règles
This commit is contained in:
parent
6dc9e706f9
commit
6dbea09bcb
|
@ -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
|
|
@ -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) {
|
||||||
|
|
17
src/menu.cpp
17
src/menu.cpp
|
@ -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);
|
||||||
|
|
|
@ -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();
|
||||||
|
}
|
Loading…
Reference in New Issue