public void Select(AbilityStat selector)
 {
     if (selector.Index < minIndex)
     {
         return;
     }
     selected = selector;
     EmulateSelect(selected);
 }
        public void EmulateSelect(AbilityStat selector)
        {
            if (selector.Index < minIndex)
            {
                return;
            }
            bool shouldBeSelected = selector != null;
            int  culmulativeCost  = 0;

            for (int i = minIndex; i < visibleSelectors; i++)
            {
                if (!selectors[i].allowed)
                {
                    shouldBeSelected = false;
                }

                if (shouldBeSelected && !selectors[i].selected)
                {
                    selectors[i].selected = true;
                    culmulativeCost      += ability[i].cost;
                }
                else if (!shouldBeSelected)
                {
                    if (selectors[i].selected)
                    {
                        culmulativeCost -= ability[i].cost;
                    }
                    selectors[i].selected = false;
                }

                //All coming should be not selected
                if (selector == selectors[i])
                {
                    shouldBeSelected = false;
                }
            }
            if (characterCreation)
            {
                CharacterCreation.NewTransaction(culmulativeCost);
            }
        }
        void Start()
        {
            selectors = new AbilityStat[ability.Length];
            var foundSelectors = GetComponentsInChildren <AbilityStat>();

            visibleSelectors = Mathf.Min(selectors.Length, foundSelectors.Length);

            for (int i = 0, l = foundSelectors.Length; i < l; i++)
            {
                if (i < visibleSelectors)
                {
                    selectors[i] = foundSelectors[i];
                    selectors[i].SetIndex(i);
                    selectors[i].allowed = false;
                }
                else
                {
                    foundSelectors[i].gameObject.SetActive(false);
                }
            }

            for (int i = 0; i < visibleSelectors; i++)
            {
                if (this.selectors[i].selected)
                {
                    selected = this.selectors[i];
                }
            }

            if (characterCreation)
            {
                OnNewPointsAvailable(CharacterCreation.Points);
            }

            Select(selectors[0]);
        }