X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ftimer.h;h=42e1b8fd897f91c462c45bbd8f4bc74570548bd4;hb=137c4c25840c36661c8b68b8eaba77afccd76199;hp=734c896a07ecc6251a7ab95de0c5f8e8956d1c03;hpb=b179b98af661372cda14ef44c49d142a0a98a4bc;p=supertux.git diff --git a/src/timer.h b/src/timer.h index 734c896a0..42e1b8fd8 100644 --- a/src/timer.h +++ b/src/timer.h @@ -1,7 +1,7 @@ // $Id$ // // SuperTux -// Copyright (C) 2004 Tobias Glaesser +// Copyright (C) 2005 Matthias Braun // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -17,53 +17,48 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA // 02111-1307, USA. +#ifndef __SUPERTUX_TIMER_H__ +#define __SUPERTUX_TIMER_H__ -#ifndef SUPERTUX_TIMER_H -#define SUPERTUX_TIMER_H - -extern unsigned int st_pause_ticks, st_pause_count; - -unsigned int st_get_ticks(void); -void st_pause_ticks_init(void); -void st_pause_ticks_start(void); -void st_pause_ticks_stop(void); -bool st_pause_ticks_started(void); +extern float global_time; +/** + * new simpler timer designed to be used in the update functions of objects + */ class Timer { - public: - unsigned int period; - unsigned int time; - unsigned int (*get_ticks) (void); - - public: +public: Timer(); - - void init(bool st_ticks); - void start(unsigned int period); - void stop(); + ~Timer(); - /*====================================================================== - return: NO = the timer is not started - or it is over - YES = otherwise - ======================================================================*/ - int check(); - int started(); + /** 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(); + /** stop the timer */ + void stop() + { start(0); } - /*====================================================================== - return: the time left (in millisecond) - note : the returned value can be negative - ======================================================================*/ - int get_left(); + /** 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; } - int get_gone(); - void fwrite(FILE* fi); - void fread(FILE* fi); +private: + float period; + float cycle_start; + bool cyclic; }; -#endif /*SUPERTUX_TIMER_H*/ +#endif -/* Local Variables: */ -/* mode:c++ */ -/* End: */