Merge pull request #1882 from rilian-la-te/native-terrain-refactor

Native terrain refactor
This commit is contained in:
Ivan Savenko authored and GitHub committed 2023-04-11 02:14:37 +03:00
commit ff66592fad
69 files changed
+467 -345

No files matched your search

+1 -2
View File
@@ -18,7 +18,7 @@ class CreatureID;
class ResourceSet;
enum class EGameResID : int8_t;
class DLL_LINKAGE Creature : public EntityWithBonuses<CreatureID>
class DLL_LINKAGE Creature : public EntityWithNativeTerrain<CreatureID>
{
protected:
// use getNamePlural/Singular instead
@@ -41,7 +41,6 @@ public:
virtual int32_t getLevel() const = 0;
virtual int32_t getGrowth() const = 0;
virtual int32_t getHorde() const = 0;
virtual int32_t getFactionIndex() const = 0;
virtual int32_t getBaseAttack() const = 0;
virtual int32_t getBaseDefense() const = 0;
+27 -2
View File
@@ -13,13 +13,33 @@
VCMI_LIB_NAMESPACE_BEGIN
class IBonusBearer;
class FactionID;
enum class ETerrainId;
template<typename T> class Identifier;
class DLL_LINKAGE WithBonuses
class DLL_LINKAGE IConstBonusProvider
{
public:
virtual const IBonusBearer * getBonusBearer() const = 0;
};
class DLL_LINKAGE INativeTerrainProvider
{
public:
virtual Identifier<ETerrainId> getNativeTerrain() const = 0;
virtual FactionID getFaction() const = 0;
virtual bool isNativeTerrain(Identifier<ETerrainId> terrain) const;
};
class DLL_LINKAGE IConstBonusNativeTerrainProvider: public IConstBonusProvider, public INativeTerrainProvider
{
public:
/**
Returns native terrain considering some terrain bonuses.
*/
virtual Identifier<ETerrainId> getNativeTerrain() const;
};
class DLL_LINKAGE Entity
{
public:
@@ -44,7 +64,12 @@ public:
};
template <typename IdType>
class DLL_LINKAGE EntityWithBonuses : public EntityT<IdType>, public WithBonuses
class DLL_LINKAGE EntityWithBonuses : public EntityT<IdType>, public IConstBonusProvider
{
};
template <typename IdType>
class DLL_LINKAGE EntityWithNativeTerrain : public EntityT<IdType>, public IConstBonusNativeTerrainProvider
{
};
+1 -4
View File
@@ -15,15 +15,12 @@
VCMI_LIB_NAMESPACE_BEGIN
class FactionID;
enum class ETerrainId;
enum class EAlignment : uint8_t;
template<typename T> class Identifier;
class DLL_LINKAGE Faction : public EntityT<FactionID>
class DLL_LINKAGE Faction : public EntityT<FactionID>, public INativeTerrainProvider
{
public:
virtual bool hasTown() const = 0;
virtual Identifier<ETerrainId> getNativeTerrain() const = 0;
virtual EAlignment getAlignment() const = 0;
};