Ajout du fond du menu
This commit is contained in:
parent
1bc28ad509
commit
340d245c27
|
@ -13,6 +13,8 @@
|
||||||
*/
|
*/
|
||||||
class Menu : public State {
|
class Menu : public State {
|
||||||
private:
|
private:
|
||||||
|
sf::Sprite background;
|
||||||
|
|
||||||
std::vector<sf::String> choices;
|
std::vector<sf::String> choices;
|
||||||
std::vector<sf::Text> labels;
|
std::vector<sf::Text> labels;
|
||||||
std::vector<std::function<void(void)>> actions;
|
std::vector<std::function<void(void)>> actions;
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 896 KiB |
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
Manager::Manager() : window(
|
Manager::Manager() : window(
|
||||||
sf::VideoMode(704, 480), "Skizzle", sf::Style::Default,
|
sf::VideoMode(704, 480), "Skizzle", sf::Style::Default,
|
||||||
sf::ContextSettings(0, 0, 4)
|
sf::ContextSettings(0, 0, 2)
|
||||||
), default_view(window.getDefaultView()), title(sf::String(L"")),
|
), default_view(window.getDefaultView()), title(sf::String(L"")),
|
||||||
state(NULL), next_state(NULL), running(false) {}
|
state(NULL), next_state(NULL), running(false) {}
|
||||||
|
|
||||||
|
@ -11,7 +11,6 @@ void Manager::start() {
|
||||||
|
|
||||||
while (running) {
|
while (running) {
|
||||||
sf::Event event;
|
sf::Event event;
|
||||||
std::vector<sf::Event> events;
|
|
||||||
|
|
||||||
// si un changement d'état a été demandé, on l'effectue maintenant
|
// si un changement d'état a été demandé, on l'effectue maintenant
|
||||||
if (next_state != nullptr) {
|
if (next_state != nullptr) {
|
||||||
|
|
26
src/menu.cpp
26
src/menu.cpp
|
@ -27,14 +27,32 @@ void Menu::frame(const std::vector<sf::Event>& events) {
|
||||||
sf::Vector2f size = (sf::Vector2f) window.getSize();
|
sf::Vector2f size = (sf::Vector2f) window.getSize();
|
||||||
sf::Font font = getResourceManager().getFont("raleway.ttf");
|
sf::Font font = getResourceManager().getFont("raleway.ttf");
|
||||||
|
|
||||||
|
// on s'assure d'être dans la vue par défaut (pas de zoom, 0x0 en haut gauche)
|
||||||
getManager().resetDefaultView();
|
getManager().resetDefaultView();
|
||||||
window.clear(sf::Color(66, 40, 245));
|
|
||||||
// TODO: dessiner l'image du fond
|
// dessin du fond
|
||||||
|
window.clear(sf::Color::White);
|
||||||
|
|
||||||
|
float bg_scale = size.x / background.getLocalBounds().width;
|
||||||
|
background.setScale(bg_scale, bg_scale);
|
||||||
|
background.setPosition(sf::Vector2f(
|
||||||
|
size.x / 2 - background.getGlobalBounds().width / 2,
|
||||||
|
size.y - background.getGlobalBounds().height
|
||||||
|
));
|
||||||
|
|
||||||
|
window.draw(background);
|
||||||
|
|
||||||
// on crée les textes pour chaque choix et on les dessine
|
// on crée les textes pour chaque choix et on les dessine
|
||||||
float step = size.y / (choices.size() + 1);
|
float step = size.y / (choices.size() + 1);
|
||||||
int font_size = std::max((int) step / 3, 12);
|
int font_size = std::max((int) step / 3, 12);
|
||||||
|
|
||||||
|
// d'abord un fond pour éviter de mélanger texte et image
|
||||||
|
sf::Vector2f mask_position(size.x - (font_size * 10), 0);
|
||||||
|
sf::RectangleShape mask(sf::Vector2f(font_size * 10, size.y));
|
||||||
|
mask.setPosition(mask_position);
|
||||||
|
mask.setFillColor(sf::Color(0, 0, 0, 127));
|
||||||
|
|
||||||
|
window.draw(mask);
|
||||||
labels.clear();
|
labels.clear();
|
||||||
|
|
||||||
for (unsigned int i = 0; i < choices.size(); i++) {
|
for (unsigned int i = 0; i < choices.size(); i++) {
|
||||||
|
@ -125,6 +143,10 @@ void Menu::loadMainMenu() {
|
||||||
actions.clear();
|
actions.clear();
|
||||||
selection = 0;
|
selection = 0;
|
||||||
|
|
||||||
|
sf::Texture& texture = getResourceManager().getTexture("bg_menu.tga");
|
||||||
|
texture.setSmooth(true);
|
||||||
|
background.setTexture(texture);
|
||||||
|
|
||||||
choices.push_back(sf::String(L"Jouer"));
|
choices.push_back(sf::String(L"Jouer"));
|
||||||
actions.push_back(std::bind(&Menu::loadLevelMenu, this));
|
actions.push_back(std::bind(&Menu::loadLevelMenu, this));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue