29 |
#ifndef QUEST_EVENT_MANAGER_H |
#ifndef QUEST_EVENT_MANAGER_H |
30 |
#define QUEST_EVENT_MANAGER_H |
#define QUEST_EVENT_MANAGER_H |
31 |
|
|
32 |
|
#include <vector> |
33 |
|
#include <map> |
34 |
|
|
35 |
#include "event/manager_base.h" |
#include "event/manager_base.h" |
36 |
|
|
37 |
using events::manager_base; |
using events::manager_base; |
41 |
namespace rpg |
namespace rpg |
42 |
{ |
{ |
43 |
/** |
/** |
44 |
* |
* Manager keeping track of quest_events. |
45 |
*/ |
*/ |
46 |
class quest_event_manager : public manager_base |
class quest_event_manager : public manager_base |
47 |
{ |
{ |
52 |
*/ |
*/ |
53 |
quest_event_manager (); |
quest_event_manager (); |
54 |
|
|
55 |
/** |
/** |
56 |
|
* Cleanup. |
57 |
|
*/ |
58 |
|
~quest_event_manager (); |
59 |
|
|
60 |
|
/** |
61 |
* Registers a %listener. |
* Registers a %listener. |
62 |
* |
* |
63 |
* @param li pointer to the %event to register. |
* @param li pointer to the %event to register. |
79 |
void raise_event (const event* ev); |
void raise_event (const event* ev); |
80 |
|
|
81 |
protected: |
protected: |
82 |
|
/** |
83 |
|
* Execute all scripts of given listeners matching the given %event. |
84 |
|
* @param e the triggering event. |
85 |
|
* @param listeners listeners to test whether they fit to the %event. |
86 |
|
*/ |
87 |
|
void raise_event (const event * e, std::vector<listener*> *listeners); |
88 |
|
|
89 |
|
/// registered quest events |
90 |
|
std::map<std::string, std::vector<listener*> > Events; |
91 |
}; |
}; |
92 |
|
|
93 |
} |
} |