//return "Furnace";
if(m_fuel_time >= m_fuel_totaltime)
{
- InventoryList *src_list = m_inventory->getList("src");
+ const InventoryList *src_list = m_inventory->getList("src");
assert(src_list);
- InventoryItem *src_item = src_list->getItem(0);
+ const InventoryItem *src_item = src_list->getItem(0);
if(src_item)
return "Furnace is out of fuel";
InventoryList *src_list = m_inventory->getList("src");
assert(src_list);
- InventoryItem *src_item = src_list->getItem(0);
+ const InventoryItem *src_item = src_list->getItem(0);
// Start only if there are free slots in dst, so that it can
// accomodate any result item
InventoryList *fuel_list = m_inventory->getList("fuel");
assert(fuel_list);
- InventoryItem *fuel_item = fuel_list->getItem(0);
+ const InventoryItem *fuel_item = fuel_list->getItem(0);
if(ItemSpec(ITEM_MATERIAL, CONTENT_TREE).checkItem(fuel_item))
{
MaterialItem
*/
-bool MaterialItem::isCookable()
+bool MaterialItem::isCookable() const
{
return item_material_is_cookable(m_content);
}
-InventoryItem *MaterialItem::createCookResult()
+InventoryItem *MaterialItem::createCookResult() const
{
return item_material_create_cook_result(m_content);
}
return InventoryItem::createSAO(env, id, pos);
}
-u16 CraftItem::getDropCount()
+u16 CraftItem::getDropCount() const
{
// Special cases
s16 dc = item_craft_get_drop_count(m_subname);
return InventoryItem::getDropCount();
}
-bool CraftItem::isCookable()
+bool CraftItem::isCookable() const
{
return item_craft_is_cookable(m_subname);
}
-InventoryItem *CraftItem::createCookResult()
+InventoryItem *CraftItem::createCookResult() const
{
return item_craft_create_cook_result(m_subname);
}
return *this;
}
-std::string InventoryList::getName()
+const std::string &InventoryList::getName() const
{
return m_name;
}
return getSize() - getUsedSlots();
}
+const InventoryItem * InventoryList::getItem(u32 i) const
+{
+ if(i > m_items.size() - 1)
+ return NULL;
+ return m_items[i];
+}
+
InventoryItem * InventoryList::getItem(u32 i)
{
if(i > m_items.size() - 1)
bool InventoryList::itemFits(u32 i, InventoryItem *newitem)
{
// If it is an empty position, it's an easy job.
- InventoryItem *to_item = getItem(i);
+ const InventoryItem *to_item = getItem(i);
if(to_item == NULL)
{
return true;
return m_lists[i];
}
-s32 Inventory::getListIndex(const std::string &name)
+const InventoryList * Inventory::getList(const std::string &name) const
+{
+ s32 i = getListIndex(name);
+ if(i == -1)
+ return NULL;
+ return m_lists[i];
+}
+
+const s32 Inventory::getListIndex(const std::string &name) const
{
for(u32 i=0; i<m_lists.size(); i++)
{
Craft checking system
*/
-bool ItemSpec::checkItem(InventoryItem *item)
+bool ItemSpec::checkItem(const InventoryItem *item) const
{
if(type == ITEM_NONE)
{
return true;
}
-bool checkItemCombination(InventoryItem **items, ItemSpec *specs)
+bool checkItemCombination(InventoryItem const * const *items, const ItemSpec *specs)
{
u16 items_min_x = 100;
u16 items_max_x = 100;
u16 items_y = items_min_y + y;
u16 specs_x = specs_min_x + x;
u16 specs_y = specs_min_y + y;
- InventoryItem *item = items[items_y * 3 + items_x];
- ItemSpec &spec = specs[specs_y * 3 + specs_x];
+ const InventoryItem *item = items[items_y * 3 + items_x];
+ const ItemSpec &spec = specs[specs_y * 3 + specs_x];
if(spec.checkItem(item) == false)
return false;
// Creates an object from the item, to be placed in the world.
virtual ServerActiveObject* createSAO(ServerEnvironment *env, u16 id, v3f pos);
// Gets amount of items that dropping one SAO will decrement
- virtual u16 getDropCount(){ return getCount(); }
+ virtual u16 getDropCount() const { return getCount(); }
/*
Quantity methods
*/
// Shall return true if the item can be add()ed to the other
- virtual bool addableTo(InventoryItem *other)
+ virtual bool addableTo(const InventoryItem *other) const
{
return false;
}
- u16 getCount()
+ u16 getCount() const
{
return m_count;
}
m_count = count;
}
// This should return something else for stackable items
- virtual u16 freeSpace()
+ virtual u16 freeSpace() const
{
return 0;
}
*/
// Whether it can be cooked
- virtual bool isCookable(){return false;}
+ virtual bool isCookable() const {return false;}
// Time of cooking
virtual float getCookTime(){return 3.0;}
// Result of cooking (can randomize)
- virtual InventoryItem *createCookResult(){return NULL;}
+ virtual InventoryItem *createCookResult() const {return NULL;}
// Eat, press, activate, whatever.
// Called when item is right-clicked when lying on ground.
return os.str();
}
- virtual bool addableTo(InventoryItem *other)
+ virtual bool addableTo(const InventoryItem *other) const
{
if(std::string(other->getName()) != "MaterialItem")
return false;
return false;
return true;
}
- u16 freeSpace()
+ u16 freeSpace() const
{
if(m_count > QUANTITY_ITEM_MAX_COUNT)
return 0;
/*
Other properties
*/
- bool isCookable();
- InventoryItem *createCookResult();
+ bool isCookable() const;
+ InventoryItem *createCookResult() const;
/*
Special methods
*/
}
ServerActiveObject* createSAO(ServerEnvironment *env, u16 id, v3f pos);
- u16 getDropCount();
+ u16 getDropCount() const;
- virtual bool addableTo(InventoryItem *other)
+ virtual bool addableTo(const InventoryItem *other) const
{
if(std::string(other->getName()) != "CraftItem")
return false;
return false;
return true;
}
- u16 freeSpace()
+ u16 freeSpace() const
{
if(m_count > QUANTITY_ITEM_MAX_COUNT)
return 0;
Other properties
*/
- bool isCookable();
- InventoryItem *createCookResult();
+ bool isCookable() const;
+ InventoryItem *createCookResult() const;
bool use(ServerEnvironment *env, Player *player);
InventoryList(const InventoryList &other);
InventoryList & operator = (const InventoryList &other);
- std::string getName();
+ const std::string &getName() const;
u32 getSize();
// Count used slots
u32 getUsedSlots();
void setDirty(bool dirty=true){ m_dirty = dirty; }*/
// Get pointer to item
+ const InventoryItem * getItem(u32 i) const;
InventoryItem * getItem(u32 i);
// Returns old item (or NULL). Parameter can be NULL.
InventoryItem * changeItem(u32 i, InventoryItem *newitem);
InventoryList * addList(const std::string &name, u32 size);
InventoryList * getList(const std::string &name);
+ const InventoryList * getList(const std::string &name) const;
bool deleteList(const std::string &name);
// A shorthand for adding items.
// Returns NULL if the item was fully added, leftover otherwise.
private:
// -1 if not found
- s32 getListIndex(const std::string &name);
+ const s32 getListIndex(const std::string &name) const;
core::array<InventoryList*> m_lists;
};
{
}
- bool checkItem(InventoryItem *item);
+ bool checkItem(const InventoryItem *item) const;
};
/*
items: a pointer to an array of 9 pointers to items
specs: a pointer to an array of 9 ItemSpecs
*/
-bool checkItemCombination(InventoryItem **items, ItemSpec *specs);
+bool checkItemCombination(const InventoryItem * const*items, const ItemSpec *specs);
#endif