Fade out and pause music on death and resume on restart of level, fixes #1064
[supertux.git] / src / supertux / game_session.hpp
index 2d61b0e..0499e2d 100644 (file)
@@ -34,7 +34,7 @@ class Menu;
 class PlayerStatus;
 class Sector;
 class Statistics;
-class WorldState;
+class Savegame;
 
 /**
  * Screen that runs a Level, where Players run and jump through Sectors.
@@ -43,7 +43,7 @@ class GameSession : public Screen,
                     public Currenton<GameSession>
 {
 public:
-  GameSession(const std::string& levelfile, WorldState& world_state, Statistics* statistics = NULL);
+  GameSession(const std::string& levelfile, Savegame& savegame, Statistics* statistics = NULL);
   ~GameSession();
 
   void record_demo(const std::string& filename);
@@ -52,7 +52,8 @@ public:
 
   void draw(DrawingContext& context);
   void update(float frame_ratio);
-  void setup();
+  void setup() override;
+  void leave() override;
 
   /// ends the current level
   void finish(bool win = true);
@@ -78,7 +79,7 @@ public:
    * resources for the current level/world
    */
   std::string get_working_directory();
-  int restart_level();
+  int restart_level(bool after_death = false);
 
   void toggle_pause();
   void abort_level();
@@ -93,7 +94,7 @@ public:
    */
   void force_ghost_mode();
 
-  WorldState& get_world_state() { return m_world_state; }
+  Savegame& get_savegame() { return m_savegame; }
 
 private:
   void check_end_conditions();
@@ -118,7 +119,7 @@ private:
   int levelnb;
   int pause_menu_frame;
 
-  EndSequence* end_sequence;
+  std::shared_ptr<EndSequence> end_sequence;
 
   bool  game_pause;
   float speed_before_pause;
@@ -134,7 +135,7 @@ private:
   std::string newspawnpoint;
 
   Statistics* best_level_statistics;
-  WorldState& m_world_state;
+  Savegame& m_savegame;
 
   std::ostream* capture_demo_stream;
   std::string capture_file;