public bool IsRequirementMet(PrerequisiteReqirement requirement) { if (TownPurchases.ContainsKey(requirement.TreeId)) { if (TownPurchases[requirement.TreeId].PurchasedUpgrades.Contains(requirement.RequirementCode)) { return(true); } } return(false); }
public UpgradeStatus GetUpgradeStatus(string treeId, Hero hero, HeroUpgrade upgrade) { if (upgrade.PrerequisiteResolveLevel > hero.Resolve.Level) { return(UpgradeStatus.Locked); } if (HeroPurchases[hero.RosterId].ContainsKey(treeId)) { if (HeroPurchases[hero.RosterId][treeId].PurchasedUpgrades.Contains(upgrade.Code)) { return(UpgradeStatus.Purchased); } } else { return(UpgradeStatus.Locked); } for (int i = 0; i < upgrade.Prerequisites.Count; i++) { if (HeroPurchases[hero.RosterId].ContainsKey(upgrade.Prerequisites[i].TreeId)) { if (!HeroPurchases[hero.RosterId][upgrade.Prerequisites[i].TreeId].PurchasedUpgrades. Contains(upgrade.Prerequisites[i].RequirementCode)) { return(UpgradeStatus.Locked); } } if (TownPurchases.ContainsKey(upgrade.Prerequisites[i].TreeId)) { if (!TownPurchases[upgrade.Prerequisites[i].TreeId].PurchasedUpgrades. Contains(upgrade.Prerequisites[i].RequirementCode)) { return(UpgradeStatus.Locked); } } } return(UpgradeStatus.Available); }
public bool BuyUpgrade(string treeId, TownUpgrade upgrade, bool isFree) { if (!isFree && !CanPayPrice(upgrade.Cost)) { return(false); } if (!TownPurchases.ContainsKey(treeId)) { TownPurchases.Add(treeId, new UpgradePurchases(treeId, upgrade.Code)); } else { if (TownPurchases[treeId].PurchasedUpgrades.Contains(upgrade.Code)) { return(false); } TownPurchases[treeId].PurchasedUpgrades.Add(upgrade.Code); } if (!isFree) { RemoveCurrency(upgrade.Cost); if (upgrade.Cost.Find(cost => cost.Type != "gold" && cost.Amount > 0) != null) { EstateSceneManager.Instanse.CurrencyPanel.CurrencyDecreased("heirloom"); } } if (DarkestDungeonManager.Data.UpgradeTrees.ContainsKey(treeId)) { DarkestSoundManager.ExecuteNarration("upgrade_building", NarrationPlace.Town, DarkestDungeonManager.Data.UpgradeTrees[treeId].Tags.ToArray()); } DarkestSoundManager.PlayOneShot("event:/ui/town/buy"); return(true); }