mirror of
https://github.com/minetest/minetest.git
synced 2024-11-23 16:13:46 +01:00
Make ToolItem and MaterialItem to convert names by aliases at creation time too (necessary for eg. crafting)
This commit is contained in:
parent
97c3bc408b
commit
6145a135bd
@ -246,7 +246,9 @@ MaterialItem::MaterialItem(IGameDef *gamedef, std::string nodename, u16 count):
|
|||||||
{
|
{
|
||||||
if(nodename == "")
|
if(nodename == "")
|
||||||
nodename = "unknown_block";
|
nodename = "unknown_block";
|
||||||
m_nodename = nodename;
|
|
||||||
|
// Convert directly to the correct name through aliases
|
||||||
|
m_nodename = gamedef->ndef()->getAlias(nodename);
|
||||||
}
|
}
|
||||||
// Legacy constructor
|
// Legacy constructor
|
||||||
MaterialItem::MaterialItem(IGameDef *gamedef, content_t content, u16 count):
|
MaterialItem::MaterialItem(IGameDef *gamedef, content_t content, u16 count):
|
||||||
@ -309,6 +311,15 @@ content_t MaterialItem::getMaterial() const
|
|||||||
ToolItem
|
ToolItem
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
ToolItem::ToolItem(IGameDef *gamedef, std::string toolname, u16 wear):
|
||||||
|
InventoryItem(gamedef, 1)
|
||||||
|
{
|
||||||
|
// Convert directly to the correct name through aliases
|
||||||
|
m_toolname = gamedef->tdef()->getAlias(toolname);
|
||||||
|
|
||||||
|
m_wear = wear;
|
||||||
|
}
|
||||||
|
|
||||||
std::string ToolItem::getImageBasename() const
|
std::string ToolItem::getImageBasename() const
|
||||||
{
|
{
|
||||||
return m_gamedef->getToolDefManager()->getImagename(m_toolname);
|
return m_gamedef->getToolDefManager()->getImagename(m_toolname);
|
||||||
@ -357,9 +368,7 @@ bool ToolItem::isKnown() const
|
|||||||
CraftItem::CraftItem(IGameDef *gamedef, std::string subname, u16 count):
|
CraftItem::CraftItem(IGameDef *gamedef, std::string subname, u16 count):
|
||||||
InventoryItem(gamedef, count)
|
InventoryItem(gamedef, count)
|
||||||
{
|
{
|
||||||
// Convert directly to the correct name through aliases.
|
// Convert directly to the correct name through aliases
|
||||||
// This is necessary because CraftItem callbacks are stored in
|
|
||||||
// Lua refenced by their correct name
|
|
||||||
m_subname = gamedef->cidef()->getAlias(subname);
|
m_subname = gamedef->cidef()->getAlias(subname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -331,12 +331,7 @@ private:
|
|||||||
class ToolItem : public InventoryItem
|
class ToolItem : public InventoryItem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ToolItem(IGameDef *gamedef, std::string toolname, u16 wear):
|
ToolItem(IGameDef *gamedef, std::string toolname, u16 wear);
|
||||||
InventoryItem(gamedef, 1)
|
|
||||||
{
|
|
||||||
m_toolname = toolname;
|
|
||||||
m_wear = wear;
|
|
||||||
}
|
|
||||||
/*
|
/*
|
||||||
Implementation interface
|
Implementation interface
|
||||||
*/
|
*/
|
||||||
|
@ -403,15 +403,8 @@ public:
|
|||||||
}
|
}
|
||||||
virtual bool getId(const std::string &name_, content_t &result) const
|
virtual bool getId(const std::string &name_, content_t &result) const
|
||||||
{
|
{
|
||||||
std::string name = name_;
|
|
||||||
// Convert name according to possible alias
|
// Convert name according to possible alias
|
||||||
std::map<std::string, std::string>::const_iterator i;
|
std::string name = getAlias(name_);
|
||||||
i = m_aliases.find(name);
|
|
||||||
if(i != m_aliases.end()){
|
|
||||||
/*infostream<<"ndef: alias active: "<<name<<" -> "<<i->second
|
|
||||||
<<std::endl;*/
|
|
||||||
name = i->second;
|
|
||||||
}
|
|
||||||
// Get id
|
// Get id
|
||||||
return m_name_id_mapping.getId(name, result);
|
return m_name_id_mapping.getId(name, result);
|
||||||
}
|
}
|
||||||
@ -427,6 +420,14 @@ public:
|
|||||||
getId(name, id);
|
getId(name, id);
|
||||||
return get(id);
|
return get(id);
|
||||||
}
|
}
|
||||||
|
virtual std::string getAlias(const std::string &name) const
|
||||||
|
{
|
||||||
|
std::map<std::string, std::string>::const_iterator i;
|
||||||
|
i = m_aliases.find(name);
|
||||||
|
if(i != m_aliases.end())
|
||||||
|
return i->second;
|
||||||
|
return name;
|
||||||
|
}
|
||||||
// IWritableNodeDefManager
|
// IWritableNodeDefManager
|
||||||
virtual void set(content_t c, const ContentFeatures &def)
|
virtual void set(content_t c, const ContentFeatures &def)
|
||||||
{
|
{
|
||||||
|
@ -253,6 +253,7 @@ public:
|
|||||||
virtual bool getId(const std::string &name, content_t &result) const=0;
|
virtual bool getId(const std::string &name, content_t &result) const=0;
|
||||||
virtual content_t getId(const std::string &name) const=0;
|
virtual content_t getId(const std::string &name) const=0;
|
||||||
virtual const ContentFeatures& get(const std::string &name) const=0;
|
virtual const ContentFeatures& get(const std::string &name) const=0;
|
||||||
|
virtual std::string getAlias(const std::string &name) const =0;
|
||||||
|
|
||||||
virtual void serialize(std::ostream &os)=0;
|
virtual void serialize(std::ostream &os)=0;
|
||||||
};
|
};
|
||||||
@ -270,6 +271,7 @@ public:
|
|||||||
virtual content_t getId(const std::string &name) const=0;
|
virtual content_t getId(const std::string &name) const=0;
|
||||||
// If not found, returns the features of CONTENT_IGNORE
|
// If not found, returns the features of CONTENT_IGNORE
|
||||||
virtual const ContentFeatures& get(const std::string &name) const=0;
|
virtual const ContentFeatures& get(const std::string &name) const=0;
|
||||||
|
virtual std::string getAlias(const std::string &name) const =0;
|
||||||
|
|
||||||
// Register node definition
|
// Register node definition
|
||||||
virtual void set(content_t c, const ContentFeatures &def)=0;
|
virtual void set(content_t c, const ContentFeatures &def)=0;
|
||||||
|
@ -96,12 +96,7 @@ public:
|
|||||||
virtual const ToolDefinition* getToolDefinition(const std::string &toolname_) const
|
virtual const ToolDefinition* getToolDefinition(const std::string &toolname_) const
|
||||||
{
|
{
|
||||||
// Convert name according to possible alias
|
// Convert name according to possible alias
|
||||||
std::string toolname = toolname_;
|
std::string toolname = getAlias(toolname_);
|
||||||
std::map<std::string, std::string>::const_iterator i;
|
|
||||||
i = m_aliases.find(toolname);
|
|
||||||
if(i != m_aliases.end()){
|
|
||||||
toolname = i->second;
|
|
||||||
}
|
|
||||||
// Get the definition
|
// Get the definition
|
||||||
core::map<std::string, ToolDefinition*>::Node *n;
|
core::map<std::string, ToolDefinition*>::Node *n;
|
||||||
n = m_tool_definitions.find(toolname);
|
n = m_tool_definitions.find(toolname);
|
||||||
@ -130,6 +125,15 @@ public:
|
|||||||
}
|
}
|
||||||
return def->properties;
|
return def->properties;
|
||||||
}
|
}
|
||||||
|
virtual std::string getAlias(const std::string &name) const
|
||||||
|
{
|
||||||
|
std::map<std::string, std::string>::const_iterator i;
|
||||||
|
i = m_aliases.find(name);
|
||||||
|
if(i != m_aliases.end())
|
||||||
|
return i->second;
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
// IWritableToolDefManager
|
||||||
virtual bool registerTool(std::string toolname, const ToolDefinition &def)
|
virtual bool registerTool(std::string toolname, const ToolDefinition &def)
|
||||||
{
|
{
|
||||||
infostream<<"registerTool: registering tool \""<<toolname<<"\""<<std::endl;
|
infostream<<"registerTool: registering tool \""<<toolname<<"\""<<std::endl;
|
||||||
|
@ -69,6 +69,7 @@ public:
|
|||||||
virtual std::string getImagename(const std::string &toolname) const =0;
|
virtual std::string getImagename(const std::string &toolname) const =0;
|
||||||
virtual ToolDiggingProperties getDiggingProperties(
|
virtual ToolDiggingProperties getDiggingProperties(
|
||||||
const std::string &toolname) const =0;
|
const std::string &toolname) const =0;
|
||||||
|
virtual std::string getAlias(const std::string &name) const =0;
|
||||||
|
|
||||||
virtual void serialize(std::ostream &os)=0;
|
virtual void serialize(std::ostream &os)=0;
|
||||||
};
|
};
|
||||||
@ -82,6 +83,7 @@ public:
|
|||||||
virtual std::string getImagename(const std::string &toolname) const =0;
|
virtual std::string getImagename(const std::string &toolname) const =0;
|
||||||
virtual ToolDiggingProperties getDiggingProperties(
|
virtual ToolDiggingProperties getDiggingProperties(
|
||||||
const std::string &toolname) const =0;
|
const std::string &toolname) const =0;
|
||||||
|
virtual std::string getAlias(const std::string &name) const =0;
|
||||||
|
|
||||||
virtual bool registerTool(std::string toolname, const ToolDefinition &def)=0;
|
virtual bool registerTool(std::string toolname, const ToolDefinition &def)=0;
|
||||||
virtual void clear()=0;
|
virtual void clear()=0;
|
||||||
|
Loading…
Reference in New Issue
Block a user