]> git.lizzy.rs Git - dragonfireclient.git/blob - src/materials.cpp
Create framework for getting rid of global definitions of node/tool/item/whatever...
[dragonfireclient.git] / src / materials.cpp
1 #include "materials.h"
2 #include "mapnode.h"
3 #include "mapnode_contentfeatures.h"
4 #include "tool.h"
5
6 DiggingProperties getDiggingProperties(u16 material, ToolDiggingProperties *tp)
7 {
8         assert(tp);
9         MaterialProperties &mp = content_features(material).material;
10         if(mp.diggability == DIGGABLE_NOT)
11                 return DiggingProperties(false, 0, 0);
12         if(mp.diggability == DIGGABLE_CONSTANT)
13                 return DiggingProperties(true, mp.constant_time, 0);
14
15         float time = tp->basetime;
16         time += tp->dt_weight * mp.weight;
17         time += tp->dt_crackiness * mp.crackiness;
18         time += tp->dt_crumbliness * mp.crumbliness;
19         time += tp->dt_cuttability * mp.cuttability;
20         if(time < 0.2)
21                 time = 0.2;
22
23         float durability = tp->basedurability;
24         durability += tp->dd_weight * mp.weight;
25         durability += tp->dd_crackiness * mp.crackiness;
26         durability += tp->dd_crumbliness * mp.crumbliness;
27         durability += tp->dd_cuttability * mp.cuttability;
28         if(durability < 1)
29                 durability = 1;
30
31         float wear = 1.0 / durability;
32         u16 wear_i = wear/65535.;
33         return DiggingProperties(true, time, wear_i);
34 }
35