6 by Bill Kendrick & Tobias Glaesser <tobi.web@gmx.de>
7 bill@newbreedsoftware.com
8 http://www.newbreedsoftware.com/supertux/
10 April 11, 2000 - March 15, 2004
13 #ifndef SUPERTUX_GAMELOOP_H
14 #define SUPERTUX_GAMELOOP_H
25 #define ST_GL_LOAD_GAME 2
26 #define ST_GL_LOAD_LEVEL_FILE 3
27 #define ST_GL_DEMO_GAME 4
29 extern int game_started;
33 /** The GameSession class controlls the controll flow of a World, ie.
34 present the menu on specifc keypresses, render and update it while
35 keeping the speed and framerate sane, etc. */
45 unsigned int last_update_time;
46 unsigned int update_time;
51 // FIXME: Hack for restarting the level
55 enum ExitStatus { NONE, LEVEL_FINISHED, GAME_OVER, LEVEL_ABORT };
57 ExitStatus exit_status;
62 GameSession(const std::string& subset, int levelnb, int mode);
65 /** Enter the busy loop */
69 void action(double frame_ratio);
71 Level* get_level() { return world->get_level(); }
72 World* get_world() { return world; }
74 static GameSession* current() { return current_; }
76 static GameSession* current_;
80 void check_end_conditions();
82 void process_events();
87 void drawresultscreen(void);
90 void on_escape_press();
93 std::string slotinfo(int slot);
95 bool rectcollision(base_type* one, base_type* two);
96 void bumpbrick(float x, float y);
98 #endif /*SUPERTUX_GAMELOOP_H*/