refactor(Core/Instances): Update CHAR_DELETE_INSTANCE_SAVED_DATA (#11866)

* Update InstanceSaveMgr.cpp

* Update Group.cpp

* Update InstanceSaveMgr.cpp

* Update InstanceSaveMgr.h

* Update InstanceSaveMgr.cpp

* Update InstanceSaveMgr.h

* Update InstanceSaveMgr.cpp

* Update InstanceSaveMgr.h

* Update InstanceSaveMgr.cpp

* Update Group.cpp

* Update PlayerMisc.cpp

* Update InstanceSaveMgr.h

* Update Group.cpp

* Update PlayerMisc.cpp

* Update Group.cpp

* Update Group.cpp

* Update InstanceSaveMgr.cpp

* Update InstanceSaveMgr.h

* Update Group.h

* Update InstanceSaveMgr.cpp

* Update InstanceSaveMgr.cpp

* Update InstanceSaveMgr.cpp
This commit is contained in:
天鹿
2022-05-31 02:27:50 +08:00
committed by GitHub
parent d44cea93e7
commit 40a5eef152
5 changed files with 19 additions and 33 deletions
+3 -13
View File
@@ -181,16 +181,6 @@ void Player::SendResetFailedNotify(uint32 mapid)
GetSession()->SendPacket(&data); 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 /// Reset all solo instances and optionally send a message on success for each
void Player::ResetInstances(ObjectGuid guid, uint8 method, bool isRaid) 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()); 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) 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()); 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) for (std::vector<InstanceSave*>::const_iterator itr = toUnbind.begin(); itr != toUnbind.end(); ++itr)
sInstanceSaveMgr->UnbindAllFor(*itr); sInstanceSaveMgr->UnbindAllFor(*itr);
@@ -287,7 +277,7 @@ void Player::ResetInstances(ObjectGuid guid, uint8 method, bool isRaid)
//else //else
// p->SendResetInstanceFailed(0, instanceSave->GetMapId()); // 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) for (std::vector<InstanceSave*>::const_iterator itr = toUnbind.begin(); itr != toUnbind.end(); ++itr)
sInstanceSaveMgr->PlayerUnbindInstance(p->GetGUID(), (*itr)->GetMapId(), (*itr)->GetDifficulty(), true, p); sInstanceSaveMgr->PlayerUnbindInstance(p->GetGUID(), (*itr)->GetMapId(), (*itr)->GetDifficulty(), true, p);
+3 -18
View File
@@ -829,12 +829,7 @@ void Group::Disband(bool hideDestroy /* = false */)
} }
// Cleaning up instance saved data for gameobjects when a group is disbanded // Cleaning up instance saved data for gameobjects when a group is disbanded
if (instanceId) sInstanceSaveMgr->DeleteInstanceSavedData(instanceId);
{
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DELETE_INSTANCE_SAVED_DATA);
stmt->SetData(0, instanceId);
CharacterDatabase.Execute(stmt);
}
sGroupMgr->RemoveGroup(this); sGroupMgr->RemoveGroup(this);
delete 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) void Group::ResetInstances(uint8 method, bool isRaid, Player* leader)
{ {
if (isBGGroup() || isBFGroup() || isLFGGroup()) if (isBGGroup() || isBFGroup() || isLFGGroup())
@@ -2078,7 +2063,7 @@ void Group::ResetInstances(uint8 method, bool isRaid, Player* leader)
leader->SendResetInstanceFailed(0, instanceSave->GetMapId()); 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) for (std::vector<InstanceSave*>::const_iterator itr = toUnbind.begin(); itr != toUnbind.end(); ++itr)
sInstanceSaveMgr->UnbindAllFor(*itr); sInstanceSaveMgr->UnbindAllFor(*itr);
@@ -2106,7 +2091,7 @@ void Group::ResetInstances(uint8 method, bool isRaid, Player* leader)
leader->SendResetInstanceFailed(0, instanceSave->GetMapId()); 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) for (std::vector<InstanceSave*>::const_iterator itr = toUnbind.begin(); itr != toUnbind.end(); ++itr)
sInstanceSaveMgr->UnbindAllFor(*itr); sInstanceSaveMgr->UnbindAllFor(*itr);
-2
View File
@@ -316,8 +316,6 @@ public:
void SetDifficultyChangePrevention(DifficultyPreventionChangeType type); void SetDifficultyChangePrevention(DifficultyPreventionChangeType type);
void DoForAllMembers(std::function<void(Player*)> const& worker); void DoForAllMembers(std::function<void(Player*)> const& worker);
// Reset Instance Gameobjects
void ResetInstanceSavedGameobjects(uint32 instanceId);
protected: protected:
void _homebindIfInstance(Player* player); void _homebindIfInstance(Player* player);
void _cancelHomebindIfInstance(Player* player); void _cancelHomebindIfInstance(Player* player);
@@ -132,6 +132,7 @@ bool InstanceSaveMgr::DeleteInstanceSaveIfNeeded(InstanceSave* save, bool skipMa
CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_INSTANCE_BY_INSTANCE); CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_INSTANCE_BY_INSTANCE);
stmt->SetData(0, save->GetInstanceId()); stmt->SetData(0, save->GetInstanceId());
CharacterDatabase.Execute(stmt); 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) // 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()); Map::DeleteRespawnTimesInDB(save->GetMapId(), save->GetInstanceId());
@@ -244,6 +245,16 @@ void InstanceSaveMgr::SanitizeInstanceSavedData()
CharacterDatabase.Execute(stmt); 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() void InstanceSaveMgr::LoadInstances()
{ {
uint32 oldMSTime = getMSTime(); uint32 oldMSTime = getMSTime();
@@ -512,6 +523,7 @@ void InstanceSaveMgr::_ResetSave(InstanceSaveHashMap::iterator& itr)
stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_INSTANCE_BY_INSTANCE); stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_INSTANCE_BY_INSTANCE);
stmt->SetData(0, itr->second->GetInstanceId()); stmt->SetData(0, itr->second->GetInstanceId());
CharacterDatabase.Execute(stmt); CharacterDatabase.Execute(stmt);
DeleteInstanceSavedData(itr->second->GetInstanceId());
// clear respawn times if the map is already unloaded and won't do it by itself // 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())) if (!sMapMgr->FindMap(itr->second->GetMapId(), itr->second->GetInstanceId()))
@@ -183,6 +183,7 @@ public:
void UnbindAllFor(InstanceSave* save); void UnbindAllFor(InstanceSave* save);
void SanitizeInstanceSavedData(); void SanitizeInstanceSavedData();
void DeleteInstanceSavedData(uint32 instanceId);
protected: protected:
static uint16 ResetTimeDelay[]; static uint16 ResetTimeDelay[];
static PlayerBindStorage playerBindStorage; static PlayerBindStorage playerBindStorage;