public override void Configure()
        {
            base.Configure();

            Funds.Configure();
            Items = new List <ItemData>();

            PlayFab.Player.Inventory.OnResponse += OnPlayFabInventoryRetrieved;
        }
        void UpdateState()
        {
            var data     = Player.Units.Upgrades.Find(Template).Find(Type);
            var template = Template.Upgrades.Template.Find(Type);

            var isFull = data.Value >= ItemsUpgradesCore.Max;

            instruction.gameObject.SetActive(isFull);
            //buy.gameObject.SetActive(!isFull);

            if (isFull)
            {
                buy.interactable = false;

                price.text = "---------";

                requiremnets.Hide();

                instruction.text = data.Value + "/" + ItemsUpgradesCore.Max + " " + Core.Localization.Phrases.Get("Full");
            }
            else
            {
                var cost         = new Currency(ItemsUpgradesCore.Currency, (int)template.Cost.Calculate(data.Value + 1));
                var requirements = template.Requirements[data.Value];

                price.text = cost.ToString();

                buy.interactable = Funds.CanAfford(cost) && Player.Inventory.CompliesWith(requirements);

                requiremnets.Set(requirements);
            }

            progression.Value = data.Value;

            GrayscaleController.Off = buy.interactable;
        }