]> git.tdb.fi Git - libs/game.git/blob - source/game/eventobserver.cpp
Add an event bus for delivering events
[libs/game.git] / source / game / eventobserver.cpp
1 #include "eventobserver.h"
2 #include "eventsource.h"
3
4 namespace Msp::Game {
5
6 EventObserver::EventObserver(EventBus &b):
7         bus(b)
8 { }
9
10 EventObserver::~EventObserver()
11 {
12         bus.remove_observer(*this);
13         for(EventSourceBase *s: observed_sources)
14                 s->remove_observer(*this);
15 }
16
17 void EventObserver::remove_source(EventSourceBase &src)
18 {
19         auto i = lower_bound(observed_sources, &src);
20         if(i!=observed_sources.end() && *i==&src)
21                 observed_sources.erase(i);
22 }
23
24 } // namespace Msp::Game