Index: hurry_up.cxx =================================================================== RCS file: /var/lib/cvs/Games/Pingus/src/hurry_up.cxx,v retrieving revision 1.6 diff -u -r1.6 hurry_up.cxx --- hurry_up.cxx 19 Feb 2003 10:37:31 -0000 1.6 +++ hurry_up.cxx 10 Apr 2003 17:15:20 -0000 @@ -22,6 +22,11 @@ #include #include "pingus_resource.hxx" #include "hurry_up.hxx" +#include "globals.hxx" +#include "client.hxx" +#include "true_server.hxx" +#include "plf.hxx" +#include "world.hxx" HurryUp::HurryUp (Client* c) : font(PingusResource::load_font("Fonts/pingus","fonts")), @@ -69,7 +74,7 @@ // Wait some secs if (static_cast(wait_counter) < CL_System::get_time()) { - speed *= 1.2f; + speed += 0.5f; x_pos += speed; if (x_pos > CL_Display::get_width() + 200) @@ -79,24 +84,31 @@ else { x_pos += speed; - speed *= 1.2f; + speed += 0.5f; if (static_cast(x_pos) > CL_Display::get_width()/2) { x_pos = CL_Display::get_width()/2; center_reached = true; wait_counter = CL_System::get_time() + 2000; + speed = 3.0f; } } } - else if (!is_finished) + else { - // FIXME: broken -#if 0 - if ( client->get_server()->get_world()->get_time_left() != -1 - && client->get_server()->get_world()->get_time_left() < 10 * 15) - is_running = true; -#endif + // If there there is less than 10 seconds remaining and we + // aren't displaying "Hurry Up" yet, start displaying it now. + // (And we only do this if the level actually has a time limit.) + if (client->get_server()->get_plf()->get_time() != -1) + { + // Compute number of ticks remaining to play. Note that each tick + // lasts game_speed ms. + int time_value = client->get_server()->get_plf()->get_time() - + client->get_server()->get_world()->get_time_passed(); + if (game_speed * time_value < 1000 * 10) + is_running = true; + } } }