Update inventory texture too
[oweals/minetest.git] / src / materials.cpp
1 #include "materials.h"
2 #include "mapnode.h"
3 #include "nodedef.h"
4 #include "tooldef.h"
5
6 DiggingProperties getDiggingProperties(u16 content, ToolDiggingProperties *tp,
7                 INodeDefManager *nodemgr)
8 {
9         assert(tp);
10         const MaterialProperties &mp = nodemgr->get(content).material;
11         if(mp.diggability == DIGGABLE_NOT)
12                 return DiggingProperties(false, 0, 0);
13         if(mp.diggability == DIGGABLE_CONSTANT)
14                 return DiggingProperties(true, mp.constant_time, 0);
15
16         float time = tp->basetime;
17         time += tp->dt_weight * mp.weight;
18         time += tp->dt_crackiness * mp.crackiness;
19         time += tp->dt_crumbliness * mp.crumbliness;
20         time += tp->dt_cuttability * mp.cuttability;
21         if(time < 0.2)
22                 time = 0.2;
23
24         float durability = tp->basedurability;
25         durability += tp->dd_weight * mp.weight;
26         durability += tp->dd_crackiness * mp.crackiness;
27         durability += tp->dd_crumbliness * mp.crumbliness;
28         durability += tp->dd_cuttability * mp.cuttability;
29         if(durability < 1)
30                 durability = 1;
31
32         float wear = 1.0 / durability;
33         u16 wear_i = wear/65535.;
34         return DiggingProperties(true, time, wear_i);
35 }
36