Triggers.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. namespace OpenVIII.Fields
  6. {
  7. public class Triggers : IEnumerable<Trigger>, IReadOnlyList<Trigger>
  8. {
  9. #region Fields
  10. private List<Trigger> triggers;
  11. #endregion Fields
  12. #region Constructors
  13. public Triggers() => this.triggers = new List<Trigger>(12);
  14. #endregion Constructors
  15. #region Properties
  16. public int Count => ((IReadOnlyList<Trigger>)triggers).Count;
  17. #endregion Properties
  18. #region Indexers
  19. public Trigger this[int index] => ((IReadOnlyList<Trigger>)triggers)[index];
  20. #endregion Indexers
  21. #region Methods
  22. public static Triggers Read(BinaryReader br)
  23. {
  24. var t = new Triggers();
  25. foreach (var i in Enumerable.Range(0, t.triggers.Capacity))
  26. t.triggers.Add(Trigger.Read(br));
  27. return t;
  28. }
  29. public IEnumerator<Trigger> GetEnumerator() => ((IEnumerable<Trigger>)triggers).GetEnumerator();
  30. IEnumerator IEnumerable.GetEnumerator() => ((IEnumerable<Trigger>)triggers).GetEnumerator();
  31. #endregion Methods
  32. }
  33. }