public int[] Create(AttributeSpread attributeSpread, AttributeArray[] metaAttributeArray, int points)
        {
            Func<CreatedAttribute, bool> pred = attribute => false;
            switch (attributeSpread)
            {
                case AttributeSpread.Even:
                    pred = attribute => true;
                    break;
                case AttributeSpread.FocusMental:
                    pred = attribute => attribute.CurrentRating == attribute.MinRating || !attribute.IsPhysical;
                    break;
                case AttributeSpread.FocusPhysical:
                    pred = attribute => attribute.CurrentRating == attribute.MinRating || attribute.IsPhysical;
                    break;
                case AttributeSpread.DumpStatPhysical:
                    pred = attribute => !attribute.IsPhysical;
                    break;
                case AttributeSpread.DumpStatMental:
                    pred = attribute => attribute.IsPhysical;
                    break;
            }

            return AllocatePoints(metaAttributeArray, points, pred)
                .OrderBy(ca => ca.Attribute)
                .Select(ca => ca.CurrentRating)
                .ToArray();
        }
 public void SetAttributeArray(AttributeArray[] metaAttributeLimits)
 {
     _metaAttributeArray = metaAttributeLimits;
     ResetFitness();
 }