summaryrefslogtreecommitdiff
path: root/src/tool.h
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-11-14 00:19:48 +0200
committerPerttu Ahola <celeron55@gmail.com>2011-11-29 19:13:41 +0200
commitabceeee92f99b84ebb79968269835a4f509bfb90 (patch)
tree669edeca68fae4eb086ac4e4c1846b55d3aa779d /src/tool.h
parent5fc791ac9a15ea6f234ca2d23041c83679255746 (diff)
downloadminetest-abceeee92f99b84ebb79968269835a4f509bfb90.tar.gz
minetest-abceeee92f99b84ebb79968269835a4f509bfb90.tar.bz2
minetest-abceeee92f99b84ebb79968269835a4f509bfb90.zip
Create framework for getting rid of global definitions of node/tool/item/whatever types
Diffstat (limited to 'src/tool.h')
-rw-r--r--src/tool.h27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/tool.h b/src/tool.h
index 49d069aac..a2a94f7fc 100644
--- a/src/tool.h
+++ b/src/tool.h
@@ -51,9 +51,32 @@ struct ToolDiggingProperties
{}
};
-std::string tool_get_imagename(const std::string &toolname);
+struct ToolDefinition
+{
+ std::string imagename;
+ ToolDiggingProperties properties;
+
+ ToolDefinition(){}
+ ToolDefinition(const std::string &imagename_,
+ ToolDiggingProperties properties_):
+ imagename(imagename_),
+ properties(properties_)
+ {}
+};
+
+class IToolDefManager
+{
+public:
+ IToolDefManager(){}
+ virtual ~IToolDefManager(){}
+ virtual bool registerTool(std::string toolname, const ToolDefinition &def)=0;
+ virtual ToolDefinition* getToolDefinition(const std::string &toolname)=0;
+ virtual std::string getImagename(const std::string &toolname)=0;
+ virtual ToolDiggingProperties getDiggingProperties(
+ const std::string &toolname)=0;
+};
-ToolDiggingProperties tool_get_digging_properties(const std::string &toolname);
+IToolDefManager* createToolDefManager();
#endif