Some more wrapper functions to aid the planned split of game_events.

This commit is contained in:
JaMiT 2013-07-27 17:03:52 -05:00
parent 82648577de
commit 0aa12434c8
2 changed files with 24 additions and 6 deletions

View File

@ -324,9 +324,6 @@ void show_wml_messages()
} // anonymous namespace
typedef void (*wml_handler_function)(
const queued_event &event_info, const vconfig &cfg);
namespace {
typedef std::map<std::string, wml_handler_function> static_wml_action_map;
@ -335,6 +332,13 @@ static_wml_action_map static_wml_actions;
} // anonymous namespace
/** Registers a standard action handler. */
void register_action(const std::string & tag, wml_handler_function handler)
{
static_wml_actions[tag] = handler;
}
/**
* WML_HANDLER_FUNCTION macro handles auto registration for wml handlers
*
@ -358,7 +362,7 @@ static_wml_action_map static_wml_actions;
* void wml_action_foo(...);
* struct wml_func_register_foo {
* wml_func_register_foo() {
* static_wml_actions["foo"] = &wml_func_foo;
* register_action("foo", &wml_func_foo);
* } wml_func_register_foo;
* void wml_func_foo(...)
* {
@ -371,7 +375,7 @@ static_wml_action_map static_wml_actions;
struct wml_func_register_##pname \
{ \
wml_func_register_##pname() \
{ static_wml_actions[#pname] = &wml_func_##pname; } \
{ register_action(#pname, &wml_func_##pname); } \
}; \
static wml_func_register_##pname wml_func_register_##pname##_aux; \
static void wml_func_##pname(const queued_event& pei, const vconfig& pcfg)
@ -3611,7 +3615,7 @@ bool process_event(event_handler& handler, const queued_event& ev)
manager::~manager() {
assert(running_);
running_ = false;
events_queue.clear();
clear_events();
event_handlers.clear();
reports::reset_generators();
delete resources::lua_kernel;
@ -3620,6 +3624,12 @@ bool process_event(event_handler& handler, const queued_event& ev)
used_items.clear();
}
/** Clears all events tha have been raised (and not pumped). */
void clear_events()
{
events_queue.clear();
}
void raise(const std::string& event,
const entity_location& loc1,
const entity_location& loc2,

View File

@ -179,6 +179,9 @@ void change_terrain(const map_location &loc, const t_translation::t_terrain &t,
// Declarations that will be more useful after the split:
typedef void (*wml_handler_function)(const queued_event &event_info,
const vconfig &cfg);
/// Create an event handler.
void add_event_handler(const config & event);
/// Add a pending menu item command change.
@ -195,6 +198,9 @@ void change_terrain(const map_location &loc, const t_translation::t_terrain &t,
/// really be pushed into the wml_messages_stream, and does it.
void put_wml_message(const std::string& logger, const std::string& message);
/// Registers a standard action handler.
void register_action(const std::string & tag, wml_handler_function handler);
/// Checks if an item has been used.
bool item_used(const std::string & id);
/// Records if an item has been used.
@ -212,6 +218,8 @@ void change_terrain(const map_location &loc, const t_translation::t_terrain &t,
/// Sets whether or not we believe WML might have changed something.
void context_mutated(bool mutated);
/// Clears all events tha have been raised (and not pumped).
void clear_events();
} // end namespace game_events
#endif