AllConditions.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using Content.Shared.Construction;
  2. using Content.Shared.Examine;
  3. using JetBrains.Annotations;
  4. namespace Content.Server.Construction.Conditions
  5. {
  6. [UsedImplicitly]
  7. [DataDefinition]
  8. public sealed partial class AllConditions : IGraphCondition
  9. {
  10. [DataField("conditions")]
  11. public IGraphCondition[] Conditions { get; private set; } = Array.Empty<IGraphCondition>();
  12. public bool Condition(EntityUid uid, IEntityManager entityManager)
  13. {
  14. foreach (var condition in Conditions)
  15. {
  16. if (!condition.Condition(uid, entityManager))
  17. return false;
  18. }
  19. return true;
  20. }
  21. public bool DoExamine(ExaminedEvent args)
  22. {
  23. var ret = false;
  24. foreach (var condition in Conditions)
  25. {
  26. ret |= condition.DoExamine(args);
  27. }
  28. return ret;
  29. }
  30. public IEnumerable<ConstructionGuideEntry> GenerateGuideEntry()
  31. {
  32. foreach (var condition in Conditions)
  33. {
  34. foreach (var entry in condition.GenerateGuideEntry())
  35. {
  36. yield return entry;
  37. }
  38. }
  39. }
  40. }
  41. }