mirror of
https://github.com/vcmi/vcmi.git
synced 2025-11-23 22:37:55 +02:00
All pointers held by bonus itself are now const. To support OppositeSideLimiter (the only stateful limiter) bonuses now hold their player owner instead. No changes in functionality or mods
48 lines
1.2 KiB
C++
48 lines
1.2 KiB
C++
/*
|
|
* Propagators.h, part of VCMI engine
|
|
*
|
|
* Authors: listed in file AUTHORS in main folder
|
|
*
|
|
* License: GNU General Public License v2.0 or later
|
|
* Full text of license available in license.txt file, in main folder
|
|
*
|
|
*/
|
|
#pragma once
|
|
|
|
#include "Bonus.h"
|
|
#include "CBonusSystemNode.h"
|
|
|
|
#include "../serializer/Serializeable.h"
|
|
|
|
VCMI_LIB_NAMESPACE_BEGIN
|
|
|
|
extern DLL_LINKAGE const std::map<std::string, TPropagatorPtr> bonusPropagatorMap;
|
|
|
|
class DLL_LINKAGE IPropagator : public Serializeable
|
|
{
|
|
public:
|
|
virtual ~IPropagator() = default;
|
|
virtual bool shouldBeAttached(CBonusSystemNode *dest) const;
|
|
virtual CBonusSystemNode::ENodeTypes getPropagatorType() const;
|
|
|
|
template <typename Handler> void serialize(Handler &h)
|
|
{}
|
|
};
|
|
|
|
class DLL_LINKAGE CPropagatorNodeType : public IPropagator
|
|
{
|
|
CBonusSystemNode::ENodeTypes nodeType;
|
|
|
|
public:
|
|
CPropagatorNodeType(CBonusSystemNode::ENodeTypes NodeType = CBonusSystemNode::ENodeTypes::UNKNOWN);
|
|
bool shouldBeAttached(CBonusSystemNode *dest) const override;
|
|
CBonusSystemNode::ENodeTypes getPropagatorType() const override;
|
|
|
|
template <typename Handler> void serialize(Handler &h)
|
|
{
|
|
h & nodeType;
|
|
}
|
|
};
|
|
|
|
VCMI_LIB_NAMESPACE_END
|