EnemyCoordinates.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. namespace OpenVIII.Battle
  6. {
  7. public class EnemyCoordinates : IReadOnlyList<Coordinate>
  8. {
  9. #region Fields
  10. private readonly IReadOnlyList<Coordinate> _enemies;
  11. #endregion Fields
  12. #region Constructors
  13. public EnemyCoordinates(IReadOnlyList<Coordinate> @in) => _enemies = @in;
  14. #endregion Constructors
  15. #region Methods
  16. public static implicit operator EnemyCoordinates(List<Coordinate> @in) => new EnemyCoordinates(@in);
  17. public static EnemyCoordinates Read(BinaryReader br)
  18. {
  19. return new EnemyCoordinates(Enumerable.Range(0, 8).Select(_ => Coordinate.Read(br)).ToList().AsReadOnly());
  20. }
  21. #endregion Methods
  22. public IEnumerator<Coordinate> GetEnumerator()
  23. {
  24. return _enemies.GetEnumerator();
  25. }
  26. IEnumerator IEnumerable.GetEnumerator()
  27. {
  28. return ((IEnumerable) _enemies).GetEnumerator();
  29. }
  30. public int Count => _enemies.Count;
  31. public Coordinate this[int index] => _enemies[index];
  32. }
  33. }