aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Garrison
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-06-22 00:02:02 +0200
committerShauren <shauren.trinity@gmail.com>2015-06-22 00:02:43 +0200
commit812fa65c613ecaa603dafc708df0088f3b50a90e (patch)
treee64f0c167d338beb2e674f653cb036cc647d1f19 /src/server/game/Garrison
parent881ebccdc4a0995732aea2052f85015aebe6f9a2 (diff)
Core/Garrisons: Implemented activating buildings
Diffstat (limited to 'src/server/game/Garrison')
-rw-r--r--src/server/game/Garrison/Garrison.cpp23
-rw-r--r--src/server/game/Garrison/Garrison.h3
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);