Skip to content
Snippets Groups Projects
Commit 270a4827 authored by Perttu Ahola's avatar Perttu Ahola
Browse files

Add InvRef:get_list() and InvRef:set_list() and fix some things (untested)

parent e0b48907
Branches
Tags
No related merge requests found
......@@ -1042,6 +1042,7 @@ class InvRef
Inventory *inv = getinv(L, ref);
if(newsize == 0){
inv->deleteList(listname);
reportInventoryChange(L, ref);
return 0;
}
InventoryList *list = inv->getList(listname);
......@@ -1050,6 +1051,7 @@ class InvRef
} else {
list = inv->addList(listname, newsize);
}
reportInventoryChange(L, ref);
return 0;
}
......@@ -1085,9 +1087,37 @@ class InvRef
bool success = (olditem != newitem);
delete olditem;
lua_pushboolean(L, success);
reportInventoryChange(L, ref);
return 1;
}
// get_list(self, listname) -> list or nil
static int l_get_list(lua_State *L)
{
InvRef *ref = checkobject(L, 1);
const char *listname = luaL_checkstring(L, 2);
Inventory *inv = getinv(L, ref);
inventory_get_list_to_lua(inv, listname, L);
return 1;
}
// set_list(self, listname, list)
static int l_set_list(lua_State *L)
{
InvRef *ref = checkobject(L, 1);
const char *listname = luaL_checkstring(L, 2);
Inventory *inv = getinv(L, ref);
InventoryList *list = inv->getList(listname);
if(list)
inventory_set_list_from_lua(inv, listname, L, 3,
get_server(L), list->getSize());
else
inventory_set_list_from_lua(inv, listname, L, 3,
get_server(L));
reportInventoryChange(L, ref);
return 0;
}
public:
InvRef(const InventoryLocation &loc):
m_loc(loc)
......@@ -1154,6 +1184,8 @@ const luaL_reg InvRef::methods[] = {
method(InvRef, set_size),
method(InvRef, get_stack),
method(InvRef, set_stack),
method(InvRef, get_list),
method(InvRef, set_list),
{0,0}
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment