]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/materials.h
Fix key change menu a bit
[dragonfireclient.git] / src / materials.h
index 39829786dfae3ab6d9797da5769457c13e1271d2..b25d047beb9831060268d46a7e6a78d7d9a34d70 100644 (file)
@@ -1,6 +1,6 @@
 /*
 Minetest-c55
-Copyright (C) 2010 celeron55, Perttu Ahola <celeron55@gmail.com>
+Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
 
 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 <string>
+#include <iostream>
 
 enum Diggability
 {
@@ -55,41 +56,62 @@ 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 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(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