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; + } + ///