#include <iostream>
#include <vector>
class Entity
{
};
enum Event
{
SOME_EVENT_A,
SOME_EVENT_B,
};
class Observer
{
public:
virtual ~Observer() {}
// The parameters can be adjusted for specific need
virtual void OnNotify(const Entity& entity, Event event);
};
class Ahievements : public Observer
{
public:
virtual void OnNotify(const Entity& entity, Event event)
{
switch(event)
{
case SOME_EVENT_A:
// Do something
break;
case SOME_EVENT_B:
// Do something
break;
}
}
};
class Subject
{
public:
void OnNotify(const Entity& entity, Event event)
{
for(Observer* o : _observers)
{
o->OnNotify(entity, event);
}
}
void AddObserver(Observer* observer)
{
// Add to array
}
void RemoveObserver(Observer* observer)
{
// Remove from array
}
std::vector<Observer*> _observers;
}
class Physics : public Subject
{
}
int main()
{
return 0;
}