Make DisposalUnitComponent.TryInsert ECS (#4959)
This commit is contained in:
committed by
GitHub
parent
ecbcab4824
commit
3e5a856948
@@ -1,5 +1,3 @@
|
||||
#nullable enable
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Content.Server.Disposal.Tube.Components;
|
||||
@@ -7,9 +5,11 @@ using Content.Server.Disposal.Unit.Components;
|
||||
using Content.Server.Disposal.Unit.EntitySystems;
|
||||
using Content.Server.Power.Components;
|
||||
using Content.Shared.Coordinates;
|
||||
using Content.Shared.Disposal;
|
||||
using NUnit.Framework;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Reflection;
|
||||
using Robust.Shared.Timing;
|
||||
|
||||
namespace Content.IntegrationTests.Tests.Disposal
|
||||
@@ -20,25 +20,33 @@ namespace Content.IntegrationTests.Tests.Disposal
|
||||
[TestOf(typeof(DisposalUnitComponent))]
|
||||
public class DisposalUnitTest : ContentIntegrationTest
|
||||
{
|
||||
private async Task UnitInsert(DisposalUnitComponent unit, bool result, params IEntity[] entities)
|
||||
[Reflect(false)]
|
||||
private class DisposalUnitTestSystem : EntitySystem
|
||||
{
|
||||
List<Task> insertionTasks = new();
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<DoInsertDisposalUnitEvent>(ev =>
|
||||
{
|
||||
var (_, toInsert, unit) = ev;
|
||||
var insertTransform = EntityManager.GetComponent<ITransformComponent>(toInsert);
|
||||
var unitTransform = EntityManager.GetComponent<ITransformComponent>(unit);
|
||||
// Not in a tube yet
|
||||
Assert.That(insertTransform.Parent, Is.EqualTo(unitTransform));
|
||||
}, after: new[] {typeof(SharedDisposalUnitSystem)});
|
||||
}
|
||||
}
|
||||
|
||||
private void UnitInsert(DisposalUnitComponent unit, bool result, params IEntity[] entities)
|
||||
{
|
||||
var system = EntitySystem.Get<DisposalUnitSystem>();
|
||||
|
||||
foreach (var entity in entities)
|
||||
{
|
||||
Assert.That(EntitySystem.Get<DisposalUnitSystem>().CanInsert(unit, entity), Is.EqualTo(result));
|
||||
var insertTask = unit.TryInsert(entity).ContinueWith(task =>
|
||||
{
|
||||
Assert.That(task.Result, Is.EqualTo(result));
|
||||
if (result)
|
||||
{
|
||||
// Not in a tube yet
|
||||
Assert.That(entity.Transform.Parent, Is.EqualTo(unit.Owner.Transform));
|
||||
}
|
||||
});
|
||||
insertionTasks.Add(insertTask);
|
||||
Assert.That(system.CanInsert(unit, entity), Is.EqualTo(result));
|
||||
system.TryInsert(unit.Owner.Uid, entity.Uid, entity.Uid);
|
||||
}
|
||||
|
||||
await Task.WhenAll(insertionTasks.ToArray());
|
||||
}
|
||||
|
||||
private void UnitContains(DisposalUnitComponent unit, bool result, params IEntity[] entities)
|
||||
@@ -49,9 +57,9 @@ namespace Content.IntegrationTests.Tests.Disposal
|
||||
}
|
||||
}
|
||||
|
||||
private async void UnitInsertContains(DisposalUnitComponent unit, bool result, params IEntity[] entities)
|
||||
private void UnitInsertContains(DisposalUnitComponent unit, bool result, params IEntity[] entities)
|
||||
{
|
||||
await UnitInsert(unit, result, entities);
|
||||
UnitInsert(unit, result, entities);
|
||||
UnitContains(unit, result, entities);
|
||||
}
|
||||
|
||||
@@ -75,6 +83,7 @@ namespace Content.IntegrationTests.Tests.Disposal
|
||||
damageContainer: Biological
|
||||
- type: Physics
|
||||
bodyType: KinematicController
|
||||
- type: DoAfter
|
||||
|
||||
- type: entity
|
||||
name: WrenchDummy
|
||||
@@ -86,12 +95,15 @@ namespace Content.IntegrationTests.Tests.Disposal
|
||||
- Anchoring
|
||||
- type: Physics
|
||||
bodyType: Dynamic
|
||||
- type: DoAfter
|
||||
|
||||
- type: entity
|
||||
name: DisposalUnitDummy
|
||||
id: DisposalUnitDummy
|
||||
components:
|
||||
- type: DisposalUnit
|
||||
entryDelay: 0
|
||||
draggedEntryDelay: 0
|
||||
- type: Anchorable
|
||||
- type: ApcPowerReceiver
|
||||
- type: Physics
|
||||
@@ -123,7 +135,6 @@ namespace Content.IntegrationTests.Tests.Disposal
|
||||
var mapManager = server.ResolveDependency<IMapManager>();
|
||||
var entityManager = server.ResolveDependency<IEntityManager>();
|
||||
var pauseManager = server.ResolveDependency<IPauseManager>();
|
||||
var componentFactory = server.ResolveDependency<IComponentFactory>();
|
||||
var tileDefinitionManager = server.ResolveDependency<ITileDefinitionManager>();
|
||||
|
||||
// Build up test environment
|
||||
@@ -206,7 +217,7 @@ namespace Content.IntegrationTests.Tests.Disposal
|
||||
await server.WaitAssertion(() =>
|
||||
{
|
||||
// Remove power need
|
||||
Assert.True(disposalUnit.TryGetComponent(out ApcPowerReceiverComponent? power));
|
||||
Assert.True(disposalUnit.TryGetComponent(out ApcPowerReceiverComponent power));
|
||||
power!.NeedsPower = false;
|
||||
Assert.True(unit.Powered);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user