diff options
Diffstat (limited to 'src/game-server')
-rw-r--r-- | src/game-server/trigger.cpp | 17 | ||||
-rw-r--r-- | src/game-server/trigger.h | 5 |
2 files changed, 15 insertions, 7 deletions
diff --git a/src/game-server/trigger.cpp b/src/game-server/trigger.cpp index c4cec2f4..dd1392e1 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(); diff --git a/src/game-server/trigger.h b/src/game-server/trigger.h index f6f0e170..2a3aa611 100644 --- a/src/game-server/trigger.h +++ b/src/game-server/trigger.h @@ -50,14 +50,13 @@ class WarpAction : public TriggerAction class ScriptAction : public TriggerAction { public: - ScriptAction(Script *script, const std::string &function, int arg) - : mScript(script), mFunction(function), mArg(arg) {} + ScriptAction(Script *script, Script::Ref callback, int arg); virtual void process(Actor *obj); private: Script *mScript; // Script object to be called - std::string mFunction; // Name of the function called in the script object + Script::Ref mCallback; // Reference to the function to call int mArg; // Argument passed to script function (meaning is function-specific) }; |