diff options
| author | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2012-03-03 22:58:34 +0100 |
|---|---|---|
| committer | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2012-03-03 23:22:43 +0100 |
| commit | f08b62e1a0b9719bb03fd0db89353f69f0680def (patch) | |
| tree | acdec3cb220802c36169df43f4c9dabd1b6bdc88 /src/game-server/trigger.cpp | |
| parent | 72881e2a713a29fc7eaaa1d7159129e0e4f9867f (diff) | |
| download | manaserv-f08b62e1a0b9719bb03fd0db89353f69f0680def.tar.gz manaserv-f08b62e1a0b9719bb03fd0db89353f69f0680def.tar.xz manaserv-f08b62e1a0b9719bb03fd0db89353f69f0680def.zip | |
Removed the last direct call to global script function
The ScriptAction of the TriggerArea (which can be created by
mana.trigger_create) was still using a named global function for its
callback. Now it also uses a reference to a script function.
Since it was the last occurrence of a call to a global script function,
I've also removed the Script::prepare(std::string) overload.
Reviewed-by: Erik Schilling
Mantis-issue: 299
Diffstat (limited to 'src/game-server/trigger.cpp')
| -rw-r--r-- | src/game-server/trigger.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/game-server/trigger.cpp b/src/game-server/trigger.cpp index c4cec2f..dd1392e 100644 --- a/src/game-server/trigger.cpp +++ b/src/game-server/trigger.cpp @@ -27,6 +27,8 @@ #include "utils/logger.h" +#include <cassert> + void WarpAction::process(Actor *obj) { if (obj->getType() == OBJECT_CHARACTER) @@ -35,13 +37,20 @@ void WarpAction::process(Actor *obj) } } +ScriptAction::ScriptAction(Script *script, Script::Ref callback, int arg) : + mScript(script), + mCallback(callback), + mArg(arg) +{ + assert(mCallback.isValid()); +} + void ScriptAction::process(Actor *obj) { - LOG_DEBUG("Script trigger area activated: " << mFunction + LOG_DEBUG("Script trigger area activated: " << "(" << obj << ", " << mArg << ")"); - if (!mScript || mFunction.empty()) - return; - mScript->prepare(mFunction); + + mScript->prepare(mCallback); mScript->push(obj); mScript->push(mArg); mScript->execute(); |
