From: Ricardo Cruz Date: Mon, 13 Sep 2004 22:48:50 +0000 (+0000) Subject: Added fire works at the end sequence. X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=02b235e727b55370246cb358cf3009a85e3b3a1a;p=supertux.git Added fire works at the end sequence. To do: add sound and tweak it a bit. SVN-Revision: 1904 --- diff --git a/src/gameloop.cpp b/src/gameloop.cpp index 62e0d7f42..4c427d12d 100644 --- a/src/gameloop.cpp +++ b/src/gameloop.cpp @@ -87,8 +87,9 @@ GameSession::GameSession(const std::string& levelname_, int mode, bool flip_leve game_pause = false; fps_fps = 0; - fps_timer.init(true); + fps_timer.init(true); frame_timer.init(true); + random_timer.init(true); frame_rate.set_fps(100); context = new DrawingContext(); @@ -108,6 +109,7 @@ GameSession::restart_level() fps_timer.init(true); frame_timer.init(true); + random_timer.init(true); last_keys.clear(); @@ -513,6 +515,7 @@ GameSession::check_end_conditions() else if(!end_sequence && endtile && endtile->data == 0) { end_sequence = ENDSEQUENCE_RUNNING; + random_timer.start(200); // start 1st fire work last_x_pos = -1; SoundManager::get()->play_music(level_end_song, 0); endsequence_timer.start(7000); // 5 seconds until we finish the map @@ -552,6 +555,20 @@ GameSession::action(double frame_ratio) currentsector->play_music(LEVEL_MUSIC); newsector = newspawnpoint = ""; } + + // on end sequence make a few fire works + if(end_sequence == ENDSEQUENCE_RUNNING && !random_timer.check()) + { + Vector epicenter = currentsector->camera->get_translation(); + epicenter.x += screen->w * ((float)rand() / RAND_MAX); + epicenter.y += (screen->h/2) * ((float)rand() / RAND_MAX); + + int red = rand() % 255; // calculate fire work color + int green = rand() % red; + currentsector->add_particles(epicenter, 45, Color(red,green,0), 3, 1.4, 1300); + + random_timer.start(rand() % 400 + 600); // next fire work + } } void diff --git a/src/gameloop.h b/src/gameloop.h index d36c95c58..1efa4a314 100644 --- a/src/gameloop.h +++ b/src/gameloop.h @@ -117,6 +117,8 @@ private: // for cheating std::string last_keys; + // for fire works + Timer random_timer; void restart_level();