using System.Collections; namespace PkmnLib.Dynamic.ScriptHandling; public class ScriptIterator : IEnumerable { private readonly IReadOnlyList> _scripts; public ScriptIterator(IReadOnlyList> scripts) { _scripts = scripts; } private IEnumerable GetAsEnumerable() { foreach (var enumerable in _scripts) { if (enumerable is IScriptSet set) { // We can't assume that the set remains the same size, so we need to iterate through it // with a for loop. for (var j = 0; j < set.Count; j++) { var script = set.At(j); // We can ignore empty scripts. if (script.IsEmpty) continue; yield return script; } } else { foreach (var script in enumerable) { // We can ignore empty scripts. if (script.IsEmpty) continue; yield return script; } } } } /// public IEnumerator GetEnumerator() { return GetAsEnumerable().GetEnumerator(); } /// IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } }