Slight mind test cleanup (#17521)
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
#nullable enable
|
#nullable enable
|
||||||
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Content.Server.Ghost.Roles;
|
using Content.Server.Ghost.Roles;
|
||||||
using Content.Server.Ghost.Roles.Components;
|
using Content.Server.Ghost.Roles.Components;
|
||||||
@@ -16,12 +17,7 @@ public sealed class GhostRoleTests
|
|||||||
{
|
{
|
||||||
private const string Prototypes = @"
|
private const string Prototypes = @"
|
||||||
- type: entity
|
- type: entity
|
||||||
id: GhostRoleTestEntity_Player
|
id: GhostRoleTestEntity
|
||||||
components:
|
|
||||||
- type: MindContainer
|
|
||||||
|
|
||||||
- type: entity
|
|
||||||
id: GhostRoleTestEntity_Role
|
|
||||||
components:
|
components:
|
||||||
- type: MindContainer
|
- type: MindContainer
|
||||||
- type: GhostRole
|
- type: GhostRole
|
||||||
@@ -42,36 +38,29 @@ public sealed class GhostRoleTests
|
|||||||
var entMan = server.ResolveDependency<IEntityManager>();
|
var entMan = server.ResolveDependency<IEntityManager>();
|
||||||
var sPlayerMan = server.ResolveDependency<Robust.Server.Player.IPlayerManager>();
|
var sPlayerMan = server.ResolveDependency<Robust.Server.Player.IPlayerManager>();
|
||||||
var conHost = client.ResolveDependency<IConsoleHost>();
|
var conHost = client.ResolveDependency<IConsoleHost>();
|
||||||
var cPlayerMan = client.ResolveDependency<Robust.Client.Player.IPlayerManager>();
|
|
||||||
var mindSystem = entMan.System<MindSystem>();
|
var mindSystem = entMan.System<MindSystem>();
|
||||||
|
var session = sPlayerMan.ServerSessions.Single();
|
||||||
// Get player data
|
|
||||||
if (cPlayerMan.LocalPlayer?.Session == null)
|
|
||||||
Assert.Fail("No player");
|
|
||||||
|
|
||||||
var clientSession = cPlayerMan.LocalPlayer!.Session!;
|
|
||||||
var session = sPlayerMan.GetSessionByUserId(clientSession.UserId);
|
|
||||||
|
|
||||||
// Spawn player entity & attach
|
// Spawn player entity & attach
|
||||||
EntityUid originalMob = default;
|
EntityUid originalMob = default;
|
||||||
await server.WaitPost(() =>
|
await server.WaitPost(() =>
|
||||||
{
|
{
|
||||||
originalMob = entMan.SpawnEntity("GhostRoleTestEntity_Player", MapCoordinates.Nullspace);
|
originalMob = entMan.SpawnEntity(null, MapCoordinates.Nullspace);
|
||||||
mindSystem.TransferTo(session.ContentData()!.Mind!, originalMob, true);
|
mindSystem.TransferTo(session.ContentData()!.Mind!, originalMob, true);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Check player got attached.
|
// Check player got attached.
|
||||||
await PoolManager.RunTicksSync(pairTracker.Pair, 10);
|
await PoolManager.RunTicksSync(pairTracker.Pair, 10);
|
||||||
Assert.That(cPlayerMan.LocalPlayer.ControlledEntity, Is.EqualTo(originalMob));
|
Assert.That(session.AttachedEntity, Is.EqualTo(originalMob));
|
||||||
|
|
||||||
// Use the ghost command
|
// Use the ghost command
|
||||||
conHost.ExecuteCommand("ghost");
|
conHost.ExecuteCommand("ghost");
|
||||||
await PoolManager.RunTicksSync(pairTracker.Pair, 10);
|
await PoolManager.RunTicksSync(pairTracker.Pair, 10);
|
||||||
Assert.That(cPlayerMan.LocalPlayer.ControlledEntity, Is.Not.EqualTo(originalMob));
|
Assert.That(session.AttachedEntity, Is.Not.EqualTo(originalMob));
|
||||||
|
|
||||||
// Spawn ghost takeover entity.
|
// Spawn ghost takeover entity.
|
||||||
EntityUid ghostRole = default;
|
EntityUid ghostRole = default;
|
||||||
await server.WaitPost(() => ghostRole = entMan.SpawnEntity("GhostRoleTestEntity_Role", MapCoordinates.Nullspace));
|
await server.WaitPost(() => ghostRole = entMan.SpawnEntity("GhostRoleTestEntity", MapCoordinates.Nullspace));
|
||||||
|
|
||||||
// Take the ghost role
|
// Take the ghost role
|
||||||
await server.WaitPost(() =>
|
await server.WaitPost(() =>
|
||||||
@@ -82,13 +71,13 @@ public sealed class GhostRoleTests
|
|||||||
|
|
||||||
// Check player got attached to ghost role.
|
// Check player got attached to ghost role.
|
||||||
await PoolManager.RunTicksSync(pairTracker.Pair, 10);
|
await PoolManager.RunTicksSync(pairTracker.Pair, 10);
|
||||||
Assert.That(cPlayerMan.LocalPlayer.ControlledEntity, Is.EqualTo(ghostRole));
|
Assert.That(session.AttachedEntity, Is.EqualTo(ghostRole));
|
||||||
|
|
||||||
// Ghost again.
|
// Ghost again.
|
||||||
conHost.ExecuteCommand("ghost");
|
conHost.ExecuteCommand("ghost");
|
||||||
await PoolManager.RunTicksSync(pairTracker.Pair, 10);
|
await PoolManager.RunTicksSync(pairTracker.Pair, 10);
|
||||||
Assert.That(cPlayerMan.LocalPlayer.ControlledEntity, Is.Not.EqualTo(originalMob));
|
Assert.That(session.AttachedEntity, Is.Not.EqualTo(originalMob));
|
||||||
Assert.That(cPlayerMan.LocalPlayer.ControlledEntity, Is.Not.EqualTo(ghostRole));
|
Assert.That(session.AttachedEntity, Is.Not.EqualTo(ghostRole));
|
||||||
|
|
||||||
// Next, control the original entity again:
|
// Next, control the original entity again:
|
||||||
await server.WaitPost(() =>
|
await server.WaitPost(() =>
|
||||||
@@ -96,7 +85,7 @@ public sealed class GhostRoleTests
|
|||||||
mindSystem.TransferTo(session.ContentData()!.Mind!, originalMob, true);
|
mindSystem.TransferTo(session.ContentData()!.Mind!, originalMob, true);
|
||||||
});
|
});
|
||||||
await PoolManager.RunTicksSync(pairTracker.Pair, 10);
|
await PoolManager.RunTicksSync(pairTracker.Pair, 10);
|
||||||
Assert.That(cPlayerMan.LocalPlayer.ControlledEntity, Is.EqualTo(originalMob));
|
Assert.That(session.AttachedEntity, Is.EqualTo(originalMob));
|
||||||
|
|
||||||
await pairTracker.CleanReturnAsync();
|
await pairTracker.CleanReturnAsync();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,126 +0,0 @@
|
|||||||
#nullable enable
|
|
||||||
using System.Linq;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Content.Server.Mind;
|
|
||||||
using Content.Server.Players;
|
|
||||||
using NUnit.Framework;
|
|
||||||
using Robust.Server.GameObjects;
|
|
||||||
using Robust.Server.Player;
|
|
||||||
using Robust.Shared.GameObjects;
|
|
||||||
using Robust.Shared.IoC;
|
|
||||||
using Robust.Shared.Map;
|
|
||||||
using Robust.Shared.Maths;
|
|
||||||
|
|
||||||
namespace Content.IntegrationTests.Tests.Minds
|
|
||||||
{
|
|
||||||
// Tests various scenarios of deleting the entity that a player's mind is connected to.
|
|
||||||
[TestFixture]
|
|
||||||
public sealed class MindEntityDeletionTest
|
|
||||||
{
|
|
||||||
// This test will do the following:
|
|
||||||
// - spawn a player
|
|
||||||
// - visit some entity
|
|
||||||
// - delete the entity being visited
|
|
||||||
// - assert that player returns to original entity
|
|
||||||
[Test]
|
|
||||||
public async Task TestDeleteVisiting()
|
|
||||||
{
|
|
||||||
await using var pairTracker = await PoolManager.GetServerClient();
|
|
||||||
var server = pairTracker.Pair.Server;
|
|
||||||
|
|
||||||
var entMan = server.ResolveDependency<IServerEntityManager>();
|
|
||||||
var playerMan = server.ResolveDependency<IPlayerManager>();
|
|
||||||
var mapManager = server.ResolveDependency<IMapManager>();
|
|
||||||
|
|
||||||
var mindSystem = entMan.EntitySysManager.GetEntitySystem<MindSystem>();
|
|
||||||
|
|
||||||
EntityUid playerEnt = default;
|
|
||||||
EntityUid visitEnt = default;
|
|
||||||
Mind mind = default!;
|
|
||||||
var map = await PoolManager.CreateTestMap(pairTracker);
|
|
||||||
|
|
||||||
await server.WaitAssertion(() =>
|
|
||||||
{
|
|
||||||
var player = playerMan.ServerSessions.Single();
|
|
||||||
var pos = new MapCoordinates(Vector2.Zero, map.MapId);
|
|
||||||
|
|
||||||
playerEnt = entMan.SpawnEntity(null, pos);
|
|
||||||
visitEnt = entMan.SpawnEntity(null, pos);
|
|
||||||
|
|
||||||
mind = mindSystem.CreateMind(player.UserId);
|
|
||||||
mindSystem.TransferTo(mind, playerEnt);
|
|
||||||
mindSystem.Visit(mind, visitEnt);
|
|
||||||
|
|
||||||
Assert.That(player.AttachedEntity, Is.EqualTo(visitEnt));
|
|
||||||
Assert.That(mind.VisitingEntity, Is.EqualTo(visitEnt));
|
|
||||||
});
|
|
||||||
|
|
||||||
await PoolManager.RunTicksSync(pairTracker.Pair, 5);
|
|
||||||
await server.WaitPost(() => entMan.DeleteEntity(visitEnt));
|
|
||||||
await PoolManager.RunTicksSync(pairTracker.Pair, 5);
|
|
||||||
|
|
||||||
Assert.IsNull(mind.VisitingEntity);
|
|
||||||
Assert.That(entMan.EntityExists(mind.OwnedEntity));
|
|
||||||
Assert.That(mind.OwnedEntity, Is.EqualTo(playerEnt));
|
|
||||||
|
|
||||||
// This used to throw so make sure it doesn't.
|
|
||||||
await server.WaitPost(() => entMan.DeleteEntity(mind.OwnedEntity!.Value));
|
|
||||||
await PoolManager.RunTicksSync(pairTracker.Pair, 5);
|
|
||||||
|
|
||||||
await server.WaitPost(() => mapManager.DeleteMap(map.MapId));
|
|
||||||
await pairTracker.CleanReturnAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
// this is a variant of TestGhostOnDelete that just deletes the whole map.
|
|
||||||
[Test]
|
|
||||||
public async Task TestGhostOnDeleteMap()
|
|
||||||
{
|
|
||||||
await using var pairTracker = await PoolManager.GetServerClient();
|
|
||||||
var server = pairTracker.Pair.Server;
|
|
||||||
var testMap = await PoolManager.CreateTestMap(pairTracker);
|
|
||||||
var coordinates = testMap.GridCoords;
|
|
||||||
|
|
||||||
var entMan = server.ResolveDependency<IServerEntityManager>();
|
|
||||||
var mapManager = server.ResolveDependency<IMapManager>();
|
|
||||||
var playerMan = server.ResolveDependency<IPlayerManager>();
|
|
||||||
var player = playerMan.ServerSessions.Single();
|
|
||||||
|
|
||||||
var mindSystem = entMan.EntitySysManager.GetEntitySystem<MindSystem>();
|
|
||||||
|
|
||||||
var map = await PoolManager.CreateTestMap(pairTracker);
|
|
||||||
|
|
||||||
EntityUid playerEnt = default;
|
|
||||||
Mind mind = default!;
|
|
||||||
await server.WaitAssertion(() =>
|
|
||||||
{
|
|
||||||
playerEnt = entMan.SpawnEntity(null, coordinates);
|
|
||||||
mind = player.ContentData()!.Mind!;
|
|
||||||
mindSystem.TransferTo(mind, playerEnt);
|
|
||||||
|
|
||||||
Assert.That(mind.CurrentEntity, Is.EqualTo(playerEnt));
|
|
||||||
});
|
|
||||||
|
|
||||||
await PoolManager.RunTicksSync(pairTracker.Pair, 5);
|
|
||||||
|
|
||||||
await server.WaitPost(() =>
|
|
||||||
{
|
|
||||||
mapManager.DeleteMap(testMap.MapId);
|
|
||||||
});
|
|
||||||
|
|
||||||
await PoolManager.RunTicksSync(pairTracker.Pair, 5);
|
|
||||||
|
|
||||||
await server.WaitAssertion(() =>
|
|
||||||
{
|
|
||||||
Assert.That(entMan.EntityExists(mind.CurrentEntity!.Value), Is.True);
|
|
||||||
Assert.That(mind.CurrentEntity, Is.Not.EqualTo(playerEnt));
|
|
||||||
});
|
|
||||||
|
|
||||||
await server.WaitPost(() =>
|
|
||||||
{
|
|
||||||
mapManager.DeleteMap(map.MapId);
|
|
||||||
});
|
|
||||||
|
|
||||||
await pairTracker.CleanReturnAsync();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,9 +1,7 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Content.Server.GameTicking;
|
|
||||||
using Content.Server.Ghost.Components;
|
using Content.Server.Ghost.Components;
|
||||||
using Content.Server.Mind;
|
using Content.Server.Mind;
|
||||||
using Content.Server.Mind.Components;
|
|
||||||
using Content.Server.Players;
|
using Content.Server.Players;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using Robust.Server.Console;
|
using Robust.Server.Console;
|
||||||
@@ -11,13 +9,101 @@ using Robust.Server.GameObjects;
|
|||||||
using Robust.Server.Player;
|
using Robust.Server.Player;
|
||||||
using Robust.Shared.GameObjects;
|
using Robust.Shared.GameObjects;
|
||||||
using Robust.Shared.Map;
|
using Robust.Shared.Map;
|
||||||
using Robust.Shared.Network;
|
|
||||||
|
|
||||||
namespace Content.IntegrationTests.Tests.Minds;
|
namespace Content.IntegrationTests.Tests.Minds;
|
||||||
|
|
||||||
[TestFixture]
|
// Tests various scenarios where an entity that is associated with a player's mind is deleted.
|
||||||
public sealed class GhostTests
|
public sealed partial class MindTests
|
||||||
{
|
{
|
||||||
|
// This test will do the following:
|
||||||
|
// - spawn a player
|
||||||
|
// - visit some entity
|
||||||
|
// - delete the entity being visited
|
||||||
|
// - assert that player returns to original entity
|
||||||
|
[Test]
|
||||||
|
public async Task TestDeleteVisiting()
|
||||||
|
{
|
||||||
|
await using var pairTracker = await PoolManager.GetServerClient();
|
||||||
|
var server = pairTracker.Pair.Server;
|
||||||
|
|
||||||
|
var entMan = server.ResolveDependency<IServerEntityManager>();
|
||||||
|
var playerMan = server.ResolveDependency<IPlayerManager>();
|
||||||
|
|
||||||
|
var mindSystem = entMan.EntitySysManager.GetEntitySystem<MindSystem>();
|
||||||
|
|
||||||
|
EntityUid playerEnt = default;
|
||||||
|
EntityUid visitEnt = default;
|
||||||
|
Mind mind = default!;
|
||||||
|
await server.WaitAssertion(() =>
|
||||||
|
{
|
||||||
|
var player = playerMan.ServerSessions.Single();
|
||||||
|
|
||||||
|
playerEnt = entMan.SpawnEntity(null, MapCoordinates.Nullspace);
|
||||||
|
visitEnt = entMan.SpawnEntity(null, MapCoordinates.Nullspace);
|
||||||
|
|
||||||
|
mind = mindSystem.CreateMind(player.UserId);
|
||||||
|
mindSystem.TransferTo(mind, playerEnt);
|
||||||
|
mindSystem.Visit(mind, visitEnt);
|
||||||
|
|
||||||
|
Assert.That(player.AttachedEntity, Is.EqualTo(visitEnt));
|
||||||
|
Assert.That(mind.VisitingEntity, Is.EqualTo(visitEnt));
|
||||||
|
});
|
||||||
|
|
||||||
|
await PoolManager.RunTicksSync(pairTracker.Pair, 5);
|
||||||
|
await server.WaitPost(() => entMan.DeleteEntity(visitEnt));
|
||||||
|
await PoolManager.RunTicksSync(pairTracker.Pair, 5);
|
||||||
|
|
||||||
|
Assert.IsNull(mind.VisitingEntity);
|
||||||
|
Assert.That(entMan.EntityExists(mind.OwnedEntity));
|
||||||
|
Assert.That(mind.OwnedEntity, Is.EqualTo(playerEnt));
|
||||||
|
|
||||||
|
// This used to throw so make sure it doesn't.
|
||||||
|
await server.WaitPost(() => entMan.DeleteEntity(mind.OwnedEntity!.Value));
|
||||||
|
await PoolManager.RunTicksSync(pairTracker.Pair, 5);
|
||||||
|
|
||||||
|
await pairTracker.CleanReturnAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
// this is a variant of TestGhostOnDelete that just deletes the whole map.
|
||||||
|
[Test]
|
||||||
|
public async Task TestGhostOnDeleteMap()
|
||||||
|
{
|
||||||
|
await using var pairTracker = await PoolManager.GetServerClient();
|
||||||
|
var server = pairTracker.Pair.Server;
|
||||||
|
var testMap = await PoolManager.CreateTestMap(pairTracker);
|
||||||
|
var coordinates = testMap.GridCoords;
|
||||||
|
|
||||||
|
var entMan = server.ResolveDependency<IServerEntityManager>();
|
||||||
|
var mapManager = server.ResolveDependency<IMapManager>();
|
||||||
|
var playerMan = server.ResolveDependency<IPlayerManager>();
|
||||||
|
var player = playerMan.ServerSessions.Single();
|
||||||
|
|
||||||
|
var mindSystem = entMan.EntitySysManager.GetEntitySystem<MindSystem>();
|
||||||
|
|
||||||
|
EntityUid playerEnt = default;
|
||||||
|
Mind mind = default!;
|
||||||
|
await server.WaitAssertion(() =>
|
||||||
|
{
|
||||||
|
playerEnt = entMan.SpawnEntity(null, coordinates);
|
||||||
|
mind = player.ContentData()!.Mind!;
|
||||||
|
mindSystem.TransferTo(mind, playerEnt);
|
||||||
|
|
||||||
|
Assert.That(mind.CurrentEntity, Is.EqualTo(playerEnt));
|
||||||
|
});
|
||||||
|
|
||||||
|
await PoolManager.RunTicksSync(pairTracker.Pair, 5);
|
||||||
|
await server.WaitPost(() => mapManager.DeleteMap(testMap.MapId));
|
||||||
|
await PoolManager.RunTicksSync(pairTracker.Pair, 5);
|
||||||
|
|
||||||
|
await server.WaitAssertion(() =>
|
||||||
|
{
|
||||||
|
Assert.That(entMan.EntityExists(mind.CurrentEntity!.Value), Is.True);
|
||||||
|
Assert.That(mind.CurrentEntity, Is.Not.EqualTo(playerEnt));
|
||||||
|
});
|
||||||
|
|
||||||
|
await pairTracker.CleanReturnAsync();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Test that a ghost gets created when the player entity is deleted.
|
/// Test that a ghost gets created when the player entity is deleted.
|
||||||
/// 1. Delete mob
|
/// 1. Delete mob
|
||||||
@@ -27,7 +113,7 @@ public sealed class GhostTests
|
|||||||
public async Task TestGhostOnDelete()
|
public async Task TestGhostOnDelete()
|
||||||
{
|
{
|
||||||
// Client is needed to spawn session
|
// Client is needed to spawn session
|
||||||
await using var pairTracker = await PoolManager.GetServerClient();
|
await using var pairTracker = await SetupPair();
|
||||||
var server = pairTracker.Pair.Server;
|
var server = pairTracker.Pair.Server;
|
||||||
|
|
||||||
var entMan = server.ResolveDependency<IServerEntityManager>();
|
var entMan = server.ResolveDependency<IServerEntityManager>();
|
||||||
@@ -35,21 +121,13 @@ public sealed class GhostTests
|
|||||||
|
|
||||||
IPlayerSession player = playerMan.ServerSessions.Single();
|
IPlayerSession player = playerMan.ServerSessions.Single();
|
||||||
|
|
||||||
await server.WaitAssertion(() =>
|
Assert.That(!entMan.HasComponent<GhostComponent>(player.AttachedEntity), "Player was initially a ghost?");
|
||||||
{
|
|
||||||
Assert.That(player.AttachedEntity, Is.Not.EqualTo(null));
|
|
||||||
entMan.DeleteEntity(player.AttachedEntity!.Value);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
// Delete entity
|
||||||
|
await server.WaitPost(() => entMan.DeleteEntity(player.AttachedEntity!.Value));
|
||||||
await PoolManager.RunTicksSync(pairTracker.Pair, 5);
|
await PoolManager.RunTicksSync(pairTracker.Pair, 5);
|
||||||
|
|
||||||
await server.WaitAssertion(() =>
|
Assert.That(entMan.HasComponent<GhostComponent>(player.AttachedEntity), "Player did not become a ghost");
|
||||||
{
|
|
||||||
// Is player a ghost?
|
|
||||||
Assert.That(player.AttachedEntity, Is.Not.EqualTo(null));
|
|
||||||
var entity = player.AttachedEntity!.Value;
|
|
||||||
Assert.That(entMan.HasComponent<GhostComponent>(entity));
|
|
||||||
});
|
|
||||||
|
|
||||||
await pairTracker.CleanReturnAsync();
|
await pairTracker.CleanReturnAsync();
|
||||||
}
|
}
|
||||||
@@ -72,7 +150,6 @@ public sealed class GhostTests
|
|||||||
|
|
||||||
var entMan = server.ResolveDependency<IServerEntityManager>();
|
var entMan = server.ResolveDependency<IServerEntityManager>();
|
||||||
var playerMan = server.ResolveDependency<IPlayerManager>();
|
var playerMan = server.ResolveDependency<IPlayerManager>();
|
||||||
var gameTicker = entMan.EntitySysManager.GetEntitySystem<GameTicker>();
|
|
||||||
var mindSystem = entMan.EntitySysManager.GetEntitySystem<MindSystem>();
|
var mindSystem = entMan.EntitySysManager.GetEntitySystem<MindSystem>();
|
||||||
|
|
||||||
IPlayerSession player = playerMan.ServerSessions.Single();
|
IPlayerSession player = playerMan.ServerSessions.Single();
|
||||||
@@ -15,7 +15,6 @@ using IPlayerManager = Robust.Server.Player.IPlayerManager;
|
|||||||
namespace Content.IntegrationTests.Tests.Minds;
|
namespace Content.IntegrationTests.Tests.Minds;
|
||||||
|
|
||||||
// This partial class contains misc helper functions for other tests.
|
// This partial class contains misc helper functions for other tests.
|
||||||
[TestFixture]
|
|
||||||
public sealed partial class MindTests
|
public sealed partial class MindTests
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -23,7 +22,7 @@ public sealed partial class MindTests
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public async Task<PairTracker> SetupPair()
|
public async Task<PairTracker> SetupPair()
|
||||||
{
|
{
|
||||||
var pairTracker = await PoolManager.GetServerClient(new PoolSettings{ ExtraPrototypes = Prototypes });
|
var pairTracker = await PoolManager.GetServerClient();
|
||||||
var pair = pairTracker.Pair;
|
var pair = pairTracker.Pair;
|
||||||
|
|
||||||
var entMan = pair.Server.ResolveDependency<IServerEntityManager>();
|
var entMan = pair.Server.ResolveDependency<IServerEntityManager>();
|
||||||
@@ -35,7 +34,7 @@ public sealed partial class MindTests
|
|||||||
EntityUid entity = default;
|
EntityUid entity = default;
|
||||||
await pair.Server.WaitPost(() =>
|
await pair.Server.WaitPost(() =>
|
||||||
{
|
{
|
||||||
entity = entMan.SpawnEntity("MindTestEntity", MapCoordinates.Nullspace);
|
entity = entMan.SpawnEntity(null, MapCoordinates.Nullspace);
|
||||||
mindSys.TransferTo(mindSys.CreateMind(player.UserId), entity);
|
mindSys.TransferTo(mindSys.CreateMind(player.UserId), entity);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ using Robust.Shared.Map;
|
|||||||
|
|
||||||
namespace Content.IntegrationTests.Tests.Minds;
|
namespace Content.IntegrationTests.Tests.Minds;
|
||||||
|
|
||||||
[TestFixture]
|
|
||||||
public sealed partial class MindTests
|
public sealed partial class MindTests
|
||||||
{
|
{
|
||||||
// This test will do the following:
|
// This test will do the following:
|
||||||
@@ -92,7 +91,6 @@ public sealed partial class MindTests
|
|||||||
{
|
{
|
||||||
await using var pairTracker = await SetupPair();
|
await using var pairTracker = await SetupPair();
|
||||||
var pair = pairTracker.Pair;
|
var pair = pairTracker.Pair;
|
||||||
|
|
||||||
var entMan = pair.Server.ResolveDependency<IEntityManager>();
|
var entMan = pair.Server.ResolveDependency<IEntityManager>();
|
||||||
var mind = GetMind(pair);
|
var mind = GetMind(pair);
|
||||||
|
|
||||||
@@ -119,10 +117,8 @@ public sealed partial class MindTests
|
|||||||
{
|
{
|
||||||
await using var pairTracker = await SetupPair();
|
await using var pairTracker = await SetupPair();
|
||||||
var pair = pairTracker.Pair;
|
var pair = pairTracker.Pair;
|
||||||
|
|
||||||
var entMan = pair.Server.ResolveDependency<IEntityManager>();
|
var entMan = pair.Server.ResolveDependency<IEntityManager>();
|
||||||
var mindSys = entMan.System<MindSystem>();
|
var mindSys = entMan.System<MindSystem>();
|
||||||
await PoolManager.RunTicksSync(pair, 5);
|
|
||||||
var mind = GetMind(pair);
|
var mind = GetMind(pair);
|
||||||
|
|
||||||
// Make player visit a new mob
|
// Make player visit a new mob
|
||||||
@@ -130,7 +126,7 @@ public sealed partial class MindTests
|
|||||||
EntityUid visiting = default;
|
EntityUid visiting = default;
|
||||||
await pair.Server.WaitAssertion(() =>
|
await pair.Server.WaitAssertion(() =>
|
||||||
{
|
{
|
||||||
visiting = entMan.SpawnEntity("MindTestEntity", MapCoordinates.Nullspace);
|
visiting = entMan.SpawnEntity(null, MapCoordinates.Nullspace);
|
||||||
mindSys.Visit(mind, visiting);
|
mindSys.Visit(mind, visiting);
|
||||||
});
|
});
|
||||||
await PoolManager.RunTicksSync(pair, 5);
|
await PoolManager.RunTicksSync(pair, 5);
|
||||||
|
|||||||
@@ -32,14 +32,9 @@ public sealed partial class MindTests
|
|||||||
{
|
{
|
||||||
private const string Prototypes = @"
|
private const string Prototypes = @"
|
||||||
- type: entity
|
- type: entity
|
||||||
id: MindTestEntity
|
|
||||||
components:
|
|
||||||
- type: MindContainer
|
|
||||||
|
|
||||||
- type: entity
|
|
||||||
parent: MindTestEntity
|
|
||||||
id: MindTestEntityDamageable
|
id: MindTestEntityDamageable
|
||||||
components:
|
components:
|
||||||
|
- type: MindContainer
|
||||||
- type: Damageable
|
- type: Damageable
|
||||||
damageContainer: Biological
|
damageContainer: Biological
|
||||||
- type: Body
|
- type: Body
|
||||||
|
|||||||
@@ -390,14 +390,10 @@ public sealed class MindSystem : EntitySystem
|
|||||||
|
|
||||||
if (entity != null)
|
if (entity != null)
|
||||||
{
|
{
|
||||||
if (!TryComp(entity.Value, out component))
|
component = EnsureComp<MindContainerComponent>(entity.Value);
|
||||||
{
|
|
||||||
component = AddComp<MindContainerComponent>(entity.Value);
|
if (component.HasMind)
|
||||||
}
|
|
||||||
else if (component.HasMind)
|
|
||||||
{
|
|
||||||
_gameTicker.OnGhostAttempt(component.Mind, false);
|
_gameTicker.OnGhostAttempt(component.Mind, false);
|
||||||
}
|
|
||||||
|
|
||||||
if (TryComp<ActorComponent>(entity.Value, out var actor))
|
if (TryComp<ActorComponent>(entity.Value, out var actor))
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user