aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Garrison/Garrison.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-06-24 00:03:57 +0200
committerShauren <shauren.trinity@gmail.com>2015-06-24 00:03:57 +0200
commitacc45bcf5d657671d9348e95f069ad17e1bb5631 (patch)
treee76f661fef9f897281b94fa833f50de4f8f717b7 /src/server/game/Garrison/Garrison.cpp
parentd799e0cee0c522ebe389b042201ff0981baaba39 (diff)
Core/Garrisons: Implemented a method to delete garrisons
Diffstat (limited to 'src/server/game/Garrison/Garrison.cpp')
-rw-r--r--src/server/game/Garrison/Garrison.cpp49
1 files changed, 33 insertions, 16 deletions
diff --git a/src/server/game/Garrison/Garrison.cpp b/src/server/game/Garrison/Garrison.cpp
index 99db2336566..47cefda447c 100644
--- a/src/server/game/Garrison/Garrison.cpp
+++ b/src/server/game/Garrison/Garrison.cpp
@@ -135,23 +135,9 @@ bool Garrison::LoadFromDB(PreparedQueryResult garrison, PreparedQueryResult blue
void Garrison::SaveToDB(SQLTransaction trans)
{
- PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_GARRISON);
- stmt->setUInt64(0, _owner->GetGUID().GetCounter());
- trans->Append(stmt);
+ DeleteFromDB(_owner->GetGUID().GetCounter(), trans);
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_GARRISON_BLUEPRINTS);
- stmt->setUInt64(0, _owner->GetGUID().GetCounter());
- trans->Append(stmt);
-
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_GARRISON_BUILDINGS);
- stmt->setUInt64(0, _owner->GetGUID().GetCounter());
- trans->Append(stmt);
-
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_GARRISON_FOLLOWERS);
- stmt->setUInt64(0, _owner->GetGUID().GetCounter());
- trans->Append(stmt);
-
- stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_GARRISON);
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHARACTER_GARRISON);
stmt->setUInt64(0, _owner->GetGUID().GetCounter());
stmt->setUInt32(1, _siteLevel->ID);
stmt->setUInt32(2, _followerActivationsRemainingToday);
@@ -210,6 +196,25 @@ void Garrison::SaveToDB(SQLTransaction trans)
}
}
+void Garrison::DeleteFromDB(ObjectGuid::LowType ownerGuid, SQLTransaction trans)
+{
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_GARRISON);
+ stmt->setUInt64(0, ownerGuid);
+ trans->Append(stmt);
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_GARRISON_BLUEPRINTS);
+ stmt->setUInt64(0, ownerGuid);
+ trans->Append(stmt);
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_GARRISON_BUILDINGS);
+ stmt->setUInt64(0, ownerGuid);
+ trans->Append(stmt);
+
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHARACTER_GARRISON_FOLLOWERS);
+ stmt->setUInt64(0, ownerGuid);
+ trans->Append(stmt);
+}
+
bool Garrison::Create(uint32 garrSiteId)
{
_siteLevel = sGarrisonMgr.GetGarrSiteLevelEntry(garrSiteId, 1);
@@ -226,6 +231,18 @@ bool Garrison::Create(uint32 garrSiteId)
return true;
}
+void Garrison::Delete()
+{
+ SQLTransaction trans = CharacterDatabase.BeginTransaction();
+ DeleteFromDB(_owner->GetGUID().GetCounter(), trans);
+ CharacterDatabase.CommitTransaction(trans);
+
+ WorldPackets::Garrison::GarrisonDeleteResult garrisonDelete;
+ garrisonDelete.Result = GARRISON_SUCCESS;
+ garrisonDelete.GarrSiteID = _siteLevel->SiteID;
+ _owner->SendDirectMessage(garrisonDelete.Write());
+}
+
void Garrison::InitializePlots()
{
if (std::vector<GarrSiteLevelPlotInstEntry const*> const* plots = sGarrisonMgr.GetGarrPlotInstForSiteLevel(_siteLevel->ID))