X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ftimer.h;h=88441839fce947a516ac41795b4505de1a522650;hb=c0093d25093395cb62fc2526ab42be65a9f015b8;hp=9529242bcd41f6fa52efbb1be5b28bdb60f7f6cf;hpb=6e7cc3b4259e75a61df2984571d0ab1994c7cceb;p=supertux.git diff --git a/src/timer.h b/src/timer.h index 9529242bc..88441839f 100644 --- a/src/timer.h +++ b/src/timer.h @@ -1,54 +1,65 @@ +// $Id$ +// +// SuperTux +// Copyright (C) 2005 Matthias Braun // -// C Interface: timer -// -// Description: -// -// -// Author: Tobias Glaesser , (C) 2004 -// -// Copyright: See COPYING file that comes with this distribution -// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. // +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// 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__ + +extern float global_time; + +/** + * new simpler timer designed to be used in the update functions of objects + */ +class Timer2 // TODO rename later +{ +public: + Timer2(); + ~Timer2(); + + /** 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); } + + /** 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; +}; -#ifndef SUPERTUX_TIMER_H -#define SUPERTUX_TIMER_H - -/* Timer type */ -typedef struct timer_type - { - unsigned int period; - unsigned int time; - } -timer_type; - -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); -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); - - param : pointer to a timer which needs to be checked - return: NO = the timer is not started - or it is over - YES = otherwise -======================================================================*/ -int timer_check(timer_type* ptimer); -int timer_started(timer_type* ptimer); -/*====================================================================== - int timer_get_left(timer_type* ptimer); - - param : pointer to a timer that you want to get the time left - return: the time left (in millisecond) - note : the returned value can be negative -======================================================================*/ -int timer_get_left(timer_type* ptimer); -int timer_get_gone(timer_type* ptimer); - -#endif /*SUPERTUX_TIMER_H*/ +#endif