diff options
Diffstat (limited to 'src/tooldef.h')
-rw-r--r-- | src/tooldef.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/src/tooldef.h b/src/tooldef.h new file mode 100644 index 000000000..8aa6abea4 --- /dev/null +++ b/src/tooldef.h @@ -0,0 +1,98 @@ +/* +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. +*/ + +#ifndef TOOLDEF_HEADER +#define TOOLDEF_HEADER + +#include <string> + +/* + TODO: Rename to tooldef.h +*/ + +struct ToolDiggingProperties +{ + // time = basetime + sum(feature here * feature in MaterialProperties) + float basetime; + float dt_weight; + float dt_crackiness; + float dt_crumbliness; + float dt_cuttability; + float basedurability; + float dd_weight; + float dd_crackiness; + float dd_crumbliness; + float dd_cuttability; + + ToolDiggingProperties(float a=0.75, float b=0, float c=0, float d=0, float e=0, + float f=50, float g=0, float h=0, float i=0, float j=0): + basetime(a), + dt_weight(b), + dt_crackiness(c), + dt_crumbliness(d), + dt_cuttability(e), + basedurability(f), + dd_weight(g), + dd_crackiness(h), + dd_crumbliness(i), + dd_cuttability(j) + {} +}; + +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 const ToolDefinition* getToolDefinition(const std::string &toolname) const=0; + virtual std::string getImagename(const std::string &toolname) const =0; + virtual ToolDiggingProperties getDiggingProperties( + const std::string &toolname) const =0; +}; + +class IWritableToolDefManager : public IToolDefManager +{ +public: + IWritableToolDefManager(){} + virtual ~IWritableToolDefManager(){} + virtual const ToolDefinition* getToolDefinition(const std::string &toolname) const=0; + virtual std::string getImagename(const std::string &toolname) const =0; + virtual ToolDiggingProperties getDiggingProperties( + const std::string &toolname) const =0; + + virtual bool registerTool(std::string toolname, const ToolDefinition &def)=0; +}; + +IWritableToolDefManager* createToolDefManager(); + +#endif + |