void MaxClickHandler(UpgradeMenuUI menuUI) { BaseUpgrade upgrade = GetUpgradeByUI(menuUI); int count = upgrade.GetPossibleUpgradeCount(coins.GetCoins(), out double cost); IncreaseUpgradeLevel(upgrade, menuUI, count); upgrade.ApplyUpgrade(count); config.SpentCoins(cost); }
void SingleClickHandler(UpgradeMenuUI menuUI) { BaseUpgrade upgrade = GetUpgradeByUI(menuUI); double current_cost = upgrade.GetPrice(); IncreaseUpgradeLevel(upgrade, menuUI, 1); upgrade.ApplyUpgrade(); config.SpentCoins(current_cost); }
void IncreaseUpgradeLevel(BaseUpgrade upgrade, UpgradeMenuUI menuUI, int value) { bool maxReached = upgrade.IncreaseLevel(value); if (maxReached) { ChangeUpgradeButtonsState(menuUI, false); upgrades.Remove(upgrade); } menuUI.UpdateLevelText(upgrade.GetLevel(), upgrade.GetMaxLevel()); menuUI.UpdateProgressBar(upgrade.GetLevel(), upgrade.GetMaxLevel()); }
void InitializeUpgrades() { all_upgradable = GetComponents <BaseUpgrade>(); foreach (BaseUpgrade upgrade in all_upgradable) { GameObject menu = Instantiate(menuPrefab); menu.transform.SetParent(MenuContainer); menu.transform.localScale = Vector3.one; UpgradeMenuUI menuUI = menu.GetComponent <UpgradeMenuUI>(); upgrades.Add(upgrade, menuUI); int upgradesCount = upgrade.GetPossibleUpgradeCount(coins.GetCoins(), out double cost); menuUI.SetInfo(upgrade.GetLevel(), upgrade.GetMaxLevel(), upgrade.GetName(), upgrade.GetDescription(), upgrade.GetPrice(), upgradesCount, cost, upgrade.GetIconSprite()); menuUI.OnSingleUpgradeClicked += SingleClickHandler; menuUI.OnMaxUpgradeClicked += MaxClickHandler; menuUI.SetBlockScreenState(upgrade.IsLocked()); upgrade.OnLockIsOff += menuUI.SetBlockScreenState; //Debug.Log($"{menuUI.name} is set to {!upgrade.IsLocked()}"); } }
BaseUpgrade GetUpgradeByUI(UpgradeMenuUI menuUI) { return(upgrades.FirstOrDefault(x => x.Value == menuUI).Key); }
void ChangeUpgradeButtonsState(UpgradeMenuUI menuUI, bool state) { menuUI.MaxUpgradeButtonState(state); menuUI.SingleUpgradeButtonState(state); }