Follower fixes (#15348)

This commit is contained in:
metalgearsloth
2023-04-23 20:01:15 +10:00
committed by GitHub
parent 06d99b4cb7
commit 7e886dc95a
5 changed files with 36 additions and 11 deletions

View File

@@ -1,4 +1,5 @@
using Content.Shared.CCVar;
using Content.Shared.Follower.Components;
using Content.Shared.Input;
using Content.Shared.Movement.Components;
using Content.Shared.Movement.Events;
@@ -51,6 +52,8 @@ namespace Content.Shared.Movement.Systems
SubscribeLocalEvent<InputMoverComponent, ComponentHandleState>(OnInputHandleState);
SubscribeLocalEvent<InputMoverComponent, EntParentChangedMessage>(OnInputParentChange);
SubscribeLocalEvent<FollowedComponent, EntParentChangedMessage>(OnFollowedParentChange);
_configManager.OnValueChanged(CCVars.CameraRotationLocked, SetCameraRotationLocked, true);
_configManager.OnValueChanged(CCVars.GameDiagonalMovement, SetDiagonalMovement, true);
}
@@ -145,6 +148,21 @@ namespace Content.Shared.Movement.Systems
return rotation;
}
private void OnFollowedParentChange(EntityUid uid, FollowedComponent component, ref EntParentChangedMessage args)
{
var moverQuery = GetEntityQuery<InputMoverComponent>();
var xformQuery = GetEntityQuery<TransformComponent>();
foreach (var foll in component.Following)
{
if (!moverQuery.TryGetComponent(foll, out var mover))
continue;
var ev = new EntParentChangedMessage(foll, null, args.OldMapId, xformQuery.GetComponent(foll));
OnInputParentChange(foll, mover, ref ev);
}
}
private void OnInputParentChange(EntityUid uid, InputMoverComponent component, ref EntParentChangedMessage args)
{
// If we change our grid / map then delay updating our LastGridAngle.