supertux
editor_level_select_menu.hpp
1 // SuperTux
2 // Copyright (C) 2015 Hume2 <teratux.mail@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_SUPERTUX_MENU_EDITOR_LEVEL_SELECT_MENU_HPP
18 #define HEADER_SUPERTUX_SUPERTUX_MENU_EDITOR_LEVEL_SELECT_MENU_HPP
19 
20 #include "gui/menu.hpp"
21 
23 class Levelset;
24 class World;
25 
26 class EditorLevelSelectMenu final : public Menu
27 {
28 public:
30  EditorLevelSelectMenu(std::unique_ptr<World> world, EditorLevelsetSelectMenu* levelset_select_menu = nullptr);
31  ~EditorLevelSelectMenu() override;
32 
33  void menu_action(MenuItem& item) override;
34 
35  void open_level(const std::string& filename);
36 
37  void reload_menu();
38 
39 private:
40  void initialize();
41  void create_level();
42  void create_worldmap();
43  void create_item(bool worldmap);
44 
45  World* get_world() const;
46 
47 private:
48  std::unique_ptr<World> m_world; // Contains a provided world, not associated with the editor
49  std::unique_ptr<Levelset> m_levelset;
50  EditorLevelsetSelectMenu* m_levelset_select_menu;
51 
52 private:
54  EditorLevelSelectMenu& operator=(const EditorLevelSelectMenu&) = delete;
55 };
56 
57 #endif
58 
59 /* EOF */
Definition: editor_level_select_menu.hpp:26
Definition: world.hpp:26
Definition: menu_item.hpp:23
Definition: object_settings.hpp:32
Definition: levelset.hpp:23
Definition: menu.hpp:55
Definition: editor_levelset_select_menu.hpp:22