mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 16:37:01 +00:00
[11126] Rewrite InstanceSaveMgr related code.
* For better fit name to related map type class InstanceMap renamed -> DungeonMap. This clarify usage Instanceable()/IsDungeon() because BG/Arenas maps also instanceable maps. * InstanceSave have many code related to only DungeonMap case, so it replaced by 3 new classes: - MapPersistentState as base class, used for non-instanceable maps (continents and some other) (!Instenceable()) - DungeonPersistentState subclass of MapPersistentState, used for DungeonMap states (IsDungoen()) - BattlegroundPersistentState subclass of MapPersistentState, used for BattlegroundMap states (IsBattleGroundOrArena()) Now all dungeon resets code moved to subclass and all player/gpoup bound functions/structures also use it. * Map::GetInstanceSave renamed to Map::GetPersistentState and DungeonMap have specialized version return DungeonPersistentState (same pointer in fact with proper subcalss type) * InstanceResetScheduler renamed to DungeonResetScheduler
This commit is contained in:
parent
0d16b0bdc7
commit
dde16bc48c
22 changed files with 683 additions and 550 deletions
|
|
@ -598,13 +598,13 @@ bool GameObject::LoadFromDB(uint32 guid, Map *map)
|
|||
m_spawnedByDefault = true;
|
||||
m_respawnDelayTime = data->spawntimesecs;
|
||||
|
||||
m_respawnTime = map->GetInstanceSave()->GetGORespawnTime(m_DBTableGuid);
|
||||
m_respawnTime = map->GetPersistentState()->GetGORespawnTime(m_DBTableGuid);
|
||||
|
||||
// ready to respawn
|
||||
if (m_respawnTime && m_respawnTime <= time(NULL))
|
||||
{
|
||||
m_respawnTime = 0;
|
||||
map->GetInstanceSave()->SaveGORespawnTime(m_DBTableGuid, 0);
|
||||
map->GetPersistentState()->SaveGORespawnTime(m_DBTableGuid, 0);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -621,7 +621,7 @@ bool GameObject::LoadFromDB(uint32 guid, Map *map)
|
|||
void GameObject::DeleteFromDB()
|
||||
{
|
||||
// FIXME: this can be not safe in case multiply loaded instance copies
|
||||
if (InstanceSave* save = sInstanceSaveMgr.GetInstanceSave(GetMapId(), GetInstanceId()))
|
||||
if (MapPersistentState* save = sMapPersistentStateMgr.GetPersistentState(GetMapId(), GetInstanceId()))
|
||||
save->SaveGORespawnTime(m_DBTableGuid, 0);
|
||||
|
||||
sObjectMgr.DeleteGOData(m_DBTableGuid);
|
||||
|
|
@ -676,7 +676,7 @@ Unit* GameObject::GetOwner() const
|
|||
void GameObject::SaveRespawnTime()
|
||||
{
|
||||
if(m_respawnTime > time(NULL) && m_spawnedByDefault)
|
||||
GetMap()->GetInstanceSave()->SaveGORespawnTime(m_DBTableGuid, m_respawnTime);
|
||||
GetMap()->GetPersistentState()->SaveGORespawnTime(m_DBTableGuid, m_respawnTime);
|
||||
}
|
||||
|
||||
bool GameObject::isVisibleForInState(Player const* u, WorldObject const* viewPoint, bool inVisibleList) const
|
||||
|
|
@ -719,7 +719,7 @@ void GameObject::Respawn()
|
|||
if(m_spawnedByDefault && m_respawnTime > 0)
|
||||
{
|
||||
m_respawnTime = time(NULL);
|
||||
GetMap()->GetInstanceSave()->SaveGORespawnTime(m_DBTableGuid, 0);
|
||||
GetMap()->GetPersistentState()->SaveGORespawnTime(m_DBTableGuid, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue