-
Notifications
You must be signed in to change notification settings - Fork 0
/
Menu.cpp
93 lines (78 loc) · 2.33 KB
/
Menu.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include "Menu.hpp"
#include <iostream>
#include "SelectorNiveles.hpp"
#include "AlmacenDeSonidos.hpp"
#include "Creditos.hpp"
#include "AlmacenDeImagenes.hpp"
#include "Opciones.hpp"
#include "AlmacenDeAjustes.hpp"
#include "EditorDeNiveles.hpp"
#include "MenuEditar.hpp"
const int JUGAR = 0;
const int EDITAR = 1;
const int OPCIONES = 2;
const int CREDITOS = 3;
const int SALIR = 4;
Menu::Menu(Modelo* m) : Menu_Selector(sf::Vector2i(0,posIniOpciones),sf::Vector2i(Modelo::fwidth,60),
sf::Vector3i(1,5,1) ),
modelo(m)
{
for (int i = 0;i<NNIVELES;i++)
{
pantallas_del_menu[i].setTexture(AlmacenDeImagenes::getInstancia().getImagenMenu(i));
}
menu_enter.setBuffer(AlmacenDeSonidos::getInstancia().getMenu_enter());
menu_mover.setBuffer(AlmacenDeSonidos::getInstancia().getMenu_mover());
}
void Menu::lanzarInstancia(int opcion)
{
menu_enter.setVolume(AlmacenDeAjustes::getInstancia().getVolumen());
menu_enter.play();
switch (opcion)
{
case JUGAR:
modelo->addController(new SelectorNiveles(modelo));
break;
case EDITAR:
// modelo->addController(new EditorDeNiveles(modelo));
modelo->addController(new MenuEditar(modelo));
break;
case OPCIONES:
modelo->addController(new Opciones(modelo));
break;
case CREDITOS:
modelo->addController(new Creditos(modelo));
break;
case SALIR:
salir();
break;
}
}
void Menu::cambiaOpcion()
{
menu_mover.setVolume(AlmacenDeAjustes::getInstancia().getVolumen());
if (menu_mover.getStatus() != sf::SoundSource::Playing)
menu_mover.play();
}
void Menu::salir()
{
modelo->finishController();
}
void Menu::tratarEvento(sf::Event &event)
{
if (event.type == sf::Event::Closed) salir();
Menu_Selector::tratarEvento(event);
if (event.type == sf::Event::KeyPressed)
{
if (event.key.code == sf::Keyboard::Escape) salir();
}
}
void Menu::refrescarPantalla()
{
modelo->dibujar(pantallas_del_menu[getNumElemento()]);
}
Menu::~Menu()
{
menu_mover.stop();
menu_enter.stop();
}