public bool Build(TerrainUpgradeEntity terrainUpgrade, TileContainer tileContainer) { if (CanUpgradeTerrainOnTile(tileContainer, terrainUpgrade)) { return(state.TryBuild(terrainUpgrade, resolvedMultipliers, tileContainer)); } return(false); }
public void Configure(TerrainUpgradeEntity terrainUpgrade) { Configure( terrainUpgrade.Name, terrainUpgrade.BuildCost, GameManager.Instance.CanAfford(terrainUpgrade), GameManager.Instance.AvailableTilesForTerrainUpgrade(terrainUpgrade), () => UIManager.Instance.State = UIState.TerrainUpgradeSelected(terrainUpgrade) ); }
public bool TryBuild(TerrainUpgradeEntity terrainUpgrade, ResolvedMultipliers multipliers, TileContainer tileContainer) { List <ResolvedGenerator> cost = ResolvedGenerator.List(terrainUpgrade.BuildCost.Resources, multipliers); if (!CanAfford(cost)) { return(false); } Buy(cost); tileContainer.terrain = terrainUpgrade.Replacement.Entity; tileContainer.growable = terrainUpgrade.Replacement.Entity.Growable != null ? new GrowableIncarnation(terrainUpgrade.Replacement.Entity.Growable.Entity) : null; return(true); }
public int AvailableTilesForTerrainUpgrade(TerrainUpgradeEntity terrainUpgrade) { return(new List <TileContainer>(state.world.Values).FindAll(tile => CanUpgradeTerrainOnTile(tile, terrainUpgrade)).Count); }
public bool CanAfford(TerrainUpgradeEntity terrainUpgrade) { return(state.CanAfford(terrainUpgrade, resolvedMultipliers)); }
public bool CanUpgradeTerrainOnTile(TileContainer tile, TerrainUpgradeEntity entity) { return(tile.specialEntity == null && tile.building == null && entity.Target.Entity == tile.terrain); }
public static UIState TerrainUpgradeSelected(TerrainUpgradeEntity terrainUpgradeEntity) { return(new UIState(Value.TerrainUpgradeSelected, null, terrainUpgradeEntity)); }
private UIState(Value v, BuildingEntity buildingEntity, TerrainUpgradeEntity terrainUpgradeEntity) { state = v; this.buildingEntity = buildingEntity; this.terrainUpgradeEntity = terrainUpgradeEntity; }
public bool CanAfford(TerrainUpgradeEntity terrainUpgrade, ResolvedMultipliers multipliers) { return(CanAfford(ResolvedGenerator.List(terrainUpgrade.BuildCost.Resources, multipliers))); }
public void Unlock(TerrainUpgradeEntity upgrade) { otherTerrainUpgrades.Remove(upgrade); unlockedTerrainUpgrades.Add(upgrade); }