X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fgame_session.hpp;h=4143286c358a05408c46c9fdf54adeda2a7270fb;hb=ad961cb86ef28feed73e1f524fda692ed58d4e5e;hp=3a216fd5099f35f7910c4a03230012865405fe00;hpb=fc73efa7ff699fe3c9c237845b6f4fda0d999862;p=supertux.git diff --git a/src/game_session.hpp b/src/game_session.hpp index 3a216fd50..4143286c3 100644 --- a/src/game_session.hpp +++ b/src/game_session.hpp @@ -27,6 +27,7 @@ #include "math/vector.hpp" #include "console.hpp" #include "video/surface.hpp" +#include "object/endsequence.hpp" class Level; class Sector; @@ -46,6 +47,7 @@ public: ~GameSession(); void record_demo(const std::string& filename); + int get_demo_random_seed(const std::string& filename); void play_demo(const std::string& filename); void draw(DrawingContext& context); @@ -61,8 +63,14 @@ public: void finish(bool win = true); void respawn(const std::string& sectorname, const std::string& spawnpointname); void set_reset_point(const std::string& sectorname, const Vector& pos); + std::string get_reset_point_sectorname() + { return reset_sector; } + + Vector get_reset_point_pos() + { return reset_pos; } + void display_info_box(const std::string& text); - + Sector* get_current_sector() { return currentsector; } @@ -77,7 +85,9 @@ public: * resources for the current level/world */ std::string get_working_directory(); - void restart_level(bool fromBeginning = true); + void restart_level(); + + void toggle_pause(); private: void check_end_conditions(); @@ -88,28 +98,23 @@ private: void drawstatus(DrawingContext& context); void draw_pause(DrawingContext& context); + HSQUIRRELVM run_script(std::istream& in, const std::string& sourcename); void on_escape_press(); void process_menu(); - Timer endsequence_timer; std::auto_ptr level; std::auto_ptr statistics_backdrop; + // scripts + typedef std::vector ScriptList; + ScriptList scripts; + Sector* currentsector; int levelnb; int pause_menu_frame; - /** If true the end_sequence will be played, user input will be - ignored while doing that */ - enum EndSequenceState { - NO_ENDSEQUENCE, - ENDSEQUENCE_RUNNING, // tux is running right - ENDSEQUENCE_WAITING // waiting for the end of the music - }; - EndSequenceState end_sequence; - float last_x_pos; - CodeController* end_sequence_controller; + EndSequence* end_sequence; bool game_pause; @@ -133,7 +138,8 @@ private: CodeController* demo_controller; std::auto_ptr game_menu; + + float play_time; /**< total time in seconds that this session ran interactively */ }; #endif /*SUPERTUX_GAMELOOP_H*/ -