switch(event.type)
{
case SDL_QUIT: /* Quit event - quit: */
- quit = 1;
+ quit = true;
break;
case SDL_KEYDOWN: /* A keypress! */
key = event.key.keysym.sym;
if(!game_pause)
{
if(st_gl_mode == ST_GL_TEST)
- quit = 1;
+ quit = true;
else if(show_menu)
{
Menu::set_current(game_menu);
}
else
{
- level_free_gfx();
+ world->get_level()->free_gfx();
world->get_level()->cleanup();
- level_free_song();
+ world->get_level()->free_song();
unloadshared();
world->arrays_free();
return(0);
if (score > hs_score)
save_hs(score);
}
- level_free_gfx();
+ world->get_level()->free_gfx();
world->get_level()->cleanup();
- level_free_song();
+ world->get_level()->free_song();
unloadshared();
world->arrays_free();
return(0);
world->arrays_free();
activate_bad_guys(world->get_level());
world->activate_particle_systems();
- level_free_gfx();
+
+ world->get_level()->free_gfx();
world->get_level()->load_gfx();
- level_free_song();
+ world->get_level()->free_song();
world->get_level()->load_song();
+
if(st_gl_mode != ST_GL_TEST)
levelintro();
start_timers();
void
GameSession::draw()
{
-
-
world->draw();
-
drawstatus();
if(game_pause)
}
if(show_menu)
- {
- menu_process_current();
- mouse_cursor->draw();
- }
+ {
+ menu_process_current();
+ mouse_cursor->draw();
+ }
- /* (Update it all!) */
updatescreen();
}
current_ = this;
int fps_cnt;
- bool jump;
bool done;
- /* --- MAIN GAME LOOP!!! --- */
- jump = false;
- done = false;
- quit = 0;
global_frame_counter = 0;
game_pause = 0;
timer_init(&fps_timer,true);
{}
draw();
- do
- {
- jump = false;
+ done = false;
+ quit = false;
+ while (!done && !quit)
+ {
/* Calculate the movement-factor */
frame_ratio = ((double)(update_time-last_update_time))/((double)FRAME_RATE);
if(frame_ratio > 1.5) /* Quick hack to correct the unprecise CPU clocks a little bit. */
/* Pause till next frame, if the machine running the game is too fast: */
/* FIXME: Works great for in OpenGl mode, where the CPU doesn't have to do that much. But
the results in SDL mode aren't perfect (thought the 100 FPS are reached), even on an AMD2500+. */
- if(last_update_time >= update_time - 12 && !jump) {
+ if(last_update_time >= update_time - 12) {
SDL_Delay(10);
update_time = st_get_ticks();
}
/*if((update_time - last_update_time) < 10)
SDL_Delay((11 - (update_time - last_update_time))/2);*/
-
-
/* Handle time: */
-
if (timer_check(&time_left))
{
/* are we low on time ? */
else
tux.kill(KILL);
-
/* Calculate frames per second */
if(show_fps)
{
fps_cnt = 0;
}
}
-
}
- while (!done && !quit);
halt_music();
- level_free_gfx();
+ world->get_level()->free_gfx();
world->get_level()->cleanup();
- level_free_song();
+ world->get_level()->free_song();
+
unloadshared();
world->arrays_free();
world->arrays_free();
activate_bad_guys(world->get_level());
world->activate_particle_systems();
- level_free_gfx();
+
+ world->get_level()->free_gfx();
world->get_level()->load_gfx();
- level_free_song();
+ world->get_level()->free_song();
world->get_level()->load_song();
+
levelintro();
update_time = st_get_ticks();