Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include <algorithm>
00023 #include "gamedate.h"
00024 #include "time_event.h"
00025 #include "time_event_handler.h"
00026
00027
00028
00029
00030 void time_event_handler::raise_event (const event * e)
00031 {
00032 s_int32 repeat;
00033 event *evt;
00034
00035
00036 while (!Events.empty () && Events.front ()->equals (e))
00037 {
00038 evt = Events.front ();
00039
00040
00041
00042 Events.erase (Events.begin ());
00043 evt->set_registered (false);
00044
00045
00046 repeat = evt->execute (e);
00047
00048
00049 if (repeat) register_event (evt);
00050 else delete evt;
00051 }
00052
00053 return;
00054 }
00055
00056
00057 void time_event_handler::remove_event (event *e)
00058 {
00059 vector<event*>::iterator i;
00060
00061
00062 i = find (Events.begin (), Events.end (), e);
00063
00064
00065 if (i != Events.end ()) Events.erase (i);
00066 }
00067
00068
00069 void time_event_handler::register_event (event *e)
00070 {
00071 vector<event*>::iterator i = Events.begin ();
00072
00073
00074 while (i != Events.end ())
00075 {
00076
00077 if (((time_event *) e)->time () <= ((time_event *) (*i))->time ()) break;
00078 i++;
00079 }
00080
00081 Events.insert (i, e);
00082 }