summaryrefslogtreecommitdiff
path: root/src/scripting/script.cpp
diff options
context:
space:
mode:
authorGuillaume Melquiond <guillaume.melquiond@gmail.com>2007-08-15 06:35:03 +0000
committerGuillaume Melquiond <guillaume.melquiond@gmail.com>2007-08-15 06:35:03 +0000
commit99548fb47fee447b5f22d5338501ac574086c4fd (patch)
treefcef60aed6d7d0f04437249815af36c25461c5dd /src/scripting/script.cpp
parent2fa455ff7870dc09d75bb89a897c7c1d26eb9020 (diff)
downloadmanaserv-99548fb47fee447b5f22d5338501ac574086c4fd.tar.gz
manaserv-99548fb47fee447b5f22d5338501ac574086c4fd.tar.bz2
manaserv-99548fb47fee447b5f22d5338501ac574086c4fd.tar.xz
manaserv-99548fb47fee447b5f22d5338501ac574086c4fd.zip
Added helper functions for loading files and NPCs as scripts. Put Lua helpers into a separate library automatically loaded into new contexts.
Diffstat (limited to 'src/scripting/script.cpp')
-rw-r--r--src/scripting/script.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/scripting/script.cpp b/src/scripting/script.cpp
index 12aa0d18..3e19305d 100644
--- a/src/scripting/script.cpp
+++ b/src/scripting/script.cpp
@@ -23,9 +23,11 @@
#include <map>
-#include "utils/logger.h"
#include "scripting/script.hpp"
+#include "resourcemanager.h"
+#include "utils/logger.h"
+
typedef std::map< std::string, Script::Factory > Engines;
static Engines *engines = NULL;
@@ -60,3 +62,24 @@ void Script::update()
execute();
}
+void Script::loadFile(std::string const &name)
+{
+ ResourceManager *resman = ResourceManager::getInstance();
+ int size;
+ char *buffer = (char *)resman->loadFile(name, size);
+ if (buffer)
+ {
+ load(buffer);
+ free(buffer);
+ }
+}
+
+void Script::loadNPC(int id, int x, int y, char const *prog)
+{
+ load(prog);
+ prepare("create_npc_delayed");
+ push(id);
+ push(x);
+ push(y);
+ execute();
+}