#ifndef SPELL_WARZ_ELEMENT_HPP #define SPELL_WARZ_ELEMENT_HPP 1 #include class Element { protected: std::string name; Element *strongAgainst; Element *weakAgainst; public: static int WEAK_COMPATIBILITY; static int NEUTRAL_COMPATIBILITY; static int STRONG_COMPATIBILITY; Element(std::string elementName, Element *elementWeakAgainst = nullptr, Element *elementStrongAgainst = nullptr); std::string getName(); void setStrongAgainst(Element *element); void setWeakAgainst(Element *element); bool isStrongAgainst(Element *element); bool isWeakAgainst(Element *element); int compatibilityAgainst(Element *element); bool operator<(Element &rhs); }; #endif