using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace PkmnFoundations.Structures { public abstract class StatValuesBase where T : struct { protected StatValuesBase(IEnumerable s) { // fail without enumerating if possible if (s is IList && ((IList)s).Count != 6) throw new ArgumentException("Collection must have exactly 6 elements.", "s"); var arr = s.ToArray(); if (arr.Length != 6) throw new ArgumentException("Collection must have exactly 6 elements.", "s"); Stats = arr; } protected StatValuesBase(T s0, T s1, T s2, T s3, T s4, T s5) : this(new T[6] { s0, s1, s2, s3, s4, s5 }) { } protected T[] Stats { get; private set; } public T[] ToArray() { return Stats.ToArray(); } } }