1
0

ConditionalAction.cs 1.0 KB

1234567891011121314151617181920212223242526272829
  1. using Content.Shared.Construction;
  2. using JetBrains.Annotations;
  3. namespace Content.Server.Construction.Completions
  4. {
  5. [UsedImplicitly]
  6. [DataDefinition]
  7. public sealed partial class ConditionalAction : IGraphAction
  8. {
  9. [DataField("passUser")] public bool PassUser { get; private set; }
  10. [DataField("condition", required:true)] public IGraphCondition? Condition { get; private set; }
  11. [DataField("action", required:true)] public IGraphAction? Action { get; private set; }
  12. [DataField("else")] public IGraphAction? Else { get; private set; }
  13. public void PerformAction(EntityUid uid, EntityUid? userUid, IEntityManager entityManager)
  14. {
  15. if (Condition == null || Action == null)
  16. return;
  17. if (Condition.Condition(PassUser && userUid != null ? userUid.Value : uid, entityManager))
  18. Action.PerformAction(uid, userUid, entityManager);
  19. else
  20. Else?.PerformAction(uid, userUid, entityManager);
  21. }
  22. }
  23. }