summaryrefslogtreecommitdiff
path: root/src/materials.h
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-11-13 15:45:38 +0200
committerPerttu Ahola <celeron55@gmail.com>2011-11-29 19:13:41 +0200
commitf97d4355beb79370d3bc69ea6baabb33ed90a8cd (patch)
tree16bbbe9449ac443a8ecf96e329aceeb7de0fe809 /src/materials.h
parente19d1ea95aa125c82828a26a9af46c0a23710e70 (diff)
downloadminetest-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.h90
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