void setUpBuyButton(GameShopCell cell, int row)
    {
        GameFairyModel cellData = fairiesDataSource.dataArray[row];

        cell.fairyButton.onClick.RemoveAllListeners();
        cell.fairyButton.onClick.AddListener(() => {
            if (_playerData.playerFairies.Contains(row) == false)
            {
                if (_playerData.playerScore >= cellData.fairyPrice)
                {
                    _playerData.playerFairies.Add(row);
                    _playerData.playerScore -= cellData.fairyPrice;
                    uncheckPreviousFairy();
                    selectFairyOnIndexWithCell(row, cell);
                    _playerData.savePlayerData();
                    cell.price.gameObject.SetActive(false);

                    GameAnaliticsController analiticsController = GameObject.FindObjectOfType <GameAnaliticsController>();
                    analiticsController.buyFairyPressed();
                }
                else
                {
                    inAppPurchasesPopUp.SetActive(true);
                }
            }
            else
            {
                uncheckPreviousFairy();
                selectFairyOnIndexWithCell(row, cell);
            }
        });
    }
    void setUpDescription(GameShopCell cell, int row)
    {
        GameFairyModel cellData = fairiesDataSource.dataArray[row];

        cell.descriptionDamageTime.text   = cellData.fairyCreateSlowBonusTime.ToString();
        cell.descriptionSlowdownTime.text = cellData.fairyCreateDamageBonusTime.ToString();
    }
    void setUpPrice(GameShopCell cell, int row)
    {
        GameFairyModel cellData = fairiesDataSource.dataArray[row];

        if (_playerData.playerFairies.Contains(row) == true)
        {
            cell.price.gameObject.SetActive(false);
        }
        else
        {
            cell.price.gameObject.SetActive(true);
            cell.price.text = cellData.fairyPrice.ToString();
        }
    }
    void Start()
    {
        _playerData = ServicesLocator.getServiceForKey(typeof(GamePlayerDataController).Name) as GamePlayerDataController;
        lineRechargeIndicator.fillAmount = 0f;

        if (_playerData.selectedFairyIndex >= 0)
        {
            _playerData.damageBonusCount--;
            GameFairyModel fairyModel = gameBalanceDataSource.dataArray[_playerData.selectedFairyIndex];
            _bonusRechargeTime = fairyModel.fairyCreateSlowBonusTime;
        }

        _currentBonusTime = _bonusRechargeTime;
    }
    void Update()
    {
        float fillAmount = ((float)_bonusRechargeTime - _currentBonusTime) / (float)_bonusRechargeTime;

        lineRechargeIndicator.fillAmount = 1 - fillAmount;

        if (gameLogicController.stopGame == false && _playerData.selectedFairyIndex >= 0)
        {
            _currentBonusTime++;
            if (_currentBonusTime > _bonusRechargeTime)
            {
                _playerData.damageBonusCount++;
                _currentBonusTime = 0;
                GameFairyModel fairyModel = gameBalanceDataSource.dataArray[_playerData.selectedFairyIndex];
                _bonusRechargeTime = fairyModel.fairyCreateSlowBonusTime;
            }
        }
    }
    void setUpFairyImage(GameShopCell aCell, int aIndex)
    {
        GameFairyModel cellData = fairiesDataSource.dataArray[aIndex];

        aCell.fairyImage.sprite = Sprite.Create(cellData.fairyTexture, new Rect(0, 0, cellData.fairyTexture.width, cellData.fairyTexture.height), new Vector2(0.5f, 0.5f));
    }