X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ftimer.h;h=4640e575bc7d839130bd01db1fdd39dcb27acf4b;hb=40e6e7cdc59c09befbd2595aea0c6e10428315d4;hp=8a0cf4042328842cebfd13f7bc908aec5bb6a595;hpb=43ae91e84ae574464a2ff634daa8a16e253b47fa;p=supertux.git diff --git a/src/timer.h b/src/timer.h index 8a0cf4042..4640e575b 100644 --- a/src/timer.h +++ b/src/timer.h @@ -1,33 +1,42 @@ -// -// C Interface: timer -// -// Description: -// -// -// Author: Tobias Glaesser , (C) 2004 -// -// Copyright: See COPYING file that comes with this distribution -// -// +#ifndef __SUPERTUX_TIMER_H__ +#define __SUPERTUX_TIMER_H__ -#ifndef SUPERTUX_TIMER_H -#define SUPERTUX_TIMER_H +extern float global_time; -/* Timer type */ -typedef struct timer_type - { - unsigned int period; - unsigned int time; - } -timer_type; +/** + * new simpler timer designed to be used in the update functions of objects + */ +class Timer2 // TODO rename later +{ +public: + Timer2(); + ~Timer2(); -void timer_init(timer_type* ptimer); -void timer_start(timer_type* ptimer, unsigned int period); -void timer_stop(timer_type* ptimer); -int timer_check(timer_type* ptimer); -int timer_started(timer_type* ptimer); -int timer_get_left(timer_type* ptimer); -int timer_get_gone(timer_type* ptimer); + /** start the timer with the given period (in seconds). + * If cyclic=true then the timer willl be reset after each period. + * Set period to zero if you want to disable the timer. + */ + void start(float period, bool cyclic = false); + /** returns true if a period (or more) passed since start call or last + * successfull check + */ + bool check(); -#endif /*SUPERTUX_TIMER_H*/ + /** returns the period of the timer or 0 if it isn't started */ + float get_period() const + { return period; } + float get_timeleft() const + { return period - (global_time - cycle_start); } + float get_timegone() const + { return global_time - cycle_start; } + bool started() const + { return period != 0 && get_timeleft() > 0; } + +private: + float period; + float cycle_start; + bool cyclic; +}; + +#endif