the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#pragma once
2
3#include "AttributeInstance.h"
4
5class ModifiableAttributeInstance : public AttributeInstance
6{
7private:
8 BaseAttributeMap *attributeMap;
9 Attribute *attribute;
10 unordered_set<AttributeModifier *> modifiers [AttributeModifier::TOTAL_OPERATIONS];
11 unordered_map<unsigned int, AttributeModifier *> modifierById;
12 double baseValue;
13 bool dirty;
14 double cachedValue;
15
16public:
17 ModifiableAttributeInstance(BaseAttributeMap *attributeMap, Attribute *attribute);
18 ~ModifiableAttributeInstance();
19
20 Attribute *getAttribute();
21 double getBaseValue();
22 void setBaseValue(double baseValue);
23 unordered_set<AttributeModifier *> *getModifiers(int operation);
24 void getModifiers(unordered_set<AttributeModifier *>& result);
25 AttributeModifier *getModifier(eMODIFIER_ID id);
26 void addModifiers(unordered_set<AttributeModifier *> *modifiers);
27 void addModifier(AttributeModifier *modifier);
28
29private:
30 void setDirty();
31
32public:
33 void removeModifier(AttributeModifier *modifier);
34 void removeModifier(eMODIFIER_ID id);
35 void removeModifiers();
36 double getValue();
37
38private:
39 double calculateValue();
40};