cleanup LockOnTriggerComponent (#39720)

* cleanup LockOnTriggerComponent

* comment

* indentation
This commit is contained in:
slarticodefast
2025-08-18 22:21:33 +02:00
committed by GitHub
parent fedba2425b
commit d737e39a98
2 changed files with 19 additions and 6 deletions

View File

@@ -1,13 +1,21 @@
using Content.Shared.Lock;
using Robust.Shared.GameStates;
using Robust.Shared.Serialization;
namespace Content.Shared.Trigger.Components.Effects;
/// <summary>
/// Will lock, unlock or toggle an entity with the <see cref="LockComponent"/>.
/// If TargetUser is true then they will be (un)locked instead.
/// </summary>
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class LockOnTriggerComponent : BaseXOnTriggerComponent
{
/// <summary>
/// If the trigger will lock, unlock or toggle the lock.
/// </summary>
[DataField, AutoNetworkedField]
public LockAction LockOnTrigger = LockAction.Toggle;
public LockAction LockMode = LockAction.Toggle;
}
[Serializable, NetSerializable]

View File

@@ -19,16 +19,21 @@ public sealed class LockOnTriggerSystem : EntitySystem
if (args.Key != null && !ent.Comp.KeysIn.Contains(args.Key))
return;
switch (ent.Comp.LockOnTrigger)
var target = ent.Comp.TargetUser ? args.User : ent.Owner;
if (!TryComp<LockComponent>(target, out var lockComp))
return; // prevent the Resolve in Lock/Unlock/ToggleLock from logging errors in case the user does not have the component
switch (ent.Comp.LockMode)
{
case LockAction.Lock:
_lock.Lock(ent.Owner, args.User);
_lock.Lock(target.Value, args.User, lockComp);
break;
case LockAction.Unlock:
_lock.Unlock(ent, args.User);
_lock.Unlock(target.Value, args.User, lockComp);
break;
case LockAction.Toggle:
_lock.ToggleLock(ent, args.User);
_lock.ToggleLock(target.Value, args.User, lockComp);
break;
}
}