ActionBlocker CanMove uses EntityUid exclusively
This commit is contained in:
@@ -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));
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user