diff options
Diffstat (limited to 'src/server')
-rw-r--r-- | src/server/game/Entities/Player/PlayerMisc.cpp | 16 | ||||
-rw-r--r-- | src/server/game/Groups/Group.cpp | 21 | ||||
-rw-r--r-- | src/server/game/Groups/Group.h | 2 | ||||
-rw-r--r-- | src/server/game/Instances/InstanceSaveMgr.cpp | 12 | ||||
-rw-r--r-- | src/server/game/Instances/InstanceSaveMgr.h | 1 |
5 files changed, 19 insertions, 33 deletions
diff --git a/src/server/game/Entities/Player/PlayerMisc.cpp b/src/server/game/Entities/Player/PlayerMisc.cpp index b7e2561b49..c8a91f0b9f 100644 --- a/src/server/game/Entities/Player/PlayerMisc.cpp +++ b/src/server/game/Entities/Player/PlayerMisc.cpp @@ -181,16 +181,6 @@ void Player::SendResetFailedNotify(uint32 mapid) GetSession()->SendPacket(&data); } -void DeleteInstanceSavedData(uint32 instanceId) -{ - if (instanceId) - { - CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DELETE_INSTANCE_SAVED_DATA); - stmt->SetData(0, instanceId); - CharacterDatabase.Execute(stmt); - } -} - /// Reset all solo instances and optionally send a message on success for each void Player::ResetInstances(ObjectGuid guid, uint8 method, bool isRaid) { @@ -223,7 +213,7 @@ void Player::ResetInstances(ObjectGuid guid, uint8 method, bool isRaid) p->SendResetInstanceFailed(0, instanceSave->GetMapId()); } - DeleteInstanceSavedData(instanceSave->GetInstanceId()); + sInstanceSaveMgr->DeleteInstanceSavedData(instanceSave->GetInstanceId()); } for (std::vector<InstanceSave*>::const_iterator itr = toUnbind.begin(); itr != toUnbind.end(); ++itr) { @@ -258,7 +248,7 @@ void Player::ResetInstances(ObjectGuid guid, uint8 method, bool isRaid) p->SendResetInstanceFailed(0, instanceSave->GetMapId()); } - DeleteInstanceSavedData(instanceSave->GetInstanceId()); + sInstanceSaveMgr->DeleteInstanceSavedData(instanceSave->GetInstanceId()); } for (std::vector<InstanceSave*>::const_iterator itr = toUnbind.begin(); itr != toUnbind.end(); ++itr) sInstanceSaveMgr->UnbindAllFor(*itr); @@ -287,7 +277,7 @@ void Player::ResetInstances(ObjectGuid guid, uint8 method, bool isRaid) //else // p->SendResetInstanceFailed(0, instanceSave->GetMapId()); - DeleteInstanceSavedData(instanceSave->GetInstanceId()); + sInstanceSaveMgr->DeleteInstanceSavedData(instanceSave->GetInstanceId()); } for (std::vector<InstanceSave*>::const_iterator itr = toUnbind.begin(); itr != toUnbind.end(); ++itr) sInstanceSaveMgr->PlayerUnbindInstance(p->GetGUID(), (*itr)->GetMapId(), (*itr)->GetDifficulty(), true, p); diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 5b08d774ef..6fa4ff0778 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -829,12 +829,7 @@ void Group::Disband(bool hideDestroy /* = false */) } // Cleaning up instance saved data for gameobjects when a group is disbanded - if (instanceId) - { - CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DELETE_INSTANCE_SAVED_DATA); - stmt->SetData(0, instanceId); - CharacterDatabase.Execute(stmt); - } + sInstanceSaveMgr->DeleteInstanceSavedData(instanceId); sGroupMgr->RemoveGroup(this); delete this; @@ -2037,16 +2032,6 @@ void Group::SetRaidDifficulty(Difficulty difficulty) } } -void Group::ResetInstanceSavedGameobjects(uint32 instanceId) -{ - if (instanceId) - { - CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DELETE_INSTANCE_SAVED_DATA); - stmt->SetData(0, instanceId); - CharacterDatabase.Execute(stmt); - } -} - void Group::ResetInstances(uint8 method, bool isRaid, Player* leader) { if (isBGGroup() || isBFGroup() || isLFGGroup()) @@ -2078,7 +2063,7 @@ void Group::ResetInstances(uint8 method, bool isRaid, Player* leader) leader->SendResetInstanceFailed(0, instanceSave->GetMapId()); } - ResetInstanceSavedGameobjects(instanceSave->GetInstanceId()); + sInstanceSaveMgr->DeleteInstanceSavedData(instanceSave->GetInstanceId()); } for (std::vector<InstanceSave*>::const_iterator itr = toUnbind.begin(); itr != toUnbind.end(); ++itr) sInstanceSaveMgr->UnbindAllFor(*itr); @@ -2106,7 +2091,7 @@ void Group::ResetInstances(uint8 method, bool isRaid, Player* leader) leader->SendResetInstanceFailed(0, instanceSave->GetMapId()); } - ResetInstanceSavedGameobjects(instanceSave->GetInstanceId()); + sInstanceSaveMgr->DeleteInstanceSavedData(instanceSave->GetInstanceId()); } for (std::vector<InstanceSave*>::const_iterator itr = toUnbind.begin(); itr != toUnbind.end(); ++itr) sInstanceSaveMgr->UnbindAllFor(*itr); diff --git a/src/server/game/Groups/Group.h b/src/server/game/Groups/Group.h index a1041be314..8a03d6f387 100644 --- a/src/server/game/Groups/Group.h +++ b/src/server/game/Groups/Group.h @@ -316,8 +316,6 @@ public: void SetDifficultyChangePrevention(DifficultyPreventionChangeType type); void DoForAllMembers(std::function<void(Player*)> const& worker); - // Reset Instance Gameobjects - void ResetInstanceSavedGameobjects(uint32 instanceId); protected: void _homebindIfInstance(Player* player); void _cancelHomebindIfInstance(Player* player); diff --git a/src/server/game/Instances/InstanceSaveMgr.cpp b/src/server/game/Instances/InstanceSaveMgr.cpp index 152cffd458..6058b300ba 100644 --- a/src/server/game/Instances/InstanceSaveMgr.cpp +++ b/src/server/game/Instances/InstanceSaveMgr.cpp @@ -132,6 +132,7 @@ bool InstanceSaveMgr::DeleteInstanceSaveIfNeeded(InstanceSave* save, bool skipMa CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_INSTANCE_BY_INSTANCE); stmt->SetData(0, save->GetInstanceId()); CharacterDatabase.Execute(stmt); + DeleteInstanceSavedData(save->GetInstanceId()); // clear respawn times (if map is loaded do it just to be sure, if already unloaded it won't do it by itself) Map::DeleteRespawnTimesInDB(save->GetMapId(), save->GetInstanceId()); @@ -244,6 +245,16 @@ void InstanceSaveMgr::SanitizeInstanceSavedData() CharacterDatabase.Execute(stmt); } +void InstanceSaveMgr::DeleteInstanceSavedData(uint32 instanceId) +{ + if (instanceId) + { + CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DELETE_INSTANCE_SAVED_DATA); + stmt->SetData(0, instanceId); + CharacterDatabase.Execute(stmt); + } +} + void InstanceSaveMgr::LoadInstances() { uint32 oldMSTime = getMSTime(); @@ -512,6 +523,7 @@ void InstanceSaveMgr::_ResetSave(InstanceSaveHashMap::iterator& itr) stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_INSTANCE_BY_INSTANCE); stmt->SetData(0, itr->second->GetInstanceId()); CharacterDatabase.Execute(stmt); + DeleteInstanceSavedData(itr->second->GetInstanceId()); // clear respawn times if the map is already unloaded and won't do it by itself if (!sMapMgr->FindMap(itr->second->GetMapId(), itr->second->GetInstanceId())) diff --git a/src/server/game/Instances/InstanceSaveMgr.h b/src/server/game/Instances/InstanceSaveMgr.h index 945b4d79d4..7c6f18371e 100644 --- a/src/server/game/Instances/InstanceSaveMgr.h +++ b/src/server/game/Instances/InstanceSaveMgr.h @@ -183,6 +183,7 @@ public: void UnbindAllFor(InstanceSave* save); void SanitizeInstanceSavedData(); + void DeleteInstanceSavedData(uint32 instanceId); protected: static uint16 ResetTimeDelay[]; static PlayerBindStorage playerBindStorage; |