half-earth/half-earth/scripts/ReadOnlyResourceList.cs
ktyl 58c2d9a451 heat ()
Reviewed-on: 
2022-12-13 01:54:54 +01:00

33 lines
876 B
C#

using Godot;
using System.Collections;
using System.Collections.Generic;
public abstract class ReadOnlyResourceList<T> : Resource, IReadOnlyList<T> where T : Resource
{
[Export]
private List<Resource> _resources = new List<Resource>();
private List<T> Collection
{
get
{
if (_collection != null)
return _collection;
_collection = new List<T>();
foreach (var resource in _resources)
{
_collection.Add((T)resource);
}
return _collection;
}
}
private List<T> _collection = null;
public T this[int index] => Collection[index];
public int Count => Collection.Count;
public IEnumerator<T> GetEnumerator() => Collection.GetEnumerator();
IEnumerator IEnumerable.GetEnumerator() => Collection.GetEnumerator();
}