From 8d51dcfa8501174052f67736dc93d3b6ac382c93 Mon Sep 17 00:00:00 2001 From: Pourman Date: Mon, 3 Jun 2024 23:01:22 -0700 Subject: [PATCH] feat: add overload methods for PlayerManager that may need a realmId * GetOnlineCount, GetOfflineCount, GetAllOnline, GetAllOffline, GetAllPlayers --- Source/ACE.Server/Managers/PlayerManager.cs | 82 +++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/Source/ACE.Server/Managers/PlayerManager.cs b/Source/ACE.Server/Managers/PlayerManager.cs index 004392b03a..3558836eed 100644 --- a/Source/ACE.Server/Managers/PlayerManager.cs +++ b/Source/ACE.Server/Managers/PlayerManager.cs @@ -232,6 +232,19 @@ public static List GetAllPlayers() return allPlayers; } + public static List GetAllPlayers(ushort realmId) + { + var offlinePlayers = GetAllOffline(realmId); + var onlinePlayers = GetAllOnline(realmId); + + var allPlayers = new List(); + + allPlayers.AddRange(offlinePlayers); + allPlayers.AddRange(onlinePlayers); + + return allPlayers; + } + public static Dictionary GetAccountPlayers(uint accountId) { playersLock.EnterReadLock(); @@ -258,6 +271,18 @@ public static int GetOfflineCount() playersLock.ExitReadLock(); } } + public static int GetOfflineCount(ushort realmId) + { + playersLock.EnterReadLock(); + try + { + return GetAllOffline(realmId).Count; + } + finally + { + playersLock.ExitReadLock(); + } + } public static List GetAllOffline() { @@ -277,6 +302,28 @@ public static List GetAllOffline() return results; } + public static List GetAllOffline(ushort realmId) + { + var results = new List(); + + playersLock.EnterReadLock(); + try + { + foreach (var player in offlinePlayers.Values) + { + var homeRealm = player.GetProperty(PropertyInt.HomeRealm); + if (homeRealm != null && (ushort)homeRealm == realmId) + results.Add(player); + } + } + finally + { + playersLock.ExitReadLock(); + } + + return results; + } + public static int GetOnlineCount() { playersLock.EnterReadLock(); @@ -290,6 +337,19 @@ public static int GetOnlineCount() } } + public static int GetOnlineCount(ushort realmId) + { + playersLock.EnterReadLock(); + try + { + return GetAllOnline(realmId).Count; + } + finally + { + playersLock.ExitReadLock(); + } + } + /// /// This will return null if the player wasn't found. /// @@ -357,6 +417,28 @@ public static List GetAllOnline() return results; } + public static List GetAllOnline(ushort realmId) + { + var results = new List(); + + playersLock.EnterReadLock(); + try + { + foreach (var player in onlinePlayers.Values) + { + var homeRealm = player.GetProperty(PropertyInt.HomeRealm); + if (homeRealm != null && (ushort)homeRealm == realmId) + results.Add(player); + } + } + finally + { + playersLock.ExitReadLock(); + } + + return results; + } + ///