00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00029 #ifndef _GG_Timer_h_
00030 #define _GG_Timer_h_
00031
00032 #include <GG/Base.h>
00033
00034 #include <set>
00035
00036
00037 namespace GG {
00038
00039 class Wnd;
00040
00045 class GG_API Timer
00046 {
00047 public:
00049
00051 explicit Timer(int interval, int start_time = 0);
00052
00053 ~Timer();
00054
00055
00057 bool Connected() const;
00058 int Interval() const;
00059 bool Running() const;
00060 bool ShouldFire(int ticks) const;
00061 const std::set<Wnd*>& Wnds() const;
00062
00063
00065 void Reset(int start_time = 0);
00066 void SetInterval(int interval);
00067 void Connect(Wnd* wnd);
00068 void Disconnect(Wnd* wnd);
00069 void Start();
00070 void Stop();
00071
00072
00073 private:
00074 Timer();
00075 Timer(const Timer&);
00076
00077 std::set<Wnd*> m_wnds;
00078 int m_interval;
00079 bool m_running;
00080 int m_last_fire;
00081
00082 friend class boost::serialization::access;
00083 template <class Archive>
00084 void serialize(Archive& ar, const unsigned int version);
00085 };
00086
00087 }
00088
00089
00090 template <class Archive>
00091 void GG::Timer::serialize(Archive& ar, const unsigned int version)
00092 {
00093 ar & BOOST_SERIALIZATION_NVP(m_wnds)
00094 & BOOST_SERIALIZATION_NVP(m_interval)
00095 & BOOST_SERIALIZATION_NVP(m_last_fire)
00096 & BOOST_SERIALIZATION_NVP(m_running);
00097 }
00098
00099 #endif