AnyConditions.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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 AnyConditions : 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 true;
  18. }
  19. return false;
  20. }
  21. public bool DoExamine(ExaminedEvent args)
  22. {
  23. args.PushMarkup(Loc.GetString("construction-examine-condition-any-conditions"));
  24. foreach (var condition in Conditions)
  25. {
  26. condition.DoExamine(args);
  27. }
  28. return true;
  29. }
  30. public IEnumerable<ConstructionGuideEntry> GenerateGuideEntry()
  31. {
  32. yield return new ConstructionGuideEntry()
  33. {
  34. Localization = "construction-guide-condition-any-conditions",
  35. };
  36. foreach (var condition in Conditions)
  37. {
  38. foreach (var entry in condition.GenerateGuideEntry())
  39. {
  40. entry.Padding += 4;
  41. yield return entry;
  42. }
  43. }
  44. }
  45. }
  46. }