X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fmaterials.h;h=face7d5df7277784bc6337a4b66147cd45424c91;hb=a58d7255698f9a5e3e13f9cb0b8500988d12dd10;hp=39829786dfae3ab6d9797da5769457c13e1271d2;hpb=f97d4355beb79370d3bc69ea6baabb33ed90a8cd;p=dragonfireclient.git diff --git a/src/materials.h b/src/materials.h index 39829786d..face7d5df 100644 --- a/src/materials.h +++ b/src/materials.h @@ -1,6 +1,6 @@ /* Minetest-c55 -Copyright (C) 2010 celeron55, Perttu Ahola +Copyright (C) 2010-2011 celeron55, Perttu Ahola This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,6 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "common_irrlicht.h" #include +#include enum Diggability { @@ -55,41 +56,84 @@ struct MaterialProperties // Sword is best for cuttable light stuff. float cuttability; // If high, ignites easily - //float flammability; + float flammability; MaterialProperties(): diggability(DIGGABLE_NOT), constant_time(0.5), - weight(1), - crackiness(1), - crumbliness(1), - cuttability(1) + weight(0), + crackiness(0), + crumbliness(0), + cuttability(0), + flammability(0) {} + + void serialize(std::ostream &os); + 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) + {} +}; + +class INodeDefManager; + +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_) + {} }; -// Tool "" is bare hands -DiggingProperties getDiggingProperties(u16 material, const std::string &tool); +HittingProperties getHittingProperties(const MaterialProperties *mp, + const ToolDiggingProperties *tp, float time_from_last_punch); #endif