示例#1
0
        public void SpawnSpecificItem <T>(PlayerUpgradesComponent playerUpgrades, Texture2D texture, T upgrade, Vector2 pos) where T : PlayerUpgrade
        {
            if (playerUpgrades.ContainsUpgrade <T>())
            {
                return;
            }
            UpgradeEntity e = new UpgradeEntity(texture, upgrade);

            e.transform.position = pos;
            addEntity(e);
        }
示例#2
0
    public bool TryUnlockUpgrade(UpgradeEntity upgrade, ResolvedMultipliers multipliers)
    {
        List <ResolvedGenerator> cost = ResolvedGenerator.List(upgrade.BuyCost.Resources, multipliers);

        if (!CanAfford(cost))
        {
            return(false);
        }
        Buy(cost);

        unlockedUpgrades.Remove(upgrade);
        ownedUpgrades.Add(upgrade);
        return(true);
    }
示例#3
0
    void OnGUI()
    {
        List <UpgradeEntity> upgrades = GameManager.Instance.AvailableUpgrades;

        listBuilder.UpdateNumberOfEntries(upgrades.Count);
        for (int i = 0; i < upgrades.Count; i++)
        {
            GameObject    entry     = listBuilder.Entries[i];
            UpgradeEntity upgrade   = upgrades[i];
            Text          textField = entry.GetComponentInChildren <Text>();
            Button        button    = entry.GetComponentInChildren <Button>();

            string costAsString = string.Join(", ", upgrade.BuyCost.Resources.Select(r => $"{r.Amount} {r.Resource.Entity.Name}"));
            textField.text = $"{upgrade.Name}: {costAsString}";

            bool canBuy = GameManager.Instance.CanAfford(upgrade);
            button.GetComponent <BuyButton>().SetEnabled(canBuy);

            button.onClick.RemoveAllListeners();
            button.onClick.AddListener(() => GameManager.Instance.BuyUpgrade(upgrade));
        }
    }
示例#4
0
 public bool CanAfford(UpgradeEntity upgrade)
 {
     return(state.CanAfford(upgrade, resolvedMultipliers));
 }
示例#5
0
 public void BuyUpgrade(UpgradeEntity upgrade)
 {
     state.TryUnlockUpgrade(upgrade, resolvedMultipliers);
 }
示例#6
0
 /// <summary>
 /// Create upgrade from an address; Blockchain name is explicit
 /// </summary>
 /// <param name="client"></param>
 /// <param name="blockchainName"></param>
 /// <param name="fromAddress"></param>
 /// <param name="upgradeEntity"></param>
 /// <returns></returns>
 public static Task <CliResponse <string> > CreateUpgradeFrom(this IMultiChainCliWallet client, string blockchainName, string fromAddress, UpgradeEntity upgradeEntity) =>
 client.CreateFromAsync(blockchainName, fromAddress, upgradeEntity.EntityType, upgradeEntity.Name, upgradeEntity.Open, upgradeEntity.CustomFields);
示例#7
0
        // *** Create Upgrade extension methods

        /// <summary>
        /// Create upgrade; Blockchain name is inferred
        /// </summary>
        /// <param name="client"></param>
        /// <param name="upgradeEntity"></param>
        /// <returns></returns>
        public static Task <CliResponse <string> > CreateUpgrade(this IMultiChainCliWallet client, UpgradeEntity upgradeEntity) =>
        client.CreateAsync(upgradeEntity.EntityType, upgradeEntity.Name, upgradeEntity.Open, upgradeEntity.CustomFields);
示例#8
0
 public bool CanAfford(UpgradeEntity upgrade, ResolvedMultipliers multipliers)
 {
     return(CanAfford(ResolvedGenerator.List(upgrade.BuyCost.Resources, multipliers)));
 }
示例#9
0
 public void Unlock(UpgradeEntity upgrade)
 {
     otherUpgrades.Remove(upgrade);
     unlockedUpgrades.Add(upgrade);
 }