aboutsummaryrefslogtreecommitdiff
path: root/src/server/game
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-07-24 20:11:24 +0200
committerShauren <shauren.trinity@gmail.com>2022-07-24 20:11:24 +0200
commitc1eb91c1c174870026cf4750bafc8d04d182ade0 (patch)
treeea035c134460e4c16c630356f5f8bcfdedf55ae4 /src/server/game
parent071be5a0861924521da5df1ce6fc35ee5a7089d4 (diff)
Core/WorldStates: Add generic worldstates for team in instance
Diffstat (limited to 'src/server/game')
-rw-r--r--src/server/game/Maps/Map.cpp14
-rw-r--r--src/server/game/Maps/Map.h5
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h3
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,