LCOV - code coverage report
Current view: top level - src - tool.h (source / functions) Hit Total Coverage
Test: report Lines: 8 25 32.0 %
Date: 2015-07-11 18:23:49 Functions: 7 13 53.8 %

          Line data    Source code
       1             : /*
       2             : Minetest
       3             : Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
       4             : 
       5             : This program is free software; you can redistribute it and/or modify
       6             : it under the terms of the GNU Lesser General Public License as published by
       7             : the Free Software Foundation; either version 2.1 of the License, or
       8             : (at your option) any later version.
       9             : 
      10             : This program is distributed in the hope that it will be useful,
      11             : but WITHOUT ANY WARRANTY; without even the implied warranty of
      12             : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      13             : GNU Lesser General Public License for more details.
      14             : 
      15             : You should have received a copy of the GNU Lesser General Public License along
      16             : with this program; if not, write to the Free Software Foundation, Inc.,
      17             : 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
      18             : */
      19             : 
      20             : #ifndef TOOL_HEADER
      21             : #define TOOL_HEADER
      22             : 
      23             : #include "irrlichttypes.h"
      24             : #include <string>
      25             : #include <iostream>
      26             : #include <map>
      27             : #include "itemgroup.h"
      28             : 
      29        6555 : struct ToolGroupCap
      30             : {
      31             :         std::map<int, float> times;
      32             :         int maxlevel;
      33             :         int uses;
      34             : 
      35         106 :         ToolGroupCap():
      36             :                 maxlevel(1),
      37         106 :                 uses(20)
      38         106 :         {}
      39             : 
      40           0 :         bool getTime(int rating, float *time) const
      41             :         {
      42           0 :                 std::map<int, float>::const_iterator i = times.find(rating);
      43           0 :                 if(i == times.end()){
      44           0 :                         *time = 0;
      45           0 :                         return false;
      46             :                 }
      47           0 :                 *time = i->second;
      48           0 :                 return true;
      49             :         }
      50             : };
      51             : 
      52             : 
      53             : // CLANG SUCKS DONKEY BALLS
      54             : typedef std::map<std::string, struct ToolGroupCap> ToolGCMap;
      55             : typedef std::map<std::string, s16> DamageGroup;
      56             : 
      57        3030 : struct ToolCapabilities
      58             : {
      59             :         float full_punch_interval;
      60             :         int max_drop_level;
      61             :         // CLANG SUCKS DONKEY BALLS
      62             :         ToolGCMap groupcaps;
      63             :         DamageGroup damageGroups;
      64             : 
      65          44 :         ToolCapabilities(
      66             :                         float full_punch_interval_=1.4,
      67             :                         int max_drop_level_=1,
      68             :                         // CLANG SUCKS DONKEY BALLS
      69             :                         ToolGCMap groupcaps_=ToolGCMap(),
      70             :                         DamageGroup damageGroups_=DamageGroup()
      71             :         ):
      72             :                 full_punch_interval(full_punch_interval_),
      73             :                 max_drop_level(max_drop_level_),
      74             :                 groupcaps(groupcaps_),
      75          44 :                 damageGroups(damageGroups_)
      76          44 :         {}
      77             : 
      78             :         void serialize(std::ostream &os, u16 version) const;
      79             :         void deSerialize(std::istream &is);
      80             : };
      81             : 
      82           0 : struct DigParams
      83             : {
      84             :         bool diggable;
      85             :         // Digging time in seconds
      86             :         float time;
      87             :         // Caused wear
      88             :         u16 wear;
      89             :         std::string main_group;
      90             : 
      91           0 :         DigParams(bool a_diggable=false, float a_time=0, u16 a_wear=0,
      92             :                         std::string a_main_group=""):
      93             :                 diggable(a_diggable),
      94             :                 time(a_time),
      95             :                 wear(a_wear),
      96           0 :                 main_group(a_main_group)
      97           0 :         {}
      98             : };
      99             : 
     100             : DigParams getDigParams(const ItemGroupList &groups,
     101             :                 const ToolCapabilities *tp, float time_from_last_punch);
     102             : 
     103             : DigParams getDigParams(const ItemGroupList &groups,
     104             :                 const ToolCapabilities *tp);
     105             : 
     106             : struct HitParams
     107             : {
     108             :         s16 hp;
     109             :         s16 wear;
     110             : 
     111           0 :         HitParams(s16 hp_=0, s16 wear_=0):
     112             :                 hp(hp_),
     113           0 :                 wear(wear_)
     114           0 :         {}
     115             : };
     116             : 
     117             : HitParams getHitParams(const ItemGroupList &armor_groups,
     118             :                 const ToolCapabilities *tp, float time_from_last_punch);
     119             : 
     120             : HitParams getHitParams(const ItemGroupList &armor_groups,
     121             :                 const ToolCapabilities *tp);
     122             : 
     123             : struct PunchDamageResult
     124             : {
     125             :         bool did_punch;
     126             :         int damage;
     127             :         int wear;
     128             : 
     129           0 :         PunchDamageResult():
     130             :                 did_punch(false),
     131             :                 damage(0),
     132           0 :                 wear(0)
     133           0 :         {}
     134             : };
     135             : 
     136             : struct ItemStack;
     137             : 
     138             : PunchDamageResult getPunchDamage(
     139             :                 const ItemGroupList &armor_groups,
     140             :                 const ToolCapabilities *toolcap,
     141             :                 const ItemStack *punchitem,
     142             :                 float time_from_last_punch
     143             : );
     144             : 
     145             : #endif
     146             : 

Generated by: LCOV version 1.11