summaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/game/Entities/Player/PlayerMisc.cpp16
-rw-r--r--src/server/game/Groups/Group.cpp21
-rw-r--r--src/server/game/Groups/Group.h2
-rw-r--r--src/server/game/Instances/InstanceSaveMgr.cpp12
-rw-r--r--src/server/game/Instances/InstanceSaveMgr.h1
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;