diff options
| author | Shauren <shauren.trinity@gmail.com> | 2015-06-22 00:02:02 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2015-06-22 00:02:43 +0200 |
| commit | 812fa65c613ecaa603dafc708df0088f3b50a90e (patch) | |
| tree | e64f0c167d338beb2e674f653cb036cc647d1f19 /src/server/game/Garrison | |
| parent | 881ebccdc4a0995732aea2052f85015aebe6f9a2 (diff) | |
Core/Garrisons: Implemented activating buildings
Diffstat (limited to 'src/server/game/Garrison')
| -rw-r--r-- | src/server/game/Garrison/Garrison.cpp | 23 | ||||
| -rw-r--r-- | src/server/game/Garrison/Garrison.h | 3 |
2 files changed, 24 insertions, 2 deletions
diff --git a/src/server/game/Garrison/Garrison.cpp b/src/server/game/Garrison/Garrison.cpp index 749ebb562c5..12c924c1f30 100644 --- a/src/server/game/Garrison/Garrison.cpp +++ b/src/server/game/Garrison/Garrison.cpp @@ -133,7 +133,7 @@ bool Garrison::LoadFromDB(PreparedQueryResult garrison, PreparedQueryResult blue return true; } -void Garrison::SaveToDB(SQLTransaction& trans) +void Garrison::SaveToDB(SQLTransaction trans) { PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_GARRISON); stmt->setUInt64(0, _owner->GetGUID().GetCounter()); @@ -431,6 +431,27 @@ void Garrison::CancelBuildingConstruction(uint32 garrPlotInstanceId) _owner->SendDirectMessage(buildingRemoved.Write()); } +void Garrison::ActivateBuilding(uint32 garrPlotInstanceId) +{ + if (Plot* plot = GetPlot(garrPlotInstanceId)) + { + if (plot->BuildingInfo.CanActivate() && plot->BuildingInfo.PacketInfo && !plot->BuildingInfo.PacketInfo->Active) + { + plot->BuildingInfo.PacketInfo->Active = true; + if (Map* map = FindMap()) + { + plot->DeleteGameObject(map); + if (GameObject* go = plot->CreateGameObject(map, GetFaction())) + map->AddToMap(go); + } + + WorldPackets::Garrison::GarrisonBuildingActivated buildingActivated; + buildingActivated.GarrPlotInstanceID = garrPlotInstanceId; + _owner->SendDirectMessage(buildingActivated.Write()); + } + } +} + void Garrison::AddFollower(uint32 garrFollowerId) { WorldPackets::Garrison::GarrisonAddFollowerResult addFollowerResult; diff --git a/src/server/game/Garrison/Garrison.h b/src/server/game/Garrison/Garrison.h index 71d67a1b6b5..041d20d13b0 100644 --- a/src/server/game/Garrison/Garrison.h +++ b/src/server/game/Garrison/Garrison.h @@ -109,7 +109,7 @@ public: bool LoadFromDB(PreparedQueryResult garrison, PreparedQueryResult blueprints, PreparedQueryResult buildings, PreparedQueryResult followers, PreparedQueryResult abilities); - void SaveToDB(SQLTransaction& trans); + void SaveToDB(SQLTransaction trans); bool Create(uint32 garrSiteId); void Upgrade(); @@ -129,6 +129,7 @@ public: void UnlearnBlueprint(uint32 garrBuildingId); void PlaceBuilding(uint32 garrPlotInstanceId, uint32 garrBuildingId); void CancelBuildingConstruction(uint32 garrPlotInstanceId); + void ActivateBuilding(uint32 garrPlotInstanceId); // Followers void AddFollower(uint32 garrFollowerId); |
