1// SuperTux
2// Copyright (C) 2013 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_SUPERTUX_GAME_MANAGER_HPP
18#define HEADER_SUPERTUX_SUPERTUX_GAME_MANAGER_HPP
19
20#include <memory>
21#include <string>
22#include "util/currenton.hpp"
23
24class Savegame;
25class World;
26
27class GameManager final : public Currenton<GameManager>
28{
29public:
30 GameManager();
31
32 void start_worldmap(const World& world, const std::string& spawnpoint = "", const std::string& worldmap_filename = "");
33 void start_level(const World& world, const std::string& level_filename);
34
35 bool load_next_worldmap();
36 void set_next_worldmap(const std::string& worldmap, const std::string &spawnpoint);
37
38private:
39 std::unique_ptr<Savegame> m_savegame;
40
41 std::string m_next_worldmap;
42 std::string m_next_spawnpoint;
43
44private:
45 GameManager(const GameManager&) = delete;
46 GameManager& operator=(const GameManager&) = delete;
47};
48
49#endif
50
51/* EOF */
52