diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Garrison/Garrison.cpp | 13 | ||||
| -rw-r--r-- | src/server/game/Garrison/Garrison.h | 4 | ||||
| -rw-r--r-- | src/server/game/Handlers/GarrisonHandler.cpp | 7 | ||||
| -rw-r--r-- | src/server/game/Server/Packets/GarrisonPackets.h | 2 |
4 files changed, 13 insertions, 13 deletions
diff --git a/src/server/game/Garrison/Garrison.cpp b/src/server/game/Garrison/Garrison.cpp index d71fe4d7474..6a9561646b6 100644 --- a/src/server/game/Garrison/Garrison.cpp +++ b/src/server/game/Garrison/Garrison.cpp @@ -301,7 +301,7 @@ void Garrison::Leave() const GarrisonFactionIndex Garrison::GetFaction() const { - return _owner->GetTeam() == HORDE ? GARRISON_FACTION_INDEX_HORDE : GARRISON_FACTION_INDEX_ALLIANCE; + return GetFaction(_owner->GetTeam()); } std::vector<Garrison::Plot*> Garrison::GetPlots() @@ -530,20 +530,15 @@ Garrison::Follower const* Garrison::GetFollower(uint64 dbId) const return nullptr; } -void Garrison::SendInfo() +void Garrison::BuildInfoPacket(WorldPackets::Garrison::GarrisonInfo& garrison) const { - WorldPackets::Garrison::GetGarrisonInfoResult garrisonInfo; - garrisonInfo.FactionIndex = GetFaction(); - garrisonInfo.Garrisons.emplace_back(); - - WorldPackets::Garrison::GarrisonInfo& garrison = garrisonInfo.Garrisons.back(); garrison.GarrTypeID = GetType(); garrison.GarrSiteID = _siteLevel->GarrSiteID; garrison.GarrSiteLevelID = _siteLevel->ID; garrison.NumFollowerActivationsRemaining = _followerActivationsRemainingToday; for (auto& p : _plots) { - Plot& plot = p.second; + Plot const& plot = p.second; garrison.Plots.push_back(&plot.PacketInfo); if (plot.BuildingInfo.PacketInfo) garrison.Buildings.push_back(&*plot.BuildingInfo.PacketInfo); @@ -551,8 +546,6 @@ void Garrison::SendInfo() for (auto const& p : _followers) garrison.Followers.push_back(&p.second.PacketInfo); - - _owner->SendDirectMessage(garrisonInfo.Write()); } void Garrison::SendRemoteInfo() const diff --git a/src/server/game/Garrison/Garrison.h b/src/server/game/Garrison/Garrison.h index 3c895fef38a..65c08e5ab10 100644 --- a/src/server/game/Garrison/Garrison.h +++ b/src/server/game/Garrison/Garrison.h @@ -23,6 +23,7 @@ #include "GarrisonPackets.h" #include "Optional.h" #include "QuaternionData.h" +#include "SharedDefines.h" #include <unordered_map> class GameObject; @@ -228,6 +229,7 @@ public: void Enter() const; void Leave() const; + static constexpr GarrisonFactionIndex GetFaction(Team team) { return team == HORDE ? GARRISON_FACTION_INDEX_HORDE : GARRISON_FACTION_INDEX_ALLIANCE; } GarrisonFactionIndex GetFaction() const; GarrisonType GetType() const { return GARRISON_TYPE_GARRISON; } GarrSiteLevelEntry const* GetSiteLevel() const { return _siteLevel; } @@ -259,7 +261,7 @@ public: return count; } - void SendInfo(); + void BuildInfoPacket(WorldPackets::Garrison::GarrisonInfo& garrison) const; void SendRemoteInfo() const; void SendBlueprintAndSpecializationData(); void SendMapData(Player* receiver) const; diff --git a/src/server/game/Handlers/GarrisonHandler.cpp b/src/server/game/Handlers/GarrisonHandler.cpp index ef725a3cd39..a0a044c5236 100644 --- a/src/server/game/Handlers/GarrisonHandler.cpp +++ b/src/server/game/Handlers/GarrisonHandler.cpp @@ -22,8 +22,13 @@ void WorldSession::HandleGetGarrisonInfo(WorldPackets::Garrison::GetGarrisonInfo& /*getGarrisonInfo*/) { + WorldPackets::Garrison::GetGarrisonInfoResult garrisonInfo; + garrisonInfo.FactionIndex = Garrison::GetFaction(_player->GetTeam()); + if (Garrison* garrison = _player->GetGarrison()) - garrison->SendInfo(); + garrison->BuildInfoPacket(garrisonInfo.Garrisons.emplace_back()); + + SendPacket(garrisonInfo.Write()); } void WorldSession::HandleGarrisonPurchaseBuilding(WorldPackets::Garrison::GarrisonPurchaseBuilding& garrisonPurchaseBuilding) diff --git a/src/server/game/Server/Packets/GarrisonPackets.h b/src/server/game/Server/Packets/GarrisonPackets.h index 3e2df57f33d..28a71884db3 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.h +++ b/src/server/game/Server/Packets/GarrisonPackets.h @@ -203,7 +203,7 @@ namespace WorldPackets uint32 NumFollowerActivationsRemaining = 0; uint32 NumMissionsStartedToday = 0; // might mean something else, but sending 0 here enables follower abilities "Increase success chance of the first mission of the day by %." int32 MinAutoTroopLevel = 0; - std::vector<GarrisonPlotInfo*> Plots; + std::vector<GarrisonPlotInfo const*> Plots; std::vector<GarrisonBuildingInfo const*> Buildings; std::vector<GarrisonFollower const*> Followers; std::vector<GarrisonFollower const*> AutoTroops; |
