diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-07-24 20:11:24 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-07-24 20:11:24 +0200 |
| commit | c1eb91c1c174870026cf4750bafc8d04d182ade0 (patch) | |
| tree | ea035c134460e4c16c630356f5f8bcfdedf55ae4 /src/server/game | |
| parent | 071be5a0861924521da5df1ce6fc35ee5a7089d4 (diff) | |
Core/WorldStates: Add generic worldstates for team in instance
Diffstat (limited to 'src/server/game')
| -rw-r--r-- | src/server/game/Maps/Map.cpp | 14 | ||||
| -rw-r--r-- | src/server/game/Maps/Map.h | 5 | ||||
| -rw-r--r-- | src/server/game/Miscellaneous/SharedDefines.h | 3 |
3 files changed, 18 insertions, 4 deletions
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 1810b63d555..fc5fa907d84 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -2772,7 +2772,7 @@ template TC_GAME_API void Map::RemoveFromMap(Conversation*, bool); InstanceMap::InstanceMap(uint32 id, time_t expiry, uint32 InstanceId, Difficulty 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_scenario(nullptr) + i_data(nullptr), i_script_id(0), i_scenario(nullptr) { //lets initialize visibility distance for dungeons InstanceMap::InitVisibilityDistance(); @@ -2780,6 +2780,9 @@ InstanceMap::InstanceMap(uint32 id, time_t expiry, uint32 InstanceId, Difficulty // 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() @@ -3270,6 +3273,15 @@ uint32 InstanceMap::GetMaxResetDelay() const return mapDiff ? mapDiff->GetRaidDuration() : 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, Difficulty spawnMode) diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h index ae34acdd23b..f031b1832fd 100644 --- a/src/server/game/Maps/Map.h +++ b/src/server/game/Maps/Map.h @@ -821,8 +821,8 @@ class TC_GAME_API InstanceMap : public Map bool HasPermBoundPlayers() const; uint32 GetMaxPlayers() const; uint32 GetMaxResetDelay() const; - TeamId GetTeamIdInInstance() const { return i_script_team; } - Team GetTeamInInstance() const { return i_script_team == TEAM_ALLIANCE ? ALLIANCE : HORDE; } + TeamId GetTeamIdInInstance() const; + Team GetTeamInInstance() const { return GetTeamIdInInstance() == TEAM_ALLIANCE ? ALLIANCE : HORDE; } virtual void InitVisibilityDistance() override; @@ -832,7 +832,6 @@ class TC_GAME_API InstanceMap : public Map bool m_unloadWhenEmpty; InstanceScript* i_data; uint32 i_script_id; - TeamId i_script_team; InstanceScenario* i_scenario; }; diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 52c9166f70d..c7d180a375a 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -7750,6 +7750,9 @@ enum WorldState : uint32 WS_CURRENT_PVP_SEASON_ID = 3191, WS_PREVIOUS_PVP_SEASON_ID = 3901, + WS_TEAM_IN_INSTANCE_ALLIANCE = 4485, + WS_TEAM_IN_INSTANCE_HORDE = 4486, + WS_BATTLEFIELD_WG_VEHICLE_H = 3490, WS_BATTLEFIELD_WG_MAX_VEHICLE_H = 3491, WS_BATTLEFIELD_WG_VEHICLE_A = 3680, |
