Make getStackMax return the correct maximal stack size

This commit is contained in:
SmallJoker 2016-09-06 19:13:52 +02:00 committed by kwolekr
parent aa33166386
commit 2de8c22a99
3 changed files with 5 additions and 7 deletions

@ -80,15 +80,14 @@ struct ItemStack
// Maximum size of a stack // Maximum size of a stack
u16 getStackMax(IItemDefManager *itemdef) const u16 getStackMax(IItemDefManager *itemdef) const
{ {
s16 max = itemdef->get(name).stack_max; return itemdef->get(name).stack_max;
return (max >= 0) ? max : 0;
} }
// Number of items that can be added to this stack // Number of items that can be added to this stack
u16 freeSpace(IItemDefManager *itemdef) const u16 freeSpace(IItemDefManager *itemdef) const
{ {
u16 max = getStackMax(itemdef); u16 max = getStackMax(itemdef);
if(count > max) if (count >= max)
return 0; return 0;
return max - count; return max - count;
} }

@ -61,7 +61,7 @@ struct ItemDefinition
/* /*
Item stack and interaction properties Item stack and interaction properties
*/ */
s16 stack_max; u16 stack_max;
bool usable; bool usable;
bool liquids_pointable; bool liquids_pointable;
// May be NULL. If non-NULL, deleted by destructor // May be NULL. If non-NULL, deleted by destructor

@ -65,9 +65,8 @@ ItemDefinition read_item_definition(lua_State* L,int index,
} }
lua_pop(L, 1); lua_pop(L, 1);
def.stack_max = getintfield_default(L, index, "stack_max", def.stack_max); int stack_max = getintfield_default(L, index, "stack_max", def.stack_max);
if(def.stack_max == 0) def.stack_max = rangelim(stack_max, 1, U16_MAX);
def.stack_max = 1;
lua_getfield(L, index, "on_use"); lua_getfield(L, index, "on_use");
def.usable = lua_isfunction(L, -1); def.usable = lua_isfunction(L, -1);