aboutsummaryrefslogtreecommitdiff
path: root/advtrains/models/advtrains_dtrack_vst32.obj
diff options
context:
space:
mode:
authorBlockhead <jbis1337@hotmail.com>2020-09-11 17:18:45 +1000
committerBlockhead <jbis1337@hotmail.com>2020-09-11 17:19:23 +1000
commit487ca4e38cddcb5245b2d42134ee15390b0c1dda (patch)
tree4d9b25686b5ed6417daba1d5e9c60f6ef465dc26 /advtrains/models/advtrains_dtrack_vst32.obj
parent1d224d6b4c714ff63f98d3f935ccbd9f697fb1d9 (diff)
downloadadvtrains-487ca4e38cddcb5245b2d42134ee15390b0c1dda.tar.gz
advtrains-487ca4e38cddcb5245b2d42134ee15390b0c1dda.tar.bz2
advtrains-487ca4e38cddcb5245b2d42134ee15390b0c1dda.zip
Enable three-way turnouts with proper conns support on all sides
I chose to make three-way turnouts have 5 conns (last one is not used) so that they can be distinguished from crossings easily without refactoring the code. Three-ways should have their last entry with {["3"]=0} instead as a sort of internal mark.
Diffstat (limited to 'advtrains/models/advtrains_dtrack_vst32.obj')
0 files changed, 0 insertions, 0 deletions
150 151 152 153
/*
Minetest
Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>

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 L_ITEM_H_
#define L_ITEM_H_

#include "lua_api/l_base.h"
#include "inventory.h"  // ItemStack

class LuaItemStack : public ModApiBase {
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);

	// set_name(self, name)
	static int l_set_name(lua_State *L);

	// get_count(self) -> number
	static int l_get_count(lua_State *L);

	// set_count(self, number)
	static int l_set_count(lua_State *L);

	// get_wear(self) -> number
	static int l_get_wear(lua_State *L);

	// set_wear(self, number)
	static int l_set_wear(lua_State *L);

	// get_meta(self) -> string
	static int l_get_meta(lua_State *L);

	// DEPRECATED
	// get_metadata(self) -> string
	static int l_get_metadata(lua_State *L);

	// DEPRECATED
	// set_metadata(self, string)
	static int l_set_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 core.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);