X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ftimer.c;h=25a63a37abcec7cdadfe7be7368f08388603afcd;hb=b9511e761c02a52392c2291c4877609bfbe15400;hp=eb9cccd8dd7ee5b7a1c91fe9e605151e15432085;hpb=416e3a38d49f534ba8b65a63723bdb33ec018c68;p=supertux.git diff --git a/src/timer.c b/src/timer.c index eb9cccd8d..25a63a37a 100644 --- a/src/timer.c +++ b/src/timer.c @@ -1,7 +1,7 @@ // // C Implementation: timer // -// Description: +// Description: // // // Author: Tobias Glaesser , (C) 2004 @@ -10,7 +10,7 @@ // // -#include +#include "SDL.h" #include "defines.h" #include "timer.h" @@ -18,39 +18,39 @@ unsigned int st_pause_ticks, st_pause_count; unsigned int st_get_ticks(void) { -if(st_pause_count != 0) -return SDL_GetTicks() - st_pause_ticks - SDL_GetTicks() + st_pause_count; -else -return SDL_GetTicks() - st_pause_ticks; + if(st_pause_count != 0) + return SDL_GetTicks() - st_pause_ticks - SDL_GetTicks() + st_pause_count; + else + return SDL_GetTicks() - st_pause_ticks; } void st_pause_ticks_init(void) { -st_pause_ticks = 0; -st_pause_count = 0; + st_pause_ticks = 0; + st_pause_count = 0; } void st_pause_ticks_start(void) { -st_pause_count = SDL_GetTicks(); + st_pause_count = SDL_GetTicks(); } void st_pause_ticks_stop(void) { -st_pause_ticks += SDL_GetTicks() - st_pause_count; -st_pause_count = 0; + st_pause_ticks += SDL_GetTicks() - st_pause_count; + st_pause_count = 0; } 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; + ptimer->get_ticks = st_get_ticks; else - ptimer->get_ticks = SDL_GetTicks; - + ptimer->get_ticks = SDL_GetTicks; + } void timer_start(timer_type* ptimer, unsigned int period) @@ -61,10 +61,10 @@ void timer_start(timer_type* ptimer, unsigned int period) void timer_stop(timer_type* ptimer) { -if(ptimer->get_ticks == st_get_ticks) - timer_init(ptimer,YES); -else - timer_init(ptimer,NO); + if(ptimer->get_ticks == st_get_ticks) + timer_init(ptimer,YES); + else + timer_init(ptimer,NO); } int timer_check(timer_type* ptimer) @@ -95,3 +95,40 @@ int timer_get_gone(timer_type* ptimer) { return (ptimer->get_ticks() - ptimer->time); } + +int timer_fwrite(timer_type* ptimer, FILE* fi) +{ + unsigned int diff_ticks; + int tick_mode; + if(ptimer->time != 0) + diff_ticks = ptimer->get_ticks() - ptimer->time; + else + diff_ticks = 0; + + fwrite(&ptimer->period,sizeof(unsigned int),1,fi); + fwrite(&diff_ticks,sizeof(unsigned int),1,fi); + if(ptimer->get_ticks == st_get_ticks) + tick_mode = YES; + else + tick_mode = NO; + fwrite(&tick_mode,sizeof(unsigned int),1,fi); +} + +int timer_fread(timer_type* ptimer, FILE* fi) +{ + unsigned int diff_ticks; + int tick_mode; + fread(&ptimer->period,sizeof(unsigned int),1,fi); + fread(&diff_ticks,sizeof(unsigned int),1,fi); + fread(&tick_mode,sizeof(unsigned int),1,fi); + if(tick_mode == YES) + ptimer->get_ticks = st_get_ticks; + else + ptimer->get_ticks = SDL_GetTicks; + if(diff_ticks != 0) + ptimer->time = ptimer->get_ticks() - diff_ticks; + else + ptimer->time = 0; + +} +