From 196c1c0bffa8bb594ff0a7442748030f47cc9c58 Mon Sep 17 00:00:00 2001 From: Yohann Ferreira Date: Sun, 14 Nov 2010 13:18:14 +0100 Subject: Renamed .hpp files into .h for consistency. Also added an header to the autoattack.{h,cpp} files. Big but trivial fix. --- src/scripting/luautil.h | 126 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 src/scripting/luautil.h (limited to 'src/scripting/luautil.h') diff --git a/src/scripting/luautil.h b/src/scripting/luautil.h new file mode 100644 index 00000000..87185155 --- /dev/null +++ b/src/scripting/luautil.h @@ -0,0 +1,126 @@ +/* + * The Mana Server + * Copyright (C) 2007-2010 The Mana World Development Team + * + * This file is part of The Mana Server. + * + * The Mana Server is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * The Mana Server is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with The Mana Server. If not, see . + */ + +#ifndef SCRIPTING_LUAUTIL_H +#define SCRIPTING_LUAUTIL_H + +extern "C" { +#include +#include +} +#include +#include +#include +#include +#include + +class Being; +class NPC; +class Character; +class Thing; + +// Report script errors and interrupt the script. +void raiseScriptError(lua_State *s, const char *format, ...); + +void raiseWarning(lua_State *s, const char *format, ...); + +NPC *getNPC(lua_State *s, int p); +Character *getCharacter(lua_State *s, int p); +Being *getBeing(lua_State *s, int p); + + +/* Polymorphic wrapper for pushing variables. + Useful for templates.*/ +void push(lua_State *s, int val); +void push(lua_State *s, const std::string &val); +void push(lua_State *s, Thing* val); +void push(lua_State *s, double val); + + +/* Pushes an STL LIST */ +template void pushSTLContainer(lua_State *s, const std::list &container) +{ + int len = container.size(); + lua_newtable(s); + int table = lua_gettop(s); + typename std::list::const_iterator i; + i = container.begin(); + + for (int key = 1; key <= len; key++) + { + push(s, key); + push(s, *i); + lua_settable(s, table); + i++; + } +} + +/* Pushes an STL VECTOR */ +template void pushSTLContainer(lua_State *s, const std::vector &container) +{ + int len = container.size(); + lua_createtable(s, 0, len); + int table = lua_gettop(s); + + for (int key = 0; key < len; key++) + { + push(s, key+1); + push(s, container.at(key)); + lua_settable(s, table); + } +} + +/* Pushes an STL MAP */ +template void pushSTLContainer(lua_State *s, const std::map &container) +{ + int len = container.size(); + lua_createtable(s, 0, len); + int table = lua_gettop(s); + typename std::map::const_iterator i; + i = container.begin(); + + for (int key = 1; key <= len; key++) + { + push(s, i->first); + push(s, i->second); + lua_settable(s, table); + i++; + } +} + +/* Pushes an STL SET */ +template void pushSTLContainer(lua_State *s, const std::set &container) +{ + int len = container.size(); + lua_newtable(s); + int table = lua_gettop(s); + typename std::set::const_iterator i; + i = container.begin(); + + for (int key = 1; key <= len; key++) + { + push(s, key); + push(s, *i); + lua_settable(s, table); + i++; + } +} + +#endif -- cgit v1.2.3-60-g2f50