Un-revert IPlayerManager refactor (#21244)

This commit is contained in:
Leon Friedrich
2023-10-28 09:59:53 +11:00
committed by GitHub
parent c55e1dcafd
commit e685cb626b
245 changed files with 781 additions and 943 deletions

View File

@@ -3,8 +3,6 @@ using Content.Shared.Actions;
using Content.Shared.CombatMode;
using Robust.Server.Player;
using Robust.Shared.GameObjects;
using Robust.Shared.Players;
using PlayerManager = Robust.Client.Player.PlayerManager;
namespace Content.IntegrationTests.Tests.Actions;
@@ -26,7 +24,7 @@ public sealed class ActionsAddedTest
var sEntMan = server.ResolveDependency<IEntityManager>();
var cEntMan = client.ResolveDependency<IEntityManager>();
var clientSession = client.ResolveDependency<Robust.Client.Player.IPlayerManager>().LocalPlayer?.Session;
var serverSession = server.ResolveDependency<IPlayerManager>().ServerSessions.Single();
var serverSession = server.ResolveDependency<IPlayerManager>().Sessions.Single();
var sActionSystem = server.System<SharedActionsSystem>();
var cActionSystem = client.System<SharedActionsSystem>();

View File

@@ -7,8 +7,6 @@ using Content.Shared.Administration.Logs;
using Content.Shared.Database;
using Robust.Server.Player;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Utility;
namespace Content.IntegrationTests.Tests.Administration.Logs;
@@ -177,7 +175,7 @@ public sealed class AddTests
await server.WaitPost(() =>
{
var player = sPlayers.ServerSessions.First();
var player = sPlayers.Sessions.First();
playerGuid = player.UserId;
Assert.DoesNotThrow(() =>
@@ -280,7 +278,7 @@ public sealed class AddTests
await server.WaitPost(() =>
{
var player = sPlayers.ServerSessions.Single();
var player = sPlayers.Sessions.Single();
sAdminLogSystem.Add(LogType.Unknown, $"{player} {player} test log: {guid}");
});
@@ -318,7 +316,7 @@ public sealed class AddTests
await server.WaitPost(() =>
{
var player = sPlayers.ServerSessions.Single();
var player = sPlayers.Sessions.Single();
sAdminLogSystem.Add(LogType.Unknown, $"{player:first} {player:second} test log: {guid}");
});

View File

@@ -5,6 +5,7 @@ using Content.Server.GameTicking;
using Content.Shared.Database;
using Robust.Server.Player;
using Robust.Shared.GameObjects;
using Robust.Shared.Player;
namespace Content.IntegrationTests.Tests.Administration.Logs;
@@ -27,11 +28,11 @@ public sealed class QueryTests
var date = DateTime.UtcNow;
var guid = Guid.NewGuid();
IPlayerSession player = default;
ICommonSession player = default;
await server.WaitPost(() =>
{
player = sPlayers.ServerSessions.First();
player = sPlayers.Sessions.First();
sAdminLogSystem.Add(LogType.Unknown, $"{player.AttachedEntity:Entity} test log: {guid}");
});

View File

@@ -25,7 +25,7 @@ public sealed class EuiManagerTest
await server.WaitAssertion(() =>
{
var clientSession = sPlayerManager.ServerSessions.Single();
var clientSession = sPlayerManager.Sessions.Single();
var ui = new AdminAnnounceEui();
eui.OpenEui(ui, clientSession);
});

View File

@@ -14,6 +14,7 @@ using Content.Shared.Hands.Components;
using Content.Shared.Hands.EntitySystems;
using Content.Shared.Interaction;
using Content.Shared.Mind;
using Content.Shared.Players;
using Robust.Client.Input;
using Robust.Client.UserInterface;
using Robust.Server.GameObjects;
@@ -21,7 +22,7 @@ using Robust.Server.Player;
using Robust.Shared.GameObjects;
using Robust.Shared.Log;
using Robust.Shared.Map;
using Robust.Shared.Players;
using Robust.Shared.Player;
using Robust.Shared.Prototypes;
using Robust.Shared.Timing;
using Robust.UnitTesting;
@@ -67,7 +68,7 @@ public abstract partial class InteractionTest
protected NetEntity Player;
protected ICommonSession ClientSession = default!;
protected IPlayerSession ServerSession = default!;
protected ICommonSession ServerSession = default!;
public EntityUid? ClientTarget;

View File

@@ -5,6 +5,7 @@ using Content.Server.Ghost.Roles.Components;
using Content.Server.Players;
using Content.Shared.Ghost;
using Content.Shared.Mind;
using Content.Shared.Players;
using Robust.Shared.Console;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
@@ -43,7 +44,7 @@ public sealed class GhostRoleTests
var sPlayerMan = server.ResolveDependency<Robust.Server.Player.IPlayerManager>();
var conHost = client.ResolveDependency<IConsoleHost>();
var mindSystem = entMan.System<SharedMindSystem>();
var session = sPlayerMan.ServerSessions.Single();
var session = sPlayerMan.Sessions.Single();
var originalMindId = session.ContentData()!.Mind!.Value;
// Spawn player entity & attach

View File

@@ -2,6 +2,7 @@ using System.Linq;
using Content.Server.Players;
using Content.Shared.Ghost;
using Content.Shared.Mind;
using Content.Shared.Players;
using Robust.Server.Console;
using Robust.Server.GameObjects;
using Robust.Server.Player;
@@ -35,7 +36,7 @@ public sealed partial class MindTests
MindComponent mind = default!;
await server.WaitAssertion(() =>
{
var player = playerMan.ServerSessions.Single();
var player = playerMan.Sessions.Single();
playerEnt = entMan.SpawnEntity(null, MapCoordinates.Nullspace);
visitEnt = entMan.SpawnEntity(null, MapCoordinates.Nullspace);
@@ -81,7 +82,7 @@ public sealed partial class MindTests
var entMan = server.ResolveDependency<IServerEntityManager>();
var mapManager = server.ResolveDependency<IMapManager>();
var playerMan = server.ResolveDependency<IPlayerManager>();
var player = playerMan.ServerSessions.Single();
var player = playerMan.Sessions.Single();
var mindSystem = entMan.EntitySysManager.GetEntitySystem<SharedMindSystem>();
@@ -128,7 +129,7 @@ public sealed partial class MindTests
var entMan = server.ResolveDependency<IServerEntityManager>();
var playerMan = server.ResolveDependency<IPlayerManager>();
var player = playerMan.ServerSessions.Single();
var player = playerMan.Sessions.Single();
Assert.That(!entMan.HasComponent<GhostComponent>(player.AttachedEntity), "Player was initially a ghost?");
@@ -162,7 +163,7 @@ public sealed partial class MindTests
var mindSystem = entMan.EntitySysManager.GetEntitySystem<SharedMindSystem>();
var mind = GetMind(pair);
var player = playerMan.ServerSessions.Single();
var player = playerMan.Sessions.Single();
#pragma warning disable NUnit2045 // Interdependent assertions.
Assert.That(player.AttachedEntity, Is.Not.Null);
Assert.That(entMan.EntityExists(player.AttachedEntity));
@@ -218,7 +219,7 @@ public sealed partial class MindTests
var playerMan = server.ResolveDependency<IPlayerManager>();
var serverConsole = server.ResolveDependency<IServerConsoleHost>();
var player = playerMan.ServerSessions.Single();
var player = playerMan.Sessions.Single();
var ghost = await BecomeGhost(pair);
@@ -263,7 +264,7 @@ public sealed partial class MindTests
var playerMan = server.ResolveDependency<IPlayerManager>();
var serverConsole = server.ResolveDependency<IServerConsoleHost>();
var player = playerMan.ServerSessions.Single();
var player = playerMan.Sessions.Single();
EntityUid ghost = default!;

View File

@@ -1,14 +1,17 @@
using System.Linq;
using Content.IntegrationTests.Pair;
using Content.Server.Mind;
using Content.Server.Players;
using Content.Shared.Ghost;
using Content.Shared.Mind;
using Content.Shared.Players;
using Robust.Server.GameObjects;
using Robust.Server.Player;
using Robust.Shared.Enums;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
using Robust.Shared.Network;
using Robust.Shared.Player;
namespace Content.IntegrationTests.Tests.Minds;
@@ -36,7 +39,7 @@ public sealed partial class MindTests
var playerMan = pair.Server.ResolveDependency<IPlayerManager>();
var mindSys = entMan.System<SharedMindSystem>();
var player = playerMan.ServerSessions.Single();
var player = playerMan.Sessions.Single();
EntityUid entity = default;
EntityUid mindId = default!;
@@ -71,7 +74,7 @@ public sealed partial class MindTests
EntityUid mindId = default!;
MindComponent mind = default!;
var player = playerMan.ServerSessions.Single();
var player = playerMan.Sessions.Single();
await pair.Server.WaitAssertion(() =>
{
var oldUid = player.AttachedEntity;
@@ -116,20 +119,25 @@ public sealed partial class MindTests
/// </summary>
private static (EntityUid Id, MindComponent Comp) GetMind(Pair.TestPair pair)
{
var playerMan = pair.Server.ResolveDependency<IPlayerManager>();
var entMan = pair.Server.ResolveDependency<IEntityManager>();
var player = playerMan.ServerSessions.SingleOrDefault();
var playerMan = pair.Server.PlayerMan;
var entMan = pair.Server.EntMan;
var player = playerMan.Sessions.SingleOrDefault();
Assert.That(player, Is.Not.Null);
var mindId = player.ContentData()!.Mind!.Value;
Assert.That(mindId, Is.Not.EqualTo(default(EntityUid)));
var mind = entMan.GetComponent<MindComponent>(mindId);
ActorComponent actor = default!;
Assert.Multiple(() =>
{
Assert.That(player, Is.EqualTo(mind.Session), "Player session does not match mind session");
Assert.That(entMan.System<MindSystem>().GetMind(player.UserId), Is.EqualTo(mindId));
Assert.That(player.AttachedEntity, Is.EqualTo(mind.CurrentEntity), "Player is not attached to the mind's current entity.");
Assert.That(entMan.EntityExists(mind.OwnedEntity), "The mind's current entity does not exist");
Assert.That(mind.VisitingEntity == null || entMan.EntityExists(mind.VisitingEntity), "The minds visited entity does not exist.");
Assert.That(entMan.TryGetComponent(mind.CurrentEntity, out actor));
});
Assert.That(actor.PlayerSession, Is.EqualTo(mind.Session));
return (mindId, mind);
}
@@ -139,7 +147,7 @@ public sealed partial class MindTests
var netManager = pair.Client.ResolveDependency<IClientNetManager>();
var playerMan = pair.Server.ResolveDependency<IPlayerManager>();
var entMan = pair.Server.ResolveDependency<IEntityManager>();
var player = playerMan.ServerSessions.Single();
var player = playerMan.Sessions.Single();
var mindId = player.ContentData()!.Mind!.Value;
var mind = entMan.GetComponent<MindComponent>(mindId);
@@ -161,21 +169,21 @@ public sealed partial class MindTests
{
var netManager = pair.Client.ResolveDependency<IClientNetManager>();
var playerMan = pair.Server.ResolveDependency<IPlayerManager>();
Assert.That(!playerMan.ServerSessions.Any());
Assert.That(!playerMan.Sessions.Any());
await Task.WhenAll(pair.Client.WaitIdleAsync(), pair.Client.WaitIdleAsync());
pair.Client.SetConnectTarget(pair.Server);
await pair.Client.WaitPost(() => netManager.ClientConnect(null!, 0, username));
await pair.RunTicksSync(5);
var player = playerMan.ServerSessions.Single();
var player = playerMan.Sessions.Single();
Assert.That(player.Status, Is.EqualTo(SessionStatus.InGame));
}
private static async Task<IPlayerSession> DisconnectReconnect(Pair.TestPair pair)
private static async Task<ICommonSession> DisconnectReconnect(Pair.TestPair pair)
{
var playerMan = pair.Server.ResolveDependency<IPlayerManager>();
var player = playerMan.ServerSessions.Single();
var player = playerMan.Sessions.Single();
var name = player.Name;
var id = player.UserId;
@@ -183,7 +191,7 @@ public sealed partial class MindTests
await Connect(pair, name);
// Session has changed
var newSession = playerMan.ServerSessions.Single();
var newSession = playerMan.Sessions.Single();
Assert.Multiple(() =>
{
Assert.That(newSession, Is.Not.EqualTo(player));

View File

@@ -1,6 +1,8 @@
using System.Linq;
using Content.Shared.Ghost;
using Content.Shared.Mind;
using NUnit.Framework.Interfaces;
using Robust.Server.GameObjects;
using Robust.Server.Player;
using Robust.Shared.GameObjects;
using Robust.Shared.Map;
@@ -49,7 +51,7 @@ public sealed partial class MindTests
var mind = GetMind(pair);
var playerMan = pair.Server.ResolveDependency<IPlayerManager>();
var player = playerMan.ServerSessions.Single();
var player = playerMan.Sessions.Single();
var name = player.Name;
var user = player.UserId;
Assert.That(mind.Comp.OwnedEntity, Is.Not.Null);
@@ -72,7 +74,7 @@ public sealed partial class MindTests
// Reconnect
await Connect(pair, name);
player = playerMan.ServerSessions.Single();
player = playerMan.Sessions.Single();
Assert.Multiple(() =>
{
Assert.That(user, Is.EqualTo(player.UserId));
@@ -127,8 +129,10 @@ public sealed partial class MindTests
var mindSys = entMan.System<SharedMindSystem>();
var mind = GetMind(pair);
Assert.Null(mind.Comp.VisitingEntity);
// Make player visit a new mob
var original = mind.Comp.CurrentEntity;
var original = mind.Comp.OwnedEntity;
EntityUid visiting = default;
await pair.Server.WaitAssertion(() =>
{
@@ -137,6 +141,7 @@ public sealed partial class MindTests
});
await pair.RunTicksSync(5);
Assert.That(mind.Comp.VisitingEntity, Is.EqualTo(visiting));
await DisconnectReconnect(pair);
// Player is back in control of the visited mob, mind was preserved
@@ -150,4 +155,32 @@ public sealed partial class MindTests
await pair.CleanReturnAsync();
}
// This test will do the following
// - connect as a normal player
// - disconnect
// - reconnect
// - assert that they return to the original entity.
[Test]
public async Task TestReconnect()
{
await using var pair = await SetupPair();
var mind = GetMind(pair);
Assert.Null(mind.Comp.VisitingEntity);
Assert.NotNull(mind.Comp.OwnedEntity);
var entity = mind.Comp.OwnedEntity;
await pair.RunTicksSync(5);
await DisconnectReconnect(pair);
await pair.RunTicksSync(5);
var newMind = GetMind(pair);
Assert.Null(newMind.Comp.VisitingEntity);
Assert.That(newMind.Comp.OwnedEntity, Is.EqualTo(entity));
Assert.That(newMind.Id, Is.EqualTo(mind.Id));
await pair.CleanReturnAsync();
}
}

View File

@@ -11,6 +11,7 @@ using Content.Shared.Damage.Prototypes;
using Content.Shared.FixedPoint;
using Content.Shared.Mind;
using Content.Shared.Mind.Components;
using Content.Shared.Players;
using Content.Shared.Roles;
using Content.Shared.Roles.Jobs;
using Robust.Server.Console;
@@ -345,7 +346,7 @@ public sealed partial class MindTests
EntityUid entity = default!;
EntityUid mindId = default!;
MindComponent mind = default!;
var player = playerMan.ServerSessions.Single();
var player = playerMan.Sessions.Single();
await server.WaitAssertion(() =>
{
@@ -406,12 +407,6 @@ public sealed partial class MindTests
await pair.CleanReturnAsync();
}
// TODO Implement
/*[Test]
public async Task TestPlayerCanReturnFromGhostWhenDead()
{
}*/
[Test]
public async Task TestGhostDoesNotInfiniteLoop()
{
@@ -432,7 +427,7 @@ public sealed partial class MindTests
EntityUid ghost = default!;
EntityUid mindId = default!;
MindComponent mind = default!;
var player = playerMan.ServerSessions.Single();
var player = playerMan.Sessions.Single();
await server.WaitAssertion(() =>
{

View File

@@ -2,8 +2,7 @@
using System.Collections.Generic;
using Content.IntegrationTests.Pair;
using Content.Server.Administration.Managers;
using Robust.Server.Player;
using Robust.Shared.Players;
using Robust.Shared.Player;
using Robust.Shared.Toolshed;
using Robust.Shared.Toolshed.Errors;
using Robust.Shared.Toolshed.Syntax;
@@ -60,7 +59,7 @@ public abstract class ToolshedTest : IInvocationContext
AdminManager = Server.ResolveDependency<IAdminManager>();
}
protected bool InvokeCommand(string command, out object? result, IPlayerSession? session = null)
protected bool InvokeCommand(string command, out object? result, ICommonSession? session = null)
{
return Toolshed.InvokeCommand(this, command, null, out result);
}
@@ -95,7 +94,7 @@ public abstract class ToolshedTest : IInvocationContext
return true;
}
protected IPlayerSession? InvocationSession { get; set; }
protected ICommonSession? InvocationSession { get; set; }
public ICommonSession? Session
{