diff --git a/include/lvl_menu.hpp b/include/lvl_menu.hpp deleted file mode 100644 index 3428d63..0000000 --- a/include/lvl_menu.hpp +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef __PTF_LVL_MENU_HPP__ -#define __PTF_LVL_MENU_HPP__ - -#include -#include -#include "manager.hpp" -#include "game.hpp" -#include "editor.hpp" -#include "view.hpp" -#include "resource_manager.hpp" -#include - -#define NB_LVL_CHOICES 3 - -/** - * La classe Lvl_menu charge le menu permettant de - * choisir le niveau auquel l'utilisateur souhaite - * jouer. - */ -class Lvl_menu : public View { - -public: - Lvl_menu(Manager& manager); - virtual ~Lvl_menu(); - - /** - * Dessine le menu de niveaux - */ - void frame(); - - /** - * Permet de changer le choix sélectionné - */ - void MoveUp(); - void MoveDown(); - -private: - //repère le choix sélectionné - int selection; - - sf::Font font; - - //tableau de textes modélisant les différents - //choix dans le menu - sf::Text choice[NB_LVL_CHOICES]; -}; - - -#endif diff --git a/include/menu.hpp b/include/menu.hpp index 0ae2fc3..95baeac 100644 --- a/include/menu.hpp +++ b/include/menu.hpp @@ -7,7 +7,6 @@ #include "game.hpp" #include "editor.hpp" #include "view.hpp" -#include "lvl_menu.hpp" #include "resource_manager.hpp" #include @@ -34,11 +33,17 @@ public: */ void MoveUp(); void MoveDown(); + void menu1(); + void menu2(); private: //repère le choix sélectionné int selection; + int menu_nb; + + int positionY; + std::vector> menu[NB_CHOICES]; sf::Font font; //tableau de textes modélisant les différents diff --git a/src/lvl_menu.cpp b/src/lvl_menu.cpp deleted file mode 100644 index 530d384..0000000 --- a/src/lvl_menu.cpp +++ /dev/null @@ -1,95 +0,0 @@ -#include "lvl_menu.hpp" - -Lvl_menu::Lvl_menu(Manager& manager) : View(manager){ - - //mise en place des propriétés des textes affichés dans le menu - choice[0].setFont(manager.getResourceManager().getFont("Raleway-Regular.ttf")); - choice[0].setColor(sf::Color::Red); - choice[0].setPosition(sf::Vector2f(300, 400/(NB_LVL_CHOICES + 1))); - - for(int i=1; i < NB_LVL_CHOICES; i++) - { - choice[i].setFont(manager.getResourceManager().getFont("Raleway-Regular.ttf")); - choice[i].setColor(sf::Color::White); - choice[i].setPosition(sf::Vector2f(300, 400/((NB_LVL_CHOICES + 1))*(i+1))); - } - choice[0].setString("Tutoriel"); - choice[1].setString("Niveau 1"); - choice[2].setString("Niveau 2"); - - //choix sélectionné à l'ouverture du menu - selection = 0; -} - -Lvl_menu::~Lvl_menu(){ -} - - -void Lvl_menu::MoveUp() -{ - //change la couleur du choix sélectionné - if(selection-1 >= 0) - { - choice[selection].setColor(sf::Color::White); - selection--; - choice[selection].setColor(sf::Color::Red); - } -} - -void Lvl_menu::MoveDown() -{ - //change la couleur du choix sélectionné - if(selection+1 < NB_LVL_CHOICES) - { - choice[selection].setColor(sf::Color::White); - selection++; - choice[selection].setColor(sf::Color::Red); - } -} - -void Lvl_menu::frame(){ - sf::RenderWindow& window = manager.getWindow(); - window.clear(sf::Color(66, 40, 245)); - - const std::vector& events = manager.getEvents(); - - for (unsigned int i = 0; i < events.size(); i++) { - const sf::Event& event = events[i]; - - // gestion des touches - if (event.type == sf::Event::KeyPressed) { - if (event.key.code == sf::Keyboard::Up) { - MoveUp(); - } - - if (event.key.code == sf::Keyboard::Down) { - MoveDown(); - } - - if (event.key.code == sf::Keyboard::Return) { - std::shared_ptr game = std::shared_ptr(new Game(manager)); - std::string path; - - switch (selection) { - case 0: - path = "./levels/level1.dat"; - break; - } - - std::ifstream file; - file.open(path, std::ios::binary | std::ios::in); - game->load(file); - file.close(); - - manager.setView(game); - } - } - } - - for(int i=0; i editor = std::shared_ptr(new Editor(manager)); try { - // ouverture du niveau - std::ifstream file; - file.open("./levels/level1.dat", std::ios::binary | std::ios::in); - editor->load(file); - file.close(); - manager.setView(menu); manager.start(); } catch (const std::exception& exception) { diff --git a/src/menu.cpp b/src/menu.cpp index 0d02b06..451aaf1 100644 --- a/src/menu.cpp +++ b/src/menu.cpp @@ -1,22 +1,22 @@ #include "menu.hpp" Menu::Menu(Manager& manager) : View(manager){ + + manager.getResourceManager().setMusic("menu.wav"); + manager.getResourceManager().playMusic(); + menu1(); //mise en place des propriétés des textes affichés dans le menu choice[0].setFont(manager.getResourceManager().getFont("Raleway-Regular.ttf")); choice[0].setColor(sf::Color::Red); - choice[0].setPosition(sf::Vector2f(460, 400/(NB_CHOICES + 1))); + choice[0].setPosition(sf::Vector2f(positionY, 400/(NB_CHOICES + 1))); for(int i=1; i < NB_CHOICES; i++) { choice[i].setFont(manager.getResourceManager().getFont("Raleway-Regular.ttf")); choice[i].setColor(sf::Color::White); - choice[i].setPosition(sf::Vector2f(460, 400/((NB_CHOICES + 1))*(i+1))); + choice[i].setPosition(sf::Vector2f(positionY, 400/((NB_CHOICES + 1))*(i+1))); } - choice[0].setString("Jouer"); - choice[1].setString("Regles du jeu"); - choice[2].setString("Creer un niveau"); - choice[3].setString("Quitter"); //choix sélectionné à l'ouverture du menu selection = 0; @@ -25,6 +25,26 @@ Menu::Menu(Manager& manager) : View(manager){ Menu::~Menu(){ } +void Menu::menu1(){ + menu_nb = 1; + positionY = 460; + + //mise en place des textes des choix + choice[0].setString("Jouer"); + choice[1].setString("Regles du jeu"); + choice[2].setString("Creer un niveau"); + choice[3].setString("Quitter"); +} + +void Menu::menu2(){ + menu_nb = 2; + positionY = 300; + + //mise en place des textes des choix + choice[0].setString("Tutoriel"); + choice[1].setString("Niveau 1"); + choice[2].setString("Niveau 2"); +} void Menu::MoveUp() { @@ -66,21 +86,60 @@ void Menu::frame(){ MoveDown(); } if (event.key.code == sf::Keyboard::Return) { - //si on choisit "jouer", la vue se met sur Lvl_menu - if(selection==0){ - std::shared_ptr lvl_menu = std::shared_ptr(new Lvl_menu(manager)); - manager.setView(lvl_menu); + + //si on se trouve dans le menu 2 permettant de choisir les niveaux + if(menu_nb == 2){ + + //si on choisit "tutoriel", on charge le niveau tutoriel et on + //la vue passe à Game + if(selection == 0){ + std::shared_ptr game = std::shared_ptr(new Game(manager)); + std::string path; + + switch (selection) { + case 0: + path = "./levels/level1.dat"; + break; + } + + std::ifstream file; + file.open(path, std::ios::binary | std::ios::in); + game->load(file); + file.close(); + + manager.setView(game); + } + + //si on choisit "Quitter", la fenêtre se ferme + if(selection == 3){ + manager.getWindow().close(); + } } - if(selection==1){ + if(menu_nb == 1){ + + //si on choisit "jouer", la vue se met sur Lvl_menu + if(selection==0){ + menu2(); + } + if(selection==1){ + } + + //si on choisit "créer un niveau", la vue se met sur Editor + if(selection==2){ + std::shared_ptr editor = std::shared_ptr(new Editor(manager)); + manager.setView(editor); + } + + //si on choisit "quitter", la fenêtre se ferme + if(selection==3){ + manager.getWindow().close(); + } } - //si on choisit "créer un niveau", la vue se met sur Editor - if(selection==2){ - std::shared_ptr editor = std::shared_ptr(new Editor(manager)); - manager.setView(editor); - } + } } + } for(int i=0; i