diff options
| author | Shauren <shauren.trinity@gmail.com> | 2015-06-24 00:03:57 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2015-06-24 00:03:57 +0200 |
| commit | acc45bcf5d657671d9348e95f069ad17e1bb5631 (patch) | |
| tree | e76f661fef9f897281b94fa833f50de4f8f717b7 /src/server/game/Garrison/Garrison.cpp | |
| parent | d799e0cee0c522ebe389b042201ff0981baaba39 (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.cpp | 49 |
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)) |
