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); }
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); }
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)); } }
public bool CanAfford(UpgradeEntity upgrade) { return(state.CanAfford(upgrade, resolvedMultipliers)); }
public void BuyUpgrade(UpgradeEntity upgrade) { state.TryUnlockUpgrade(upgrade, resolvedMultipliers); }
/// <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);
// *** 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);
public bool CanAfford(UpgradeEntity upgrade, ResolvedMultipliers multipliers) { return(CanAfford(ResolvedGenerator.List(upgrade.BuyCost.Resources, multipliers))); }
public void Unlock(UpgradeEntity upgrade) { otherUpgrades.Remove(upgrade); unlockedUpgrades.Add(upgrade); }