X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ftimer.cpp;h=f316fa57713ba47abf73699a20ce2492db094299;hb=308f11e38981077626fe0ea9887094f3c28b02f9;hp=9848f292800e087249c264e8063dff15424b129b;hpb=e147eea9f117721dbcf79d1465452b6ae91fe33c;p=supertux.git diff --git a/src/timer.cpp b/src/timer.cpp index 9848f2928..f316fa577 100644 --- a/src/timer.cpp +++ b/src/timer.cpp @@ -1,16 +1,25 @@ +// $Id$ +// +// SuperTux +// Copyright (C) 2004 Tobias Glaesser // -// C Implementation: 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. #include "SDL.h" + #include "defines.h" #include "timer.h" @@ -32,7 +41,8 @@ void st_pause_ticks_init(void) void st_pause_ticks_start(void) { - st_pause_count = SDL_GetTicks(); + if(st_pause_count == 0) + st_pause_count = SDL_GetTicks(); } void st_pause_ticks_stop(void) @@ -44,8 +54,21 @@ return; st_pause_count = 0; } +bool st_pause_ticks_started(void) +{ +if(st_pause_count == 0) +return false; +else +return true; +} + +Timer::Timer() +{ + init(true); +} + void -timer_type::init(bool st_ticks) +Timer::init(bool st_ticks) { period = 0; time = 0; @@ -53,14 +76,14 @@ timer_type::init(bool st_ticks) } void -timer_type::start(unsigned int period_) +Timer::start(unsigned int period_) { time = get_ticks(); period = period_; } void -timer_type::stop() +Timer::stop() { if(get_ticks == st_get_ticks) init(true); @@ -69,7 +92,7 @@ timer_type::stop() } int -timer_type::check() +Timer::check() { if((time != 0) && (time + period > get_ticks())) return true; @@ -81,7 +104,7 @@ timer_type::check() } int -timer_type::started() +Timer::started() { if(time != 0) return true; @@ -89,51 +112,57 @@ timer_type::started() return false; } -int timer_get_left(timer_type* ptimer) +int +Timer::get_left() { - return (ptimer->period - (ptimer->get_ticks() - ptimer->time)); + return (period - (get_ticks() - time)); } -int timer_get_gone(timer_type* ptimer) +int +Timer::get_gone() { - return (ptimer->get_ticks() - ptimer->time); + return (get_ticks() - time); } -void timer_fwrite(timer_type* ptimer, FILE* fi) +void +Timer::fwrite(FILE* fi) { unsigned int diff_ticks; int tick_mode; - if(ptimer->time != 0) - diff_ticks = ptimer->get_ticks() - ptimer->time; + if(time != 0) + diff_ticks = get_ticks() - 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) + ::fwrite(&period,sizeof(unsigned int),1,fi); + ::fwrite(&diff_ticks,sizeof(unsigned int),1,fi); + if(get_ticks == st_get_ticks) tick_mode = true; else tick_mode = false; - fwrite(&tick_mode,sizeof(unsigned int),1,fi); + ::fwrite(&tick_mode,sizeof(unsigned int),1,fi); } -void timer_fread(timer_type* ptimer, FILE* fi) +void +Timer::fread(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); + + ::fread(&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) - ptimer->get_ticks = st_get_ticks; + get_ticks = st_get_ticks; else - ptimer->get_ticks = SDL_GetTicks; + get_ticks = SDL_GetTicks; if (diff_ticks != 0) - ptimer->time = ptimer->get_ticks() - diff_ticks; + time = get_ticks() - diff_ticks; else - ptimer->time = 0; + time = 0; } +/* EOF */