ActionBlocker CanMove uses EntityUid exclusively

This commit is contained in:
Vera Aguilera Puerto
2021-11-09 13:15:55 +01:00
parent 1f9e1c033f
commit 5f9cfaac43
10 changed files with 19 additions and 24 deletions

View File

@@ -82,7 +82,7 @@ namespace Content.IntegrationTests.Tests.Buckle
Assert.NotNull(buckle);
Assert.Null(buckle.BuckledTo);
Assert.False(buckle.Buckled);
Assert.True(actionBlocker.CanMove(human));
Assert.True(actionBlocker.CanMove(human.Uid));
Assert.True(actionBlocker.CanChangeDirection(human));
Assert.True(standingState.Down(human.Uid));
Assert.True(standingState.Stand(human.Uid));
@@ -100,7 +100,7 @@ namespace Content.IntegrationTests.Tests.Buckle
var player = IoCManager.Resolve<IPlayerManager>().GetAllPlayers().Single();
Assert.True(((BuckleComponentState) buckle.GetComponentState(player)).Buckled);
Assert.False(actionBlocker.CanMove(human));
Assert.False(actionBlocker.CanMove(human.Uid));
Assert.False(actionBlocker.CanChangeDirection(human));
Assert.False(standingState.Down(human.Uid));
Assert.That((human.Transform.WorldPosition - chair.Transform.WorldPosition).Length, Is.LessThanOrEqualTo(buckle.BuckleOffset.Length));
@@ -134,7 +134,7 @@ namespace Content.IntegrationTests.Tests.Buckle
Assert.True(buckle.TryUnbuckle(human));
Assert.Null(buckle.BuckledTo);
Assert.False(buckle.Buckled);
Assert.True(actionBlocker.CanMove(human));
Assert.True(actionBlocker.CanMove(human.Uid));
Assert.True(actionBlocker.CanChangeDirection(human));
Assert.True(standingState.Down(human.Uid));
@@ -192,7 +192,7 @@ namespace Content.IntegrationTests.Tests.Buckle
// Force unbuckle
Assert.True(buckle.TryUnbuckle(human, true));
Assert.False(buckle.Buckled);
Assert.True(actionBlocker.CanMove(human));
Assert.True(actionBlocker.CanMove(human.Uid));
Assert.True(actionBlocker.CanChangeDirection(human));
Assert.True(standingState.Down(human.Uid));

View File

@@ -250,7 +250,7 @@ namespace Content.Server.AI.Steering
// Main optimisation to be done below is the redundant calls and adding more variables
if (entity.Deleted ||
!entity.TryGetComponent(out AiControllerComponent? controller) ||
!EntitySystem.Get<ActionBlockerSystem>().CanMove(entity) ||
!EntitySystem.Get<ActionBlockerSystem>().CanMove(entity.Uid) ||
!entity.Transform.GridID.IsValid())
{
return SteeringStatus.NoPath;

View File

@@ -12,7 +12,7 @@ namespace Content.Server.AI.Utility.Considerations.ActionBlocker
{
var self = context.GetState<SelfState>().GetValue();
if (self == null || !EntitySystem.Get<ActionBlockerSystem>().CanMove(self))
if (self == null || !EntitySystem.Get<ActionBlockerSystem>().CanMove(self.Uid))
{
return 0.0f;
}

View File

@@ -29,7 +29,7 @@ namespace Content.Server.Climbing
private void AddClimbVerb(EntityUid uid, ClimbableComponent component, GetAlternativeVerbsEvent args)
{
if (!args.CanAccess || !args.CanInteract || !_actionBlockerSystem.CanMove(args.User))
if (!args.CanAccess || !args.CanInteract || !_actionBlockerSystem.CanMove(args.User.Uid))
return;
// Check that the user climb.

View File

@@ -98,7 +98,7 @@ namespace Content.Server.Disposal.Unit.EntitySystems
if (!args.CanAccess ||
!args.CanInteract ||
component.ContainedEntities.Contains(args.User) ||
!_actionBlockerSystem.CanMove(args.User))
!_actionBlockerSystem.CanMove(args.User.Uid))
return;
// Add verb to climb inside of the unit,

View File

@@ -60,7 +60,7 @@ namespace Content.Server.Medical
// Self-insert verb
if (!component.IsOccupied &&
component.CanInsert(args.User) &&
_actionBlockerSystem.CanMove(args.User))
_actionBlockerSystem.CanMove(args.User.Uid))
{
Verb verb = new();
verb.Act = () => component.InsertBody(args.User);

View File

@@ -21,17 +21,12 @@ namespace Content.Shared.ActionBlocker
// TODO: Make the EntityUid the main overload for all these methods.
// TODO: Move each of these to their relevant EntitySystems?
public bool CanMove(IEntity entity)
{
var ev = new MovementAttemptEvent(entity);
RaiseLocalEvent(entity.Uid, ev);
return !ev.Cancelled;
}
public bool CanMove(EntityUid uid)
{
return CanMove(EntityManager.GetEntity(uid));
var ev = new MovementAttemptEvent(uid);
RaiseLocalEvent(uid, ev);
return !ev.Cancelled;
}
public bool CanInteract(IEntity entity)

View File

@@ -4,11 +4,11 @@ namespace Content.Shared.Movement
{
public class MovementAttemptEvent : CancellableEntityEventArgs
{
public MovementAttemptEvent(IEntity entity)
public MovementAttemptEvent(EntityUid uid)
{
Entity = entity;
Uid = uid;
}
public IEntity Entity { get; }
public EntityUid Uid { get; }
}
}

View File

@@ -163,7 +163,7 @@ namespace Content.Shared.Movement
body.Owner.HasComponent<MobStateComponent>() &&
// If we're being pulled then don't mess with our velocity.
(!body.Owner.TryGetComponent(out SharedPullableComponent? pullable) || !pullable.BeingPulled) &&
_blocker.CanMove(body.Owner);
_blocker.CanMove(body.OwnerUid);
}
/// <summary>

View File

@@ -19,8 +19,8 @@ namespace Content.Shared.Pulling.Systems
private void OnRelayMoveInput(EntityUid uid, SharedPullableComponent component, RelayMoveInputEvent args)
{
var entity = args.Session.AttachedEntity;
if (entity == null || !_blocker.CanMove(entity)) return;
var entity = args.Session.AttachedEntityUid;
if (entity == null || !_blocker.CanMove(entity.Value)) return;
_pullSystem.TryStopPull(component);
}
}