#define ST_GL_TEST 1
#define ST_GL_LOAD_GAME 2
#define ST_GL_LOAD_LEVEL_FILE 3
+#define ST_GL_DEMO_GAME 4
extern int game_started;
class GameSession
{
private:
- bool quit;
- timer_type fps_timer;
- timer_type frame_timer;
+ Timer fps_timer;
+ Timer frame_timer;
World* world;
int st_gl_mode;
-
+ int levelnb;
float fps_fps;
unsigned int last_update_time;
unsigned int update_time;
// FIXME: Hack for restarting the level
std::string subset;
- int levelnb;
+ enum ExitStatus { NONE, LEVEL_FINISHED, GAME_OVER, LEVEL_ABORT };
+ ExitStatus exit_status;
public:
- GameSession();
- GameSession(const std::string& filename);
+ Timer time_left;
+
GameSession(const std::string& subset, int levelnb, int mode);
~GameSession();
/** Enter the busy loop */
- int run();
+ ExitStatus run();
void draw();
- int action(double frame_ratio);
+ void action(double frame_ratio);
Level* get_level() { return world->get_level(); }
World* get_world() { return world; }
- void savegame(int slot);
- void loadgame(int slot);
-
static GameSession* current() { return current_; }
private:
static GameSession* current_;
- void init();
+ void restart_level();
+ void check_end_conditions();
void start_timers();
void process_events();