]> git.lizzy.rs Git - minetest.git/blobdiff - src/tool.h
Fix msvc2012 build
[minetest.git] / src / tool.h
index cc2401a0d49637e043396798d7f6d7112677bb53..509561a1645466f9381833714a65621466c3f035 100644 (file)
@@ -1,18 +1,18 @@
 /*
-Minetest-c55
-Copyright (C) 2010-2011 celeron55, Perttu Ahola <celeron55@gmail.com>
+Minetest
+Copyright (C) 2010-2013 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
-the Free Software Foundation; either version 2 of the License, or
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2.1 of the License, or
 (at your option) any later version.
 
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+GNU Lesser General Public License for more details.
 
-You should have received a copy of the GNU General Public License along
+You should have received a copy of the GNU Lesser General Public License along
 with this program; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
@@ -20,20 +20,21 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #ifndef TOOL_HEADER
 #define TOOL_HEADER
 
-#include "common_irrlicht.h"
+#include "irrlichttypes.h"
 #include <string>
 #include <iostream>
 #include <map>
+#include "itemgroup.h"
 
 struct ToolGroupCap
 {
        std::map<int, float> times;
-       float maxwear;
        int maxlevel;
+       int uses;
 
        ToolGroupCap():
-               maxwear(0.05),
-               maxlevel(1)
+               maxlevel(1),
+               uses(20)
        {}
 
        bool getTime(int rating, float *time) const
@@ -48,24 +49,33 @@ struct ToolGroupCap
        }
 };
 
+
+// CLANG SUCKS DONKEY BALLS
+typedef std::map<std::string, struct ToolGroupCap> ToolGCMap;
+typedef std::map<std::string, s16> DamageGroup;
+
 struct ToolCapabilities
 {
        float full_punch_interval;
        int max_drop_level;
-       std::map<std::string, ToolGroupCap> groupcaps;
+       // CLANG SUCKS DONKEY BALLS
+       ToolGCMap groupcaps;
+       DamageGroup damageGroups;
 
        ToolCapabilities(
-                       float full_punch_interval_=3.0,
+                       float full_punch_interval_=1.4,
                        int max_drop_level_=1,
-                       std::map<std::string, ToolGroupCap> groupcaps_ =
-                                       std::map<std::string, ToolGroupCap>()
+                       // CLANG SUCKS DONKEY BALLS
+                       ToolGCMap groupcaps_=ToolGCMap(),
+                       DamageGroup damageGroups_=DamageGroup()
        ):
                full_punch_interval(full_punch_interval_),
                max_drop_level(max_drop_level_),
-               groupcaps(groupcaps_)
+               groupcaps(groupcaps_),
+               damageGroups(damageGroups_)
        {}
 
-       void serialize(std::ostream &os) const;
+       void serialize(std::ostream &os, u16 version) const;
        void deSerialize(std::istream &is);
 };
 
@@ -76,18 +86,21 @@ struct DigParams
        float time;
        // Caused wear
        u16 wear;
+       std::string main_group;
 
-       DigParams(bool a_diggable=false, float a_time=0, u16 a_wear=0):
+       DigParams(bool a_diggable=false, float a_time=0, u16 a_wear=0,
+                       std::string a_main_group=""):
                diggable(a_diggable),
                time(a_time),
-               wear(a_wear)
+               wear(a_wear),
+               main_group(a_main_group)
        {}
 };
 
-DigParams getDigParams(const std::map<std::string, int> &groups,
+DigParams getDigParams(const ItemGroupList &groups,
                const ToolCapabilities *tp, float time_from_last_punch);
 
-DigParams getDigParams(const std::map<std::string, int> &groups,
+DigParams getDigParams(const ItemGroupList &groups,
                const ToolCapabilities *tp);
 
 struct HitParams
@@ -101,11 +114,33 @@ struct HitParams
        {}
 };
 
-HitParams getHitParams(const std::map<std::string, int> &groups,
+HitParams getHitParams(const ItemGroupList &armor_groups,
                const ToolCapabilities *tp, float time_from_last_punch);
 
-HitParams getHitParams(const std::map<std::string, int> &groups,
+HitParams getHitParams(const ItemGroupList &armor_groups,
                const ToolCapabilities *tp);
 
+struct PunchDamageResult
+{
+       bool did_punch;
+       int damage;
+       int wear;
+
+       PunchDamageResult():
+               did_punch(false),
+               damage(0),
+               wear(0)
+       {}
+};
+
+struct ItemStack;
+
+PunchDamageResult getPunchDamage(
+               const ItemGroupList &armor_groups,
+               const ToolCapabilities *toolcap,
+               const ItemStack *punchitem,
+               float time_from_last_punch
+);
+
 #endif