#include "irrlichttypes.h"
#include <string>
#include <iostream>
-#include <map>
+#include "util/cpp11_container.h"
#include "itemgroup.h"
struct ToolGroupCap
{
- std::map<int, float> times;
+ UNORDERED_MAP<int, float> times;
int maxlevel;
int uses;
bool getTime(int rating, float *time) const
{
- std::map<int, float>::const_iterator i = times.find(rating);
- if(i == times.end()){
+ UNORDERED_MAP<int, float>::const_iterator i = times.find(rating);
+ if (i == times.end()) {
*time = 0;
return false;
}
};
-// CLANG SUCKS DONKEY BALLS
-typedef std::map<std::string, struct ToolGroupCap> ToolGCMap;
+typedef UNORDERED_MAP<std::string, struct ToolGroupCap> ToolGCMap;
+typedef UNORDERED_MAP<std::string, s16> DamageGroup;
struct ToolCapabilities
{
float full_punch_interval;
int max_drop_level;
- // CLANG SUCKS DONKEY BALLS
ToolGCMap groupcaps;
+ DamageGroup damageGroups;
ToolCapabilities(
float full_punch_interval_=1.4,
int max_drop_level_=1,
- // CLANG SUCKS DONKEY BALLS
- ToolGCMap groupcaps_=ToolGCMap()
+ 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);
};
{
s16 hp;
s16 wear;
- std::string main_group;
- HitParams(s16 hp_=0, s16 wear_=0, std::string main_group_=""):
+ HitParams(s16 hp_=0, s16 wear_=0):
hp(hp_),
- wear(wear_),
- main_group(main_group_)
+ wear(wear_)
{}
};
-HitParams getHitParams(const ItemGroupList &groups,
+HitParams getHitParams(const ItemGroupList &armor_groups,
const ToolCapabilities *tp, float time_from_last_punch);
-HitParams getHitParams(const ItemGroupList &groups,
+HitParams getHitParams(const ItemGroupList &armor_groups,
const ToolCapabilities *tp);
struct PunchDamageResult
bool did_punch;
int damage;
int wear;
- std::string main_group;
PunchDamageResult():
did_punch(false),