From bdbdeab0053d9ebbaffea17effeba777b710d390 Mon Sep 17 00:00:00 2001 From: sapier Date: Sat, 23 Feb 2013 18:06:57 +0000 Subject: split scriptapi.cpp Remerge some files in order to reduce number of additional files Make necessary changes for split, rename files, reorganize some bits --- src/scriptapi_item.h | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 src/scriptapi_item.h (limited to 'src/scriptapi_item.h') diff --git a/src/scriptapi_item.h b/src/scriptapi_item.h new file mode 100644 index 000000000..38d64a2cc --- /dev/null +++ b/src/scriptapi_item.h @@ -0,0 +1,167 @@ +/* +Minetest-c55 +Copyright (C) 2013 celeron55, Perttu Ahola + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 of the License, or +(at your option) any later version. + +This program 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 Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#ifndef LUA_ITEM_H_ +#define LUA_ITEM_H_ + +extern "C" { +#include +#include +} + +#include +#include + +#include "itemdef.h" +#include "content_sao.h" +#include "util/pointedthing.h" +#include "inventory.h" + +#include "inventory.h" + +ItemStack read_item(lua_State *L, int index); +std::vector read_items(lua_State *L, int index); +void push_items(lua_State *L, const std::vector &items); + +class LuaItemStack +{ +private: + ItemStack m_stack; + + static const char className[]; + static const luaL_reg methods[]; + + // Exported functions + + // garbage collector + static int gc_object(lua_State *L); + + // is_empty(self) -> true/false + static int l_is_empty(lua_State *L); + + // get_name(self) -> string + static int l_get_name(lua_State *L); + + // get_count(self) -> number + static int l_get_count(lua_State *L); + + // get_wear(self) -> number + static int l_get_wear(lua_State *L); + + // get_metadata(self) -> string + static int l_get_metadata(lua_State *L); + + // clear(self) -> true + static int l_clear(lua_State *L); + + // replace(self, itemstack or itemstring or table or nil) -> true + static int l_replace(lua_State *L); + + // to_string(self) -> string + static int l_to_string(lua_State *L); + + // to_table(self) -> table or nil + static int l_to_table(lua_State *L); + + // get_stack_max(self) -> number + static int l_get_stack_max(lua_State *L); + + // get_free_space(self) -> number + static int l_get_free_space(lua_State *L); + + // is_known(self) -> true/false + // Checks if the item is defined. + static int l_is_known(lua_State *L); + + // get_definition(self) -> table + // Returns the item definition table from minetest.registered_items, + // or a fallback one (name="unknown") + static int l_get_definition(lua_State *L); + + // get_tool_capabilities(self) -> table + // Returns the effective tool digging properties. + // Returns those of the hand ("") if this item has none associated. + static int l_get_tool_capabilities(lua_State *L); + + // add_wear(self, amount) -> true/false + // The range for "amount" is [0,65535]. Wear is only added if the item + // is a tool. Adding wear might destroy the item. + // Returns true if the item is (or was) a tool. + static int l_add_wear(lua_State *L); + + // add_item(self, itemstack or itemstring or table or nil) -> itemstack + // Returns leftover item stack + static int l_add_item(lua_State *L); + + // item_fits(self, itemstack or itemstring or table or nil) -> true/false, itemstack + // First return value is true iff the new item fits fully into the stack + // Second return value is the would-be-left-over item stack + static int l_item_fits(lua_State *L); + + // take_item(self, takecount=1) -> itemstack + static int l_take_item(lua_State *L); + + // peek_item(self, peekcount=1) -> itemstack + static int l_peek_item(lua_State *L); + +public: + LuaItemStack(const ItemStack &item); + ~LuaItemStack(); + + const ItemStack& getItem() const; + ItemStack& getItem(); + + // LuaItemStack(itemstack or itemstring or table or nil) + // Creates an LuaItemStack and leaves it on top of stack + static int create_object(lua_State *L); + // Not callable from Lua + static int create(lua_State *L, const ItemStack &item); + static LuaItemStack* checkobject(lua_State *L, int narg); + static void Register(lua_State *L); + +}; + +/*****************************************************************************/ +/* Mod API */ +/*****************************************************************************/ +int l_register_item_raw(lua_State *L); +int l_register_alias_raw(lua_State *L); + +/*****************************************************************************/ +/* scriptapi internal */ +/*****************************************************************************/ +bool get_item_callback(lua_State *L, + const char *name, const char *callbackname); +ItemDefinition read_item_definition(lua_State *L, int index, + ItemDefinition default_def = ItemDefinition()); + +extern struct EnumString es_ItemType[]; + +/*****************************************************************************/ +/* Minetest interface */ +/*****************************************************************************/ +bool scriptapi_item_on_drop(lua_State *L, ItemStack &item, + ServerActiveObject *dropper, v3f pos); +bool scriptapi_item_on_place(lua_State *L, ItemStack &item, + ServerActiveObject *placer, const PointedThing &pointed); +bool scriptapi_item_on_use(lua_State *L, ItemStack &item, + ServerActiveObject *user, const PointedThing &pointed); + + +#endif /* LUA_ITEM_H_ */ -- cgit v1.2.3 From b9512cab1b995e74c11b12139fe9320c02ff2060 Mon Sep 17 00:00:00 2001 From: kwolekr Date: Wed, 6 Mar 2013 09:31:06 -0500 Subject: Fix Irrlicht includes in scriptapi_* --- src/scriptapi.h | 2 ++ src/scriptapi_inventory.h | 2 -- src/scriptapi_item.h | 1 - src/scriptapi_node.h | 1 - src/scriptapi_nodemeta.h | 2 -- src/scriptapi_nodetimer.h | 2 -- src/scriptapi_noise.cpp | 3 --- 7 files changed, 2 insertions(+), 11 deletions(-) (limited to 'src/scriptapi_item.h') diff --git a/src/scriptapi.h b/src/scriptapi.h index 4a0b07894..7f19bcef5 100644 --- a/src/scriptapi.h +++ b/src/scriptapi.h @@ -23,6 +23,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include #include +#include "irr_v3d.h" +#include "irr_v2d.h" extern "C" { #include diff --git a/src/scriptapi_inventory.h b/src/scriptapi_inventory.h index 029007352..14f4fe026 100644 --- a/src/scriptapi_inventory.h +++ b/src/scriptapi_inventory.h @@ -20,8 +20,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #ifndef LUA_INVENTORY_H_ #define LUA_INVENTORY_H_ -#include - extern "C" { #include #include diff --git a/src/scriptapi_item.h b/src/scriptapi_item.h index 38d64a2cc..e0f213990 100644 --- a/src/scriptapi_item.h +++ b/src/scriptapi_item.h @@ -25,7 +25,6 @@ extern "C" { #include } -#include #include #include "itemdef.h" diff --git a/src/scriptapi_node.h b/src/scriptapi_node.h index c00df9dc5..665b58bfc 100644 --- a/src/scriptapi_node.h +++ b/src/scriptapi_node.h @@ -20,7 +20,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #ifndef LUA_NODE_H_ #define LUA_NODE_H_ -#include #include #include diff --git a/src/scriptapi_nodemeta.h b/src/scriptapi_nodemeta.h index 6d1802a9c..017abe181 100644 --- a/src/scriptapi_nodemeta.h +++ b/src/scriptapi_nodemeta.h @@ -19,8 +19,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #ifndef LUA_NODEMETA_H_ #define LUA_NODEMETA_H_ -#include - extern "C" { #include #include diff --git a/src/scriptapi_nodetimer.h b/src/scriptapi_nodetimer.h index 184ff8cc9..a4536d947 100644 --- a/src/scriptapi_nodetimer.h +++ b/src/scriptapi_nodetimer.h @@ -20,8 +20,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #ifndef LUA_NODETIMER_H_ #define LUA_NODETIMER_H_ -#include - extern "C" { #include #include diff --git a/src/scriptapi_noise.cpp b/src/scriptapi_noise.cpp index 86f6e3097..1dd6ef8e0 100644 --- a/src/scriptapi_noise.cpp +++ b/src/scriptapi_noise.cpp @@ -22,9 +22,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "scriptapi_types.h" #include "script.h" -#include - - // garbage collector int LuaPerlinNoise::gc_object(lua_State *L) { -- cgit v1.2.3