Fusion de lvl_menu et menu
This commit is contained in:
		
							parent
							
								
									519d7e273f
								
							
						
					
					
						commit
						d0ec810852
					
				|  | @ -1,49 +0,0 @@ | |||
| #ifndef __PTF_LVL_MENU_HPP__ | ||||
| #define __PTF_LVL_MENU_HPP__ | ||||
| 
 | ||||
| #include <SFML/Audio.hpp> | ||||
| #include <iostream> | ||||
| #include "manager.hpp" | ||||
| #include "game.hpp" | ||||
| #include "editor.hpp" | ||||
| #include "view.hpp" | ||||
| #include "resource_manager.hpp" | ||||
| #include <vector> | ||||
| 
 | ||||
| #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 | ||||
|  | @ -7,7 +7,6 @@ | |||
| #include "game.hpp" | ||||
| #include "editor.hpp" | ||||
| #include "view.hpp" | ||||
| #include "lvl_menu.hpp" | ||||
| #include "resource_manager.hpp" | ||||
| #include <vector> | ||||
| 
 | ||||
|  | @ -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<std::function<void()>> menu[NB_CHOICES]; | ||||
|     sf::Font font; | ||||
| 
 | ||||
|     //tableau de textes modélisant les différents
 | ||||
|  |  | |||
|  | @ -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<sf::Event>& 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> game = std::shared_ptr<Game>(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<NB_LVL_CHOICES; i++) | ||||
|     { | ||||
|         window.draw(choice[i]); | ||||
|     } | ||||
|     window.display(); | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										90
									
								
								src/menu.cpp
								
								
								
								
							
							
						
						
									
										90
									
								
								src/menu.cpp
								
								
								
								
							|  | @ -1,25 +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;  | ||||
|  | @ -28,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() | ||||
| {    | ||||
|  | @ -69,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<View> lvl_menu = std::shared_ptr<View>(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> game = std::shared_ptr<Game>(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<View> editor = std::shared_ptr<View>(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<View> editor = std::shared_ptr<View>(new Editor(manager)); | ||||
|                     manager.setView(editor);    | ||||
|                 } | ||||
| 
 | ||||
|             } | ||||
|         } | ||||
|      | ||||
|     } | ||||
| 
 | ||||
|     for(int i=0; i<NB_CHOICES; i++) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue