diff options
author | Erik Schilling <ablu.erikschilling@googlemail.com> | 2013-02-21 07:29:58 +0100 |
---|---|---|
committer | Erik Schilling <ablu.erikschilling@googlemail.com> | 2013-02-21 07:29:58 +0100 |
commit | f93b4c25242370982715e1a83c11e667b17f20af (patch) | |
tree | 07b392040bd858e205d12cf8f0977cf82fcc2c90 /src/scripting/script.cpp | |
parent | bcb3f283bda155bec33c83c4627f59acb4616dd8 (diff) | |
parent | 4559ca444daacfd02ebb05f1657148a2b4cf3d8b (diff) | |
download | manaserv-f93b4c25242370982715e1a83c11e667b17f20af.tar.gz manaserv-f93b4c25242370982715e1a83c11e667b17f20af.tar.bz2 manaserv-f93b4c25242370982715e1a83c11e667b17f20af.tar.xz manaserv-f93b4c25242370982715e1a83c11e667b17f20af.zip |
Merge branch 'master' into lpc2012
Diffstat (limited to 'src/scripting/script.cpp')
-rw-r--r-- | src/scripting/script.cpp | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/scripting/script.cpp b/src/scripting/script.cpp index 63ab7ff4..72943d43 100644 --- a/src/scripting/script.cpp +++ b/src/scripting/script.cpp @@ -40,7 +40,7 @@ Script::Ref Script::mUpdateCallback; Script::Script(): mCurrentThread(0), - mMap(0) + mContext(0) {} Script::~Script() @@ -95,14 +95,14 @@ static char *skipPotentialBom(char *text) return (strncmp(text, utf8Bom, bomLength) == 0) ? text + bomLength : text; } -bool Script::loadFile(const std::string &name) +bool Script::loadFile(const std::string &name, const Context &context) { int size; char *buffer = ResourceManager::loadFile(name, size); if (buffer) { mScriptFile = name; - load(skipPotentialBom(buffer), name.c_str()); + load(skipPotentialBom(buffer), name.c_str(), context); free(buffer); return true; } else { @@ -114,7 +114,8 @@ void Script::loadNPC(const std::string &name, int id, ManaServ::BeingGender gender, int x, int y, - const char *prog) + const char *prog, + MapComposite *map) { if (!mCreateNpcDelayedCallback.isValid()) { @@ -122,14 +123,23 @@ void Script::loadNPC(const std::string &name, "Could not enabled NPC"); return; } - load(prog, name.c_str()); + Context context; + context.map = map; + load(prog, name.c_str(), context); prepare(mCreateNpcDelayedCallback); push(name); push(id); push(gender); push(x); push(y); - execute(); + execute(context); +} + +int Script::execute(MapComposite *map) +{ + Context context; + context.map = map; + return execute(context); } @@ -153,8 +163,7 @@ static void fastRemoveOne(std::vector<T> &vector, T value) Script::Thread::Thread(Script *script) : mScript(script), - mState(ThreadPending), - mMap(0) + mState(ThreadPending) { script->mThreads.push_back(this); } |