Propagators.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. * Propagators.h, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #pragma once
  11. #include "Bonus.h"
  12. #include "CBonusSystemNode.h"
  13. VCMI_LIB_NAMESPACE_BEGIN
  14. extern DLL_LINKAGE const std::map<std::string, TPropagatorPtr> bonusPropagatorMap;
  15. class DLL_LINKAGE IPropagator
  16. {
  17. public:
  18. virtual ~IPropagator() = default;
  19. virtual bool shouldBeAttached(CBonusSystemNode *dest);
  20. virtual CBonusSystemNode::ENodeTypes getPropagatorType() const;
  21. template <typename Handler> void serialize(Handler &h, const int version)
  22. {}
  23. };
  24. class DLL_LINKAGE CPropagatorNodeType : public IPropagator
  25. {
  26. CBonusSystemNode::ENodeTypes nodeType;
  27. public:
  28. CPropagatorNodeType(CBonusSystemNode::ENodeTypes NodeType = CBonusSystemNode::ENodeTypes::UNKNOWN);
  29. bool shouldBeAttached(CBonusSystemNode *dest) override;
  30. CBonusSystemNode::ENodeTypes getPropagatorType() const override;
  31. template <typename Handler> void serialize(Handler &h, const int version)
  32. {
  33. h & nodeType;
  34. }
  35. };
  36. VCMI_LIB_NAMESPACE_END