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 "game.hpp"
|
||||||
#include "editor.hpp"
|
#include "editor.hpp"
|
||||||
#include "view.hpp"
|
#include "view.hpp"
|
||||||
#include "lvl_menu.hpp"
|
|
||||||
#include "resource_manager.hpp"
|
#include "resource_manager.hpp"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -34,11 +33,17 @@ public:
|
||||||
*/
|
*/
|
||||||
void MoveUp();
|
void MoveUp();
|
||||||
void MoveDown();
|
void MoveDown();
|
||||||
|
void menu1();
|
||||||
|
void menu2();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//repère le choix sélectionné
|
//repère le choix sélectionné
|
||||||
int selection;
|
int selection;
|
||||||
|
|
||||||
|
int menu_nb;
|
||||||
|
|
||||||
|
int positionY;
|
||||||
|
std::vector<std::function<void()>> menu[NB_CHOICES];
|
||||||
sf::Font font;
|
sf::Font font;
|
||||||
|
|
||||||
//tableau de textes modélisant les différents
|
//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();
|
|
||||||
|
|
||||||
}
|
|
88
src/menu.cpp
88
src/menu.cpp
|
@ -5,21 +5,18 @@ Menu::Menu(Manager& manager) : View(manager){
|
||||||
manager.getResourceManager().setMusic("menu.wav");
|
manager.getResourceManager().setMusic("menu.wav");
|
||||||
manager.getResourceManager().playMusic();
|
manager.getResourceManager().playMusic();
|
||||||
|
|
||||||
|
menu1();
|
||||||
//mise en place des propriétés des textes affichés dans le menu
|
//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].setFont(manager.getResourceManager().getFont("Raleway-Regular.ttf"));
|
||||||
choice[0].setColor(sf::Color::Red);
|
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++)
|
for(int i=1; i < NB_CHOICES; i++)
|
||||||
{
|
{
|
||||||
choice[i].setFont(manager.getResourceManager().getFont("Raleway-Regular.ttf"));
|
choice[i].setFont(manager.getResourceManager().getFont("Raleway-Regular.ttf"));
|
||||||
choice[i].setColor(sf::Color::White);
|
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
|
//choix sélectionné à l'ouverture du menu
|
||||||
selection = 0;
|
selection = 0;
|
||||||
|
@ -28,6 +25,26 @@ Menu::Menu(Manager& manager) : View(manager){
|
||||||
Menu::~Menu(){
|
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()
|
void Menu::MoveUp()
|
||||||
{
|
{
|
||||||
|
@ -69,21 +86,60 @@ void Menu::frame(){
|
||||||
MoveDown();
|
MoveDown();
|
||||||
}
|
}
|
||||||
if (event.key.code == sf::Keyboard::Return) {
|
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);
|
|
||||||
}
|
|
||||||
if(selection==1){
|
|
||||||
|
|
||||||
|
//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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//si on choisit "créer un niveau", la vue se met sur Editor
|
if(menu_nb == 1){
|
||||||
if(selection==2){
|
|
||||||
std::shared_ptr<View> editor = std::shared_ptr<View>(new Editor(manager));
|
//si on choisit "jouer", la vue se met sur Lvl_menu
|
||||||
manager.setView(editor);
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i=0; i<NB_CHOICES; i++)
|
for(int i=0; i<NB_CHOICES; i++)
|
||||||
|
|
Loading…
Reference in New Issue