diff options
author | Shauren <shauren.trinity@gmail.com> | 2019-11-14 15:12:08 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2019-11-14 15:12:08 +0100 |
commit | 36d6959ae6a945408d32a62390ae14e6f956dde2 (patch) | |
tree | fdd6dee8e6969f08cfa049db23003c673e0da71b /src/server/game/Garrison/Garrison.h | |
parent | bab99b4054981978e1efa60567d748806f594216 (diff) |
Core/Garrison: Add more functions to get garrison data
Diffstat (limited to 'src/server/game/Garrison/Garrison.h')
-rw-r--r-- | src/server/game/Garrison/Garrison.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/server/game/Garrison/Garrison.h b/src/server/game/Garrison/Garrison.h index 295d4119565..0dd41482ec7 100644 --- a/src/server/game/Garrison/Garrison.h +++ b/src/server/game/Garrison/Garrison.h @@ -191,7 +191,7 @@ public: { GameObject* CreateGameObject(Map* map, GarrisonFactionIndex faction); void DeleteGameObject(Map* map); - void ClearBuildingInfo(Player* owner); + void ClearBuildingInfo(GarrisonType garrisonType, Player* owner); void SetBuildingInfo(WorldPackets::Garrison::GarrisonBuildingInfo const& buildingInfo, Player* owner); WorldPackets::Garrison::GarrisonPlotInfo PacketInfo; @@ -223,6 +223,8 @@ public: void Leave() const; GarrisonFactionIndex GetFaction() const; + GarrisonType GetType() const { return GARRISON_TYPE_GARRISON; } + GarrSiteLevelEntry const* GetSiteLevel() const { return _siteLevel; } // Plots std::vector<Plot*> GetPlots(); @@ -232,6 +234,7 @@ public: // Buildings void LearnBlueprint(uint32 garrBuildingId); void UnlearnBlueprint(uint32 garrBuildingId); + bool HasBlueprint(uint32 garrBuildingId) const { return _knownBuildings.find(garrBuildingId) != _knownBuildings.end(); } void PlaceBuilding(uint32 garrPlotInstanceId, uint32 garrBuildingId); void CancelBuildingConstruction(uint32 garrPlotInstanceId); void ActivateBuilding(uint32 garrPlotInstanceId); @@ -239,6 +242,16 @@ public: // Followers void AddFollower(uint32 garrFollowerId); Follower const* GetFollower(uint64 dbId) const; + template<typename Predicate> + uint32 CountFollowers(Predicate&& predicate) const + { + uint32 count = 0; + for (auto itr = _followers.begin(); itr != _followers.end(); ++itr) + if (predicate(itr->second)) + ++count; + + return count; + } void SendInfo(); void SendRemoteInfo() const; |