00001 #ifndef PAUSABLECLOCK_HPP
00002 #define PAUSABLECLOCK_HPP
00003
00009 #include <SFML/System.hpp>
00010
00015 class PausableClock : public sf::Clock
00016 {
00017 public :
00022 PausableClock(bool paused = true)
00023 : am_i_paused(paused)
00024 , my_time(0.f)
00025 {
00026
00027 }
00028
00032 void Pause(void)
00033 {
00034
00035 if (!am_i_paused)
00036 {
00037 am_i_paused = true;
00038 my_time += sf::Clock::GetElapsedTime();
00039 }
00040 }
00041
00045 void Start(void)
00046 {
00047
00048 if (am_i_paused)
00049 {
00050 sf::Clock::Reset();
00051 am_i_paused = false;
00052 }
00053 }
00054
00058 float GetElapsedTime(void) const
00059 {
00060
00061 if (!am_i_paused)
00062 return my_time + sf::Clock::GetElapsedTime();
00063 else
00064 return my_time;
00065 }
00066
00071 void Reset(bool paused = true)
00072 {
00073 am_i_paused = paused;
00074 my_time = 0.f;
00075 sf::Clock::Reset();
00076 }
00077
00078 private :
00082 bool am_i_paused;
00083
00087 float my_time;
00088 };
00089
00090 #endif // PAUSABLECLOCK_HPP