summaryrefslogtreecommitdiff
path: root/src/tooldef.cpp
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-11-15 01:00:16 +0200
committerPerttu Ahola <celeron55@gmail.com>2011-11-29 19:13:42 +0200
commit4b8e4dae589cabef054991c08eb2cd47c867994a (patch)
treeeb874a25245fa0a287ce5c8454887d7a88cca1df /src/tooldef.cpp
parent0754f2a7af831922e26c12e707dfb6724897322f (diff)
downloadminetest-4b8e4dae589cabef054991c08eb2cd47c867994a.tar.gz
minetest-4b8e4dae589cabef054991c08eb2cd47c867994a.tar.bz2
minetest-4b8e4dae589cabef054991c08eb2cd47c867994a.zip
Tool definition transfer to client
Diffstat (limited to 'src/tooldef.cpp')
-rw-r--r--src/tooldef.cpp22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/tooldef.cpp b/src/tooldef.cpp
index 1c85dbd8e..1284a52ab 100644
--- a/src/tooldef.cpp
+++ b/src/tooldef.cpp
@@ -85,11 +85,7 @@ class CToolDefManager: public IWritableToolDefManager
public:
virtual ~CToolDefManager()
{
- for(core::map<std::string, ToolDefinition*>::Iterator
- i = m_tool_definitions.getIterator();
- i.atEnd() == false; i++){
- delete i.getNode()->getValue();
- }
+ clear();
}
virtual const ToolDefinition* getToolDefinition(const std::string &toolname) const
{
@@ -123,16 +119,25 @@ public:
virtual bool registerTool(std::string toolname, const ToolDefinition &def)
{
infostream<<"registerTool: registering tool \""<<toolname<<"\""<<std::endl;
- core::map<std::string, ToolDefinition*>::Node *n;
+ /*core::map<std::string, ToolDefinition*>::Node *n;
n = m_tool_definitions.find(toolname);
if(n != NULL){
errorstream<<"registerTool: registering tool \""<<toolname
<<"\" failed: name is already registered"<<std::endl;
return false;
- }
+ }*/
m_tool_definitions[toolname] = new ToolDefinition(def);
return true;
}
+ virtual void clear()
+ {
+ for(core::map<std::string, ToolDefinition*>::Iterator
+ i = m_tool_definitions.getIterator();
+ i.atEnd() == false; i++){
+ delete i.getNode()->getValue();
+ }
+ m_tool_definitions.clear();
+ }
virtual void serialize(std::ostream &os)
{
writeU8(os, 0); // version
@@ -153,6 +158,9 @@ public:
}
virtual void deSerialize(std::istream &is)
{
+ // Clear everything
+ clear();
+ // Deserialize
int version = readU8(is);
if(version != 0) throw SerializationError(
"unsupported ToolDefManager version");