Beispiel #1
0
 public bool IsRequirementMet(PrerequisiteReqirement requirement)
 {
     if (TownPurchases.ContainsKey(requirement.TreeId))
     {
         if (TownPurchases[requirement.TreeId].PurchasedUpgrades.Contains(requirement.RequirementCode))
         {
             return(true);
         }
     }
     return(false);
 }
Beispiel #2
0
    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);
    }
Beispiel #3
0
    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);
    }