Core/WorldStates: Add generic worldstates for team in instance

This commit is contained in:
Shauren authored and Ovahlord committed 2022-12-29 22:39:21 +01:00
1 parent c2401d38fe
commit 82fe2ab194
4 files changed
+22 -4

No files matched your search

+13 -1
View File
@@ -2585,7 +2585,7 @@ template TC_GAME_API void Map::RemoveFromMap(AreaTrigger*, bool);
InstanceMap::InstanceMap(uint32 id, time_t expiry, uint32 InstanceId, uint8 SpawnMode, TeamId InstanceTeam)
: Map(id, expiry, InstanceId, SpawnMode),
m_resetAfterUnload(false), m_unloadWhenEmpty(false),
i_data(nullptr), i_script_id(0), i_script_team(InstanceTeam)
i_data(nullptr), i_script_id(0)
{
//lets initialize visibility distance for dungeons
InstanceMap::InitVisibilityDistance();
@@ -2593,6 +2593,9 @@ InstanceMap::InstanceMap(uint32 id, time_t expiry, uint32 InstanceId, uint8 Spaw
// the timer is started by default, and stopped when the first player joins
// this make sure it gets unloaded if for some reason no player joins
m_unloadTimer = std::max(sWorld->getIntConfig(CONFIG_INSTANCE_UNLOAD_DELAY), (uint32)MIN_UNLOAD_DELAY);
sWorldStateMgr->SetValue(WS_TEAM_IN_INSTANCE_ALLIANCE, InstanceTeam == TEAM_ALLIANCE, false, this);
sWorldStateMgr->SetValue(WS_TEAM_IN_INSTANCE_HORDE, InstanceTeam == TEAM_HORDE, false, this);
}
InstanceMap::~InstanceMap()
@@ -3048,6 +3051,15 @@ uint32 InstanceMap::GetMaxResetDelay() const
return mapDiff ? mapDiff->resetTime : 0;
}
TeamId InstanceMap::GetTeamIdInInstance() const
{
if (sWorldStateMgr->GetValue(WS_TEAM_IN_INSTANCE_ALLIANCE, this))
return TEAM_ALLIANCE;
if (sWorldStateMgr->GetValue(WS_TEAM_IN_INSTANCE_HORDE, this))
return TEAM_HORDE;
return TEAM_NEUTRAL;
}
/* ******* Battleground Instance Maps ******* */
BattlegroundMap::BattlegroundMap(uint32 id, time_t expiry, uint32 InstanceId, uint8 spawnMode)