diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-11-13 15:45:38 +0200 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-11-29 19:13:41 +0200 |
commit | f97d4355beb79370d3bc69ea6baabb33ed90a8cd (patch) | |
tree | 16bbbe9449ac443a8ecf96e329aceeb7de0fe809 /src/materials.h | |
parent | e19d1ea95aa125c82828a26a9af46c0a23710e70 (diff) | |
download | minetest-f97d4355beb79370d3bc69ea6baabb33ed90a8cd.tar.gz minetest-f97d4355beb79370d3bc69ea6baabb33ed90a8cd.tar.bz2 minetest-f97d4355beb79370d3bc69ea6baabb33ed90a8cd.zip |
New kind of tool speed and wear calculation thingy
Diffstat (limited to 'src/materials.h')
-rw-r--r-- | src/materials.h | 90 |
1 files changed, 41 insertions, 49 deletions
diff --git a/src/materials.h b/src/materials.h index 1439df194..39829786d 100644 --- a/src/materials.h +++ b/src/materials.h @@ -27,6 +27,46 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "common_irrlicht.h" #include <string> +enum Diggability +{ + DIGGABLE_NOT, + DIGGABLE_NORMAL, + DIGGABLE_CONSTANT +}; + +struct MaterialProperties +{ + // Values can be anything. 0 is normal. + + enum Diggability diggability; + + // Constant time for DIGGABLE_CONSTANT + float constant_time; + + // Weight; the amount of stuff in the block. Not realistic. + float weight; + // Rock; wood a bit. + // A Pickaxe manages high crackiness well. + float crackiness; + // Sand is extremely crumble; dirt is quite crumble. + // A shovel is good for crumbly stuff. Pickaxe is horrible. + float crumbliness; + // An axe is best for cuttable heavy stuff. + // Sword is best for cuttable light stuff. + float cuttability; + // If high, ignites easily + //float flammability; + + MaterialProperties(): + diggability(DIGGABLE_NOT), + constant_time(0.5), + weight(1), + crackiness(1), + crumbliness(1), + cuttability(1) + {} +}; + struct DiggingProperties { DiggingProperties(): @@ -48,55 +88,7 @@ struct DiggingProperties u16 wear; }; -/* - This is a bad way of determining mining characteristics. - TODO: Get rid of this and set up some attributes like toughness, - fluffyness, and a funciton to calculate time and durability loss - (and sound? and whatever else) from them -*/ -class DiggingPropertiesList -{ -public: - DiggingPropertiesList() - { - } - - void set(const std::string toolname, - const DiggingProperties &prop) - { - m_digging_properties[toolname] = prop; - } - - DiggingProperties get(const std::string toolname) - { - core::map<std::string, DiggingProperties>::Node *n; - n = m_digging_properties.find(toolname); - if(n == NULL) - { - // Not diggable by this tool, try to get defaults - n = m_digging_properties.find(""); - if(n == NULL) - { - // Not diggable at all - return DiggingProperties(); - } - } - // Return found properties - return n->getValue(); - } - - void clear() - { - m_digging_properties.clear(); - } - -private: - // toolname="": default properties (digging by hand) - // Key is toolname - core::map<std::string, DiggingProperties> m_digging_properties; -}; - -// For getting the default properties, set tool="" +// Tool "" is bare hands DiggingProperties getDiggingProperties(u16 material, const std::string &tool); #endif |