]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/materials.h
Tool progress bar tweaking
[dragonfireclient.git] / src / materials.h
index bcf9305811468bf92d65a19c8d7abf7bd5405b7a..face7d5df7277784bc6337a4b66147cd45424c91 100644 (file)
@@ -72,32 +72,68 @@ struct MaterialProperties
        void deSerialize(std::istream &is);
 };
 
+struct ToolDiggingProperties
+{
+       // time = basetime + sum(feature here * feature in MaterialProperties)
+       float full_punch_interval;
+       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 full_punch_interval_=2.0,
+                       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);
+
+       void serialize(std::ostream &os);
+       void deSerialize(std::istream &is);
+};
+
 struct DiggingProperties
 {
-       DiggingProperties():
-               diggable(false),
-               time(0.0),
-               wear(0)
-       {
-       }
-       DiggingProperties(bool a_diggable, float a_time, u16 a_wear):
-               diggable(a_diggable),
-               time(a_time),
-               wear(a_wear)
-       {
-       }
        bool diggable;
        // Digging time in seconds
        float time;
        // Caused wear
        u16 wear;
+
+       DiggingProperties(bool a_diggable=false, float a_time=0, u16 a_wear=0):
+               diggable(a_diggable),
+               time(a_time),
+               wear(a_wear)
+       {}
 };
 
-struct ToolDiggingProperties;
 class INodeDefManager;
 
-DiggingProperties getDiggingProperties(u16 content, ToolDiggingProperties *tp,
-               INodeDefManager *nodemgr);
+DiggingProperties getDiggingProperties(const MaterialProperties *mp,
+               const ToolDiggingProperties *tp, float time_from_last_punch);
+
+DiggingProperties getDiggingProperties(const MaterialProperties *mp,
+               const ToolDiggingProperties *tp);
+
+DiggingProperties getDiggingProperties(u16 content,
+               const ToolDiggingProperties *tp, INodeDefManager *nodemgr);
+
+struct HittingProperties
+{
+       s16 hp;
+       s16 wear;
+
+       HittingProperties(s16 hp_=0, s16 wear_=0):
+               hp(hp_),
+               wear(wear_)
+       {}
+};
+
+HittingProperties getHittingProperties(const MaterialProperties *mp,
+               const ToolDiggingProperties *tp, float time_from_last_punch);
 
 #endif