public bool TestAbility(Ability.AbilitySettings ability)
    {
        int addIndex = menuIndex.Get();

        if (numOfSlotsAvailable == 2)
        {
            addIndex = menuIndex.IndexMovedBy(-1);
        }

        int i;

        for (i = 0; i < numActiveAbilities; i++)
        {
            //Debug.Log(abilities[i].json.id + " --> " + ability.json.id);
            if (abilities[i].description.id == ability.description.id)
            {
                if (i == addIndex)
                {
                    return(true);
                }
            }
        }

        return(false);
    }
 public void DeselectAbility(int index)
 {
     abilities[index]         = new Ability.AbilitySettings();
     abilities[index].texture = nullAbilityTexture;
     if (index == menuIndex.Get())
     {
         selectedImage = new BlinkTexture(nullAbilityTexture, blinkControl);
     }
 }
    public bool IsSelectable(Ability.AbilitySettings ability)
    {
        if (ability.saveInfo.isSelected)
        {
            return(false);
        }


        if (abilities.Count == numberOfSlots)
        {
            return(false);
        }

        return(true);
    }
    public bool ChangeSelectedAbility(Ability.AbilitySettings ability)
    {
        //Debug.Log("Eq length: " + abilities.Length);
        int i;

        for (i = 0; i < numActiveAbilities; i++)
        {
            //Debug.Log(abilities[i].json.id + " --> " + ability.json.id);
            if (abilities[i].description.id == ability.description.id)
            {
                break;
            }
        }

        int addIndex = menuIndex.Get();

        if (numOfSlotsAvailable == 2)
        {
            addIndex = menuIndex.IndexMovedBy(-1);
        }

        if (i < numActiveAbilities)
        {
            //Debug.Log("Found at: " + i);
            if (i == addIndex)
            {
                abilitiyMenu.abilities[abilities[addIndex].description.id].saveInfo.isSelected = false;
                DeselectAbility(i);
                return(false);
            }
            else
            {
                abilities[i] = abilities[addIndex];
            }
        }
        else
        {
            abilitiyMenu.abilities[abilities[addIndex].description.id].saveInfo.isSelected = false;
        }

        abilities[addIndex] = ability;
        abilitiyMenu.abilities[ability.description.id].saveInfo.isSelected     = true;
        abilitiyMenu.abilities[ability.description.id].saveInfo.selectLocation = (Options)addIndex;
        selectedImage = new BlinkTexture(ability.texture, blinkControl);
        return(true);
    }
    public bool SelectAbility(Ability.AbilitySettings ability)
    {
        if ((abilities.Count == numberOfSlots) && (!ability.saveInfo.isSelected))
        {
            return(false);
        }

        int i;

        for (i = 0; i < abilities.Count; i++)
        {
            if (abilities[i].description.id == ability.description.id)
            {
                break;
            }
        }

        if (i < abilities.Count)
        {
            abilities.Remove(abilities[i]);
            abilitiyMenu.abilities[ability.description.id].saveInfo.isSelected = false;
            if (abilities.Count != 0)
            {
                menuIndex.Set(0);
                selectedImage = new BlinkTexture(abilities[0].texture, blinkControl);
            }
            return(true);
        }

        abilitiyMenu.abilities[ability.description.id].saveInfo.isSelected = true;


        if (abilities.Count >= numberOfSlots)
        {
            return(false);
        }

        abilities.Add(ability);
        if (abilities.Count == 1)
        {
            selectedImage = new BlinkTexture(ability.texture, blinkControl);
        }
        return(true);
    }
    /// <summary>
    /// Function to initialize some internal properties. Should be called in Start()
    /// </summary>
    public void Init()
    {
        base.Init(new CircularIndex(numActiveAbilities));

        elementBorder.SetParent(menuArea);
        elementContent.SetParent(menuArea);

        gameManager  = GameManager.GetInstance();
        uiManager    = UIManager.GetInstance();
        abilitiyMenu = uiManager.ability;


        abilities = new Ability.AbilitySettings[numActiveAbilities];
        for (int i = 0; i < numActiveAbilities; i++)
        {
            abilities[i]         = new Ability.AbilitySettings();
            abilities[i].texture = nullAbilityTexture;
        }

        foreach (var pair in abilitiyMenu.abilities)
        {
            if (pair.Value.isActivatable)
            {
                if ((pair.Value.saveInfo.obtained) && (pair.Value.saveInfo.isSelected))
                {
                    menuIndex.Set((int)pair.Value.saveInfo.selectLocation);
                    ChangeSelectedAbility(pair.Value);
                }
            }
        }
        menuIndex.Set(0);

        selectedImage = new BlinkTexture(abilities[0].texture, blinkControl);
        if (adjustToSquare)
        {
            menuArea.AdjustToSquare();
        }
    }
 public void DeselectAbility(Ability.AbilitySettings ability)
 {
     abilities.Remove(ability);
 }