public bool BuyUpgrade(string key) { key = key.ToLower(); if (string.IsNullOrEmpty(key)) { return(false); } key = key.ToLower(); if (!PossibleUpgrades.ContainsKey(key)) { return(false); } var upgrade = PossibleUpgrades[key]; if (!GamePlayScreen.MoneyManager.CanBuy(upgrade.Price)) { return(false); } if (SetProperties.ContainsKey(upgrade.Type.ToLower())) { SetProperties[upgrade.Type.ToLower()](upgrade.Value); GamePlayScreen.MoneyManager.Buy(upgrade.Price); BoughtUpgrades.Add(key); Price += upgrade.Price; } else { //LogFramework.AddLog(string.Format("Tower {0} kennt Property {1} nicht!", TowerName, upgrade.Type.ToLower()), false, LogType.Error); return(false); } ReadPossibleUpgrades(); GamePlayScreen.GuiManager.UpdateTowerWindow(); GamePlayScreen.TowerManager.UpdateRangeMarkerSize(); return(true); }
private void ReadPossibleUpgrades() { PossibleUpgrades.Clear(); foreach (var upgrade in AvailableUpgrades) { bool buyable = !BoughtUpgrades.Contains(upgrade.Key.ToLower()); foreach (var requirement in upgrade.Value.Requirements) { if (!BoughtUpgrades.Contains(requirement)) { buyable = false; } } if (buyable) { PossibleUpgrades.Add(upgrade.Value.Key, upgrade.Value); } } }