*/
#include "materials.h"
-#include "mapnode.h"
-#include "nodedef.h"
-#include "tooldef.h"
#include "utility.h"
void MaterialProperties::serialize(std::ostream &os)
flammability = readF1000(is);
}
+ToolDiggingProperties::ToolDiggingProperties(float full_punch_interval_,
+ float a, float b, float c, float d, float e,
+ float f, float g, float h, float i, float j):
+ full_punch_interval(full_punch_interval_),
+ basetime(a),
+ dt_weight(b),
+ dt_crackiness(c),
+ dt_crumbliness(d),
+ dt_cuttability(e),
+ basedurability(f),
+ dd_weight(g),
+ dd_crackiness(h),
+ dd_crumbliness(i),
+ dd_cuttability(j)
+{}
+
+void ToolDiggingProperties::serialize(std::ostream &os)
+{
+ writeU8(os, 0); // version
+ writeF1000(os, full_punch_interval);
+ writeF1000(os, basetime);
+ writeF1000(os, dt_weight);
+ writeF1000(os, dt_crackiness);
+ writeF1000(os, dt_crumbliness);
+ writeF1000(os, dt_cuttability);
+ writeF1000(os, basedurability);
+ writeF1000(os, dd_weight);
+ writeF1000(os, dd_crackiness);
+ writeF1000(os, dd_crumbliness);
+ writeF1000(os, dd_cuttability);
+}
+
+void ToolDiggingProperties::deSerialize(std::istream &is)
+{
+ int version = readU8(is);
+ if(version != 0) throw SerializationError(
+ "unsupported ToolDiggingProperties version");
+ full_punch_interval = readF1000(is);
+ basetime = readF1000(is);
+ dt_weight = readF1000(is);
+ dt_crackiness = readF1000(is);
+ dt_crumbliness = readF1000(is);
+ dt_cuttability = readF1000(is);
+ basedurability = readF1000(is);
+ dd_weight = readF1000(is);
+ dd_crackiness = readF1000(is);
+ dd_crumbliness = readF1000(is);
+ dd_cuttability = readF1000(is);
+}
+
DiggingProperties getDiggingProperties(const MaterialProperties *mp,
const ToolDiggingProperties *tp, float time_from_last_punch)
{
return getDiggingProperties(mp, tp, 1000000);
}
-DiggingProperties getDiggingProperties(u16 content,
- const ToolDiggingProperties *tp, INodeDefManager *nodemgr)
-{
- const MaterialProperties &mp = nodemgr->get(content).material;
- return getDiggingProperties(&mp, tp);
-}
-
HittingProperties getHittingProperties(const MaterialProperties *mp,
const ToolDiggingProperties *tp, float time_from_last_punch)
{
time_from_last_punch);
// If digging time would be 1 second, 2 hearts go in 1 second.
- s16 hp = 2.0 * 2.0 / digprop.time + 0.5;
+ s16 hp = 2.0 * 2.0 / digprop.time;
// Wear is the same as for digging a single node
- s16 wear = (float)digprop.wear + 0.5;
+ s16 wear = (float)digprop.wear;
return HittingProperties(hp, wear);
}
+HittingProperties getHittingProperties(const MaterialProperties *mp,
+ const ToolDiggingProperties *tp)
+{
+ return getHittingProperties(mp, tp, 1000000);
+}
+