supertux
src
gui
menu_manager.hpp
1
// SuperTux
2
// Copyright (C) 2009 Ingo Ruhnke <grumbel@gmail.com>
3
//
4
// This program is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// This program is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with this program. If not, see <http://www.gnu.org/licenses/>.
16
17
#ifndef HEADER_SUPERTUX_GUI_MENU_MANAGER_HPP
18
#define HEADER_SUPERTUX_GUI_MENU_MANAGER_HPP
19
20
#include <memory>
21
#include <vector>
22
23
class
Controller
;
24
class
Dialog
;
25
class
DrawingContext
;
26
class
Menu
;
27
class
MenuTransition
;
28
union
SDL_Event;
29
30
class
MenuManager
final
31
{
32
private
:
33
static
MenuManager
* s_instance;
34
public
:
35
static
MenuManager
& instance();
36
37
private
:
38
std::unique_ptr<Dialog> m_dialog;
39
bool
m_has_next_dialog;
40
std::unique_ptr<Dialog> m_next_dialog;
41
42
std::vector<std::unique_ptr<Menu> > m_menu_stack;
43
std::unique_ptr<MenuTransition> m_transition;
44
45
public
:
46
MenuManager
();
47
~
MenuManager
();
48
49
void
event(
const
SDL_Event& event);
50
void
process_input(
const
Controller
& controller);
51
void
refresh();
52
53
void
draw(
DrawingContext
& context);
54
55
void
set_dialog(std::unique_ptr<Dialog> dialog);
56
57
void
set_menu(
int
id
);
58
void
set_menu(std::unique_ptr<Menu> menu);
59
void
push_menu(
int
id
);
60
void
push_menu(std::unique_ptr<Menu> menu);
61
void
pop_menu();
62
void
clear_menu_stack();
63
64
void
on_window_resize();
65
bool
is_active()
const
66
{
67
return
!m_menu_stack.empty();
68
}
69
70
Menu
* current_menu()
const
;
71
72
private
:
73
void
transition(
Menu
* from,
Menu
* to);
74
75
private
:
76
MenuManager
(
const
MenuManager
&) =
delete
;
77
MenuManager
& operator=(
const
MenuManager
&) =
delete
;
78
};
79
80
#endif
81
82
/* EOF */
Dialog
Definition:
dialog.hpp:32
Controller
Definition:
controller.hpp:56
MenuManager
Definition:
menu_manager.hpp:30
Menu
Definition:
menu.hpp:51
MenuTransition
Definition:
menu_manager.cpp:50
DrawingContext
This class provides functions for drawing things on screen.
Definition:
drawing_context.hpp:42
Generated by
1.8.12