diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-11-14 21:41:30 +0200 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-11-29 19:13:42 +0200 |
commit | c6fd2986d4261cf742d3bc21e8c12be59ab89f95 (patch) | |
tree | ef6ce8210f7f017bce42a024b75a44e73b5ab139 /src/tooldef.cpp | |
parent | abceeee92f99b84ebb79968269835a4f509bfb90 (diff) | |
download | minetest-c6fd2986d4261cf742d3bc21e8c12be59ab89f95.tar.gz minetest-c6fd2986d4261cf742d3bc21e8c12be59ab89f95.tar.bz2 minetest-c6fd2986d4261cf742d3bc21e8c12be59ab89f95.zip |
GameDef compiles
Diffstat (limited to 'src/tooldef.cpp')
-rw-r--r-- | src/tooldef.cpp | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/src/tooldef.cpp b/src/tooldef.cpp new file mode 100644 index 000000000..f35cf2b82 --- /dev/null +++ b/src/tooldef.cpp @@ -0,0 +1,87 @@ +/* +Minetest-c55 +Copyright (C) 2011 celeron55, Perttu Ahola <celeron55@gmail.com> + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +#include "tooldef.h" +#include "irrlichttypes.h" +#include "log.h" +#include <ostream> + +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(); + } + } + virtual const ToolDefinition* getToolDefinition(const std::string &toolname) const + { + core::map<std::string, ToolDefinition*>::Node *n; + n = m_tool_definitions.find(toolname); + if(n == NULL) + return NULL; + return n->getValue(); + } + virtual std::string getImagename(const std::string &toolname) const + { + const ToolDefinition *def = getToolDefinition(toolname); + if(def == NULL) + return ""; + return def->imagename; + } + virtual ToolDiggingProperties getDiggingProperties( + const std::string &toolname) const + { + const ToolDefinition *def = getToolDefinition(toolname); + // If tool does not exist, just return an impossible + if(def == NULL){ + // If tool does not exist, try empty name + const ToolDefinition *def = getToolDefinition(""); + if(def == NULL) // If that doesn't exist either, return default + return ToolDiggingProperties(); + return def->properties; + } + return def->properties; + } + virtual bool registerTool(std::string toolname, const ToolDefinition &def) + { + infostream<<"registerTool: registering tool \""<<toolname<<"\""<<std::endl; + 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; + } +private: + // Key is name + core::map<std::string, ToolDefinition*> m_tool_definitions; +}; + +IWritableToolDefManager* createToolDefManager() +{ + return new CToolDefManager(); +} + |