{return &m_selection_box;}
v3f getPosition()
{return m_position;}
+
+ std::string infoText()
+ {return m_infotext;}
private:
core::aabbox3d<f32> m_selection_box;
scene::IMeshSceneNode *m_node;
v3f m_position;
std::string m_inventorystring;
+ std::string m_infotext;
};
/*
m_node(NULL),
m_position(v3f(0,10*BS,0))
{
- ClientActiveObject::registerType(getType(), create);
+ if(!gamedef && !env)
+ {
+ ClientActiveObject::registerType(getType(), create);
+ }
}
ItemCAO::~ItemCAO()
}
updateNodePos();
+
+ /*
+ Set infotext to item name if item cannot be deserialized
+ */
+ try{
+ InventoryItem *item = NULL;
+ item = InventoryItem::deSerialize(m_inventorystring, m_gamedef);
+ if(item){
+ if(!item->isKnown())
+ m_infotext = "Unknown item: '" + m_inventorystring + "'";
+ }
+ delete item;
+ }
+ catch(SerializationError &e)
+ {
+ m_infotext = "Unknown item: '" + m_inventorystring + "'";
+ }
}
/*
}
#endif
+bool ToolItem::isKnown() const
+{
+ IToolDefManager *tdef = m_gamedef->tdef();
+ const ToolDefinition *def = tdef->getToolDefinition(m_toolname);
+ return (def != NULL);
+}
+
/*
CraftItem
*/
}
#endif
+bool CraftItem::isKnown() const
+{
+ ICraftItemDefManager *cidef = m_gamedef->cidef();
+ const CraftItemDefinition *def = cidef->getCraftItemDefinition(m_subname);
+ return (def != NULL);
+}
+
u16 CraftItem::getStackMax() const
{
ICraftItemDefManager *cidef = m_gamedef->cidef();
virtual std::string getText() { return ""; }
// Returns the string used for inventory
virtual std::string getItemString();
+
+ // Shall return false if item is not known and cannot be used
+ virtual bool isKnown() const { return true; }
/*
Quantity methods
return os.str();
}
+ virtual bool isKnown() const;
+
virtual bool addableTo(const InventoryItem *other) const
{
if(std::string(other->getName()) != "CraftItem")
{
return "";
}
+
+ virtual bool isKnown() const;
virtual bool isSubsetOf(const InventoryItem *other) const
{