示例#1
0
        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);
        }
示例#2
0
 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);
         }
     }
 }