#ifndef HEADER_SUPERTUX_SUPERTUX_TITLE_HPP
#define HEADER_SUPERTUX_SUPERTUX_TITLE_HPP
-#include "addon/addon.hpp"
#include "supertux/game_session.hpp"
+class AddonMenu;
+class CodeController;
+class ContribMenu;
+class ContribWorldMenu;
class Menu;
+class PlayerStatus;
class World;
-class CodeController;
+class Savegame;
/**
* Screen that displays the SuperTux logo, lets players start a new game, etc.
class TitleScreen : public Screen
{
public:
- TitleScreen();
+ TitleScreen(Savegame& savegame);
virtual ~TitleScreen();
virtual void setup();
virtual void update(float elapsed_time);
private:
- std::string get_level_name(const std::string& levelfile);
- void start_game();
void make_tux_jump();
- void update_load_game_menu();
- void generate_main_menu();
- void generate_contrib_menu();
- void check_levels_contrib_menu();
- void check_contrib_world_menu();
- void free_contrib_menu();
- void generate_addons_menu();
- void check_addons_menu();
- void free_addons_menu();
private:
- std::auto_ptr<Menu> main_menu;
- std::auto_ptr<Menu> contrib_menu;
- std::auto_ptr<Menu> contrib_world_menu;
- std::auto_ptr<World> main_world;
- std::vector<World*> contrib_worlds;
- std::auto_ptr<Menu> addons_menu;
- std::vector<Addon*> addons; /**< shown list of Add-ons */
- World* current_world;
-
- std::auto_ptr<Surface> frame;
- std::auto_ptr<CodeController> controller;
- std::auto_ptr<GameSession> titlesession;
+ SurfacePtr frame;
+ std::unique_ptr<CodeController> controller;
+ std::unique_ptr<GameSession> titlesession;
+ std::string copyright_text;
private:
TitleScreen(const TitleScreen&);