X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fmaterials.h;h=face7d5df7277784bc6337a4b66147cd45424c91;hb=a58d7255698f9a5e3e13f9cb0b8500988d12dd10;hp=bcf9305811468bf92d65a19c8d7abf7bd5405b7a;hpb=96c30452f9d2e6085769baa5befbcbcf62a507c4;p=dragonfireclient.git diff --git a/src/materials.h b/src/materials.h index bcf930581..face7d5df 100644 --- a/src/materials.h +++ b/src/materials.h @@ -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