void IncreaseAttributeLevel(
            int attributeIndex
            )
        {
            IPlayerDataManager playerDataManager = playerDataManagerAdaptor.GetPlayerDataManager();

            playerDataManager.IncreaseAttributeLevel(attributeIndex);
        }
        public void IncreaseAttributeLevel(int attributeIndex)
        {
            if (!thisPlayerDataManager.PlayerDataIsLoaded())
            {
                thisPlayerDataManager.Load();
            }

            thisPlayerDataManager.IncreaseAttributeLevel(attributeIndex);

            int       equippedBowIndex = thisPlayerDataManager.GetEquippedBowIndex();
            IBowPanel panel            = thisBowPanels[equippedBowIndex];

            IBowConfigData[] dataArray = thisPlayerDataManager.GetBowConfigDataArray();
            IBowConfigData   data      = dataArray[equippedBowIndex];
            int bowLevel = data.GetBowLevel();

            panel.SetBowLevel(bowLevel, false);

            IBowAttributeLevelUpHoldButton button = panel.GetBowAttributeLevelUpHoldButtons()[attributeIndex];

            int currency    = thisPlayerDataManager.GetCurrency();
            int newCurrency = currency - button.GetCost();

            UpdateCurrency(newCurrency);

            foreach (IBowPanel bowPanel in thisBowPanels)
            {
                IBowConfigData configData = dataArray[bowPanel.GetIndex()];
                UpdateAttributePanel(
                    bowPanel,
                    configData
                    );
            }
            UpdateUnlockButtons();
            thisPlayerDataManager.Save();
        }