Marked PlayerSession find methods on PlayerManager Obsolete (#2244)

This commit is contained in:
Acruid
2021-11-21 05:51:17 -08:00
committed by GitHub
parent 60e6ecb0cc
commit 746ec9eab7
8 changed files with 60 additions and 63 deletions

View File

@@ -158,7 +158,7 @@ namespace Robust.Server.Console.Commands
var sb = new StringBuilder();
var players = IoCManager.Resolve<IPlayerManager>().GetAllPlayers();
var players = IoCManager.Resolve<IPlayerManager>().ServerSessions;
sb.AppendLine($"{"Player Name",20} {"Status",12} {"Playing Time",14} {"Ping",9} {"IP EndPoint",20}");
sb.AppendLine("-------------------------------------------------------------------------------");
@@ -188,7 +188,7 @@ namespace Robust.Server.Console.Commands
if (args.Length < 1)
{
var player = shell.Player as IPlayerSession;
var toKickPlayer = player ?? players.GetAllPlayers().FirstOrDefault();
var toKickPlayer = player ?? players.ServerSessions.FirstOrDefault();
if (toKickPlayer == null)
{
shell.WriteLine("You need to provide a player to kick.");

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System.Collections.Generic;
using System.Linq;
using Robust.Server.Player;
using Robust.Shared.Enums;
using Robust.Shared.GameObjects;
@@ -19,7 +20,7 @@ namespace Robust.Server.GameObjects
/// <summary>
/// Priority queue sorted by how soon the effect will die, we remove messages from the front of the queue during update until caught up
/// </summary>
private readonly PriorityQueue<EffectSystemMessage> _CurrentEffects = new(new EffectMessageComparer());
private readonly PriorityQueue<EffectSystemMessage> _currentEffects = new(new EffectMessageComparer());
/// <summary>
/// Creates a particle effect and sends it to clients.
@@ -28,11 +29,11 @@ namespace Robust.Server.GameObjects
/// <param name="excludedSession">Session to be excluded for prediction</param>
public void CreateParticle(EffectSystemMessage effect, IPlayerSession? excludedSession = null)
{
_CurrentEffects.Add(effect);
_currentEffects.Add(effect);
//For now we will use this which sends to ALL clients
//TODO: Client bubbling
foreach (var player in _playerManager.GetAllPlayers())
foreach (var player in _playerManager.ServerSessions)
{
if (player.Status != SessionStatus.InGame || player == excludedSession)
continue;
@@ -44,9 +45,9 @@ namespace Robust.Server.GameObjects
public override void Update(float frameTime)
{
//Take elements from front of priority queue until they are old
while (_CurrentEffects.Count != 0 && _CurrentEffects.Peek().DeathTime < _timing.CurTime)
while (_currentEffects.Count != 0 && _currentEffects.Peek().DeathTime < _timing.CurTime)
{
_CurrentEffects.Take();
_currentEffects.Take();
}
}

View File

@@ -16,7 +16,6 @@ using Robust.Shared.IoC;
using Robust.Shared.Log;
using Robust.Shared.Network;
using Robust.Shared.Network.Messages;
using Robust.Shared.Players;
using Robust.Shared.Timing;
using Robust.Shared.Utility;
@@ -124,7 +123,7 @@ namespace Robust.Server.GameStates
_entityManager.CullDeletionHistory(GameTick.MaxValue);
_pvs.CullDeletionHistory(GameTick.MaxValue);
_mapManager.CullDeletionHistory(GameTick.MaxValue);
_pvs.Cleanup(_playerManager.GetAllPlayers());
_pvs.Cleanup(_playerManager.ServerSessions);
return;
}
@@ -185,7 +184,7 @@ namespace Robust.Server.GameStates
_networkManager.ServerSendMessage(stateUpdateMessage, channel);
}
Parallel.ForEach(_playerManager.GetAllPlayers(), session =>
Parallel.ForEach(_playerManager.ServerSessions, session =>
{
try
{
@@ -197,7 +196,7 @@ namespace Robust.Server.GameStates
}
});
_pvs.Cleanup(_playerManager.GetAllPlayers());
_pvs.Cleanup(_playerManager.ServerSessions);
var oldestAck = new GameTick(oldestAckValue);
// keep the deletion history buffers clean

View File

@@ -17,6 +17,11 @@ namespace Robust.Server.Player
{
BoundKeyMap KeyMap { get; }
/// <summary>
/// Same as the common sessions, but the server version.
/// </summary>
IEnumerable<IPlayerSession> ServerSessions { get; }
/// <summary>
/// Raised when the <see cref="SessionStatus" /> of a <see cref="IPlayerSession" /> is changed.
/// </summary>
@@ -65,10 +70,16 @@ namespace Robust.Server.Player
IEnumerable<IPlayerData> GetAllPlayerData();
[Obsolete]
void DetachAll();
[Obsolete("Use player Filter or Inline me!")]
List<IPlayerSession> GetPlayersInRange(MapCoordinates worldPos, int range);
[Obsolete("Use player Filter or Inline me!")]
List<IPlayerSession> GetPlayersInRange(EntityCoordinates worldPos, int range);
[Obsolete("Use player Filter or Inline me!")]
List<IPlayerSession> GetPlayersBy(Func<IPlayerSession, bool> predicate);
[Obsolete("Use player Filter or Inline me!")]
List<IPlayerSession> GetAllPlayers();
List<PlayerState>? GetPlayerStates(GameTick fromTick);
}

View File

@@ -14,6 +14,7 @@ using Robust.Shared.IoC;
using Robust.Shared.Map;
using Robust.Shared.Network;
using Robust.Shared.Network.Messages;
using Robust.Shared.Player;
using Robust.Shared.Players;
using Robust.Shared.Reflection;
using Robust.Shared.Timing;
@@ -25,7 +26,7 @@ namespace Robust.Server.Player
/// <summary>
/// This class will manage connected player sessions.
/// </summary>
internal class PlayerManager : IPlayerManager
public class PlayerManager : IPlayerManager
{
private static readonly Gauge PlayerCountMetric = Metrics
.CreateGauge("robust_player_count", "Number of players on the server.");
@@ -74,6 +75,8 @@ namespace Robust.Server.Player
}
}
public IEnumerable<IPlayerSession> ServerSessions => Sessions.Cast<IPlayerSession>();
/// <inheritdoc />
[ViewVariables]
public int PlayerCount
@@ -219,9 +222,9 @@ namespace Robust.Server.Player
_sessionsLock.EnterReadLock();
try
{
if (_sessions.TryGetValue(userId, out var _session))
if (_sessions.TryGetValue(userId, out var playerSession))
{
session = _session;
session = playerSession;
return true;
}
}
@@ -236,6 +239,7 @@ namespace Robust.Server.Player
/// <summary>
/// Causes all sessions to switch from the lobby to the the game.
/// </summary>
[Obsolete]
public void SendJoinGameToAll()
{
_sessionsLock.EnterReadLock();
@@ -265,6 +269,7 @@ namespace Robust.Server.Player
/// <summary>
/// Causes all sessions to detach from their entity.
/// </summary>
[Obsolete]
public void DetachAll()
{
_sessionsLock.EnterReadLock();
@@ -287,22 +292,14 @@ namespace Robust.Server.Player
/// <param name="worldPos">Position of the circle in world-space.</param>
/// <param name="range">Radius of the circle in world units.</param>
/// <returns></returns>
[Obsolete("Use player Filter or Inline me!")]
public List<IPlayerSession> GetPlayersInRange(MapCoordinates worldPos, int range)
{
_sessionsLock.EnterReadLock();
//TODO: This needs to be moved to the PVS system.
try
{
return
_sessions.Values.Where(x =>
x.AttachedEntity != null && worldPos.InRange(x.AttachedEntity.Transform.MapPosition, range))
.Cast<IPlayerSession>()
.ToList();
}
finally
{
_sessionsLock.ExitReadLock();
}
return Filter.Empty()
.AddInRange(worldPos, range)
.Recipients
.Cast<IPlayerSession>()
.ToList();
}
/// <summary>
@@ -311,40 +308,34 @@ namespace Robust.Server.Player
/// <param name="worldPos">Position of the circle in world-space.</param>
/// <param name="range">Radius of the circle in world units.</param>
/// <returns></returns>
[Obsolete("Use player Filter or Inline me!")]
public List<IPlayerSession> GetPlayersInRange(EntityCoordinates worldPos, int range)
{
return GetPlayersInRange(worldPos.ToMap(_entityManager), range);
return Filter.Empty()
.AddInRange(worldPos.ToMap(_entityManager), range)
.Recipients
.Cast<IPlayerSession>()
.ToList();
}
[Obsolete("Use player Filter or Inline me!")]
public List<IPlayerSession> GetPlayersBy(Func<IPlayerSession, bool> predicate)
{
_sessionsLock.EnterReadLock();
try
{
return
_sessions.Values.Where(predicate).ToList();
}
finally
{
_sessionsLock.ExitReadLock();
}
return Filter.Empty()
.AddWhere((session => predicate((IPlayerSession)session)))
.Recipients
.Cast<IPlayerSession>()
.ToList();
}
/// <summary>
/// Gets all players in the server.
/// </summary>
/// <returns></returns>
[Obsolete("Use player Filter or Inline me!")]
public List<IPlayerSession> GetAllPlayers()
{
_sessionsLock.EnterReadLock();
try
{
return _sessions.Values.Cast<IPlayerSession>().ToList();
}
finally
{
_sessionsLock.ExitReadLock();
}
return ServerSessions.ToList();
}
/// <summary>
@@ -399,7 +390,7 @@ namespace Robust.Server.Player
var session = new PlayerSession(this, args.Channel, data);
session.PlayerStatusChanged += (obj, sessionArgs) => OnPlayerStatusChanged(session, sessionArgs.OldStatus, sessionArgs.NewStatus);
session.PlayerStatusChanged += (_, sessionArgs) => OnPlayerStatusChanged(session, sessionArgs.OldStatus, sessionArgs.NewStatus);
_sessionsLock.EnterWriteLock();
try
@@ -453,7 +444,7 @@ namespace Robust.Server.Player
private void HandlePlayerListReq(MsgPlayerListReq message)
{
var channel = message.MsgChannel;
var players = GetAllPlayers().ToArray();
var players = Sessions;
var netMsg = channel.CreateNetMessage<MsgPlayerList>();
// client session is complete, set their status accordingly.
@@ -465,9 +456,6 @@ namespace Robust.Server.Player
var list = new List<PlayerState>();
foreach (var client in players)
{
if (client == null)
continue;
var info = new PlayerState
{
UserId = client.UserId,
@@ -495,9 +483,9 @@ namespace Robust.Server.Player
public bool TryGetPlayerData(NetUserId userId, [NotNullWhen(true)] out IPlayerData? data)
{
if (_playerData.TryGetValue(userId, out var _data))
if (_playerData.TryGetValue(userId, out var playerData))
{
data = _data;
data = playerData;
return true;
}
data = default;

View File

@@ -47,8 +47,6 @@ namespace Robust.Server.Player
private SessionStatus _status = SessionStatus.Connecting;
/// <inheritdoc />
[ViewVariables]
internal string Name { get; set; }
@@ -99,7 +97,6 @@ namespace Robust.Server.Player
/// <inheritdoc />
public DateTime ConnectedTime { get; private set; }
/// <inheritdoc />
[ViewVariables(VVAccess.ReadWrite)]
public int VisibilityMask { get; set; } = 1;

View File

@@ -1,9 +1,10 @@
using System.Linq;
using System.Threading.Tasks;
using NUnit.Framework;
using Robust.Server.Player;
using Robust.Shared.Enums;
using Robust.Shared.IoC;
using Robust.Shared.Network;
using IPlayerManager = Robust.Server.Player.IPlayerManager;
namespace Robust.UnitTesting.Shared
{
@@ -56,7 +57,7 @@ namespace Robust.UnitTesting.Shared
Assert.That(playerManager.PlayerCount, Is.EqualTo(1));
// Get the only player...
var player = playerManager.GetAllPlayers()[0];
var player = playerManager.Sessions.Single();
Assert.That(player.Status, Is.EqualTo(SessionStatus.Connected));
Assert.That(player.ConnectedClient.IsConnected, Is.True);

View File

@@ -58,7 +58,7 @@ namespace Robust.UnitTesting.Shared.GameObjects
// Setup PVS
entity.AddComponent<Robust.Server.GameObjects.EyeComponent>();
var player = playerMan.GetAllPlayers().First();
var player = playerMan.ServerSessions.First();
player.AttachToEntity(entity);
player.JoinGame();
});
@@ -185,7 +185,7 @@ namespace Robust.UnitTesting.Shared.GameObjects
// Setup PVS
entity.AddComponent<Robust.Server.GameObjects.EyeComponent>();
var player = playerMan.GetAllPlayers().First();
var player = playerMan.ServerSessions.First();
player.AttachToEntity(entity);
player.JoinGame();
});