X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ftimer.c;h=eb9cccd8dd7ee5b7a1c91fe9e605151e15432085;hb=416e3a38d49f534ba8b65a63723bdb33ec018c68;hp=41b60d1df0b24832e3af8b914457ad7306eb7765;hpb=05a38383bb378e05aadad886e87f0fe64fdc6ba0;p=supertux.git diff --git a/src/timer.c b/src/timer.c index 41b60d1df..eb9cccd8d 100644 --- a/src/timer.c +++ b/src/timer.c @@ -14,6 +14,8 @@ #include "defines.h" #include "timer.h" +unsigned int st_pause_ticks, st_pause_count; + unsigned int st_get_ticks(void) { if(st_pause_count != 0) @@ -39,26 +41,35 @@ st_pause_ticks += SDL_GetTicks() - st_pause_count; st_pause_count = 0; } -void timer_init(timer_type* ptimer) +void timer_init(timer_type* ptimer, int st_ticks) { ptimer->period = 0; ptimer->time = 0; + + if(st_ticks == YES) + ptimer->get_ticks = st_get_ticks; + else + ptimer->get_ticks = SDL_GetTicks; + } void timer_start(timer_type* ptimer, unsigned int period) { - ptimer->time = st_get_ticks(); + ptimer->time = ptimer->get_ticks(); ptimer->period = period; } void timer_stop(timer_type* ptimer) { - timer_init(ptimer); +if(ptimer->get_ticks == st_get_ticks) + timer_init(ptimer,YES); +else + timer_init(ptimer,NO); } int timer_check(timer_type* ptimer) { - if((ptimer->time != 0) && (ptimer->time + ptimer->period > st_get_ticks())) + if((ptimer->time != 0) && (ptimer->time + ptimer->period > ptimer->get_ticks())) return YES; else { @@ -77,10 +88,10 @@ int timer_started(timer_type* ptimer) int timer_get_left(timer_type* ptimer) { - return (ptimer->period - (st_get_ticks() - ptimer->time)); + return (ptimer->period - (ptimer->get_ticks() - ptimer->time)); } int timer_get_gone(timer_type* ptimer) { - return (st_get_ticks() - ptimer->time); + return (ptimer->get_ticks() - ptimer->time); }