コード例 #1
0
 public bool Build(TerrainUpgradeEntity terrainUpgrade, TileContainer tileContainer)
 {
     if (CanUpgradeTerrainOnTile(tileContainer, terrainUpgrade))
     {
         return(state.TryBuild(terrainUpgrade, resolvedMultipliers, tileContainer));
     }
     return(false);
 }
コード例 #2
0
 public void Configure(TerrainUpgradeEntity terrainUpgrade)
 {
     Configure(
         terrainUpgrade.Name,
         terrainUpgrade.BuildCost,
         GameManager.Instance.CanAfford(terrainUpgrade),
         GameManager.Instance.AvailableTilesForTerrainUpgrade(terrainUpgrade),
         () => UIManager.Instance.State = UIState.TerrainUpgradeSelected(terrainUpgrade)
         );
 }
コード例 #3
0
    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);
    }
コード例 #4
0
 public int AvailableTilesForTerrainUpgrade(TerrainUpgradeEntity terrainUpgrade)
 {
     return(new List <TileContainer>(state.world.Values).FindAll(tile => CanUpgradeTerrainOnTile(tile, terrainUpgrade)).Count);
 }
コード例 #5
0
 public bool CanAfford(TerrainUpgradeEntity terrainUpgrade)
 {
     return(state.CanAfford(terrainUpgrade, resolvedMultipliers));
 }
コード例 #6
0
 public bool CanUpgradeTerrainOnTile(TileContainer tile, TerrainUpgradeEntity entity)
 {
     return(tile.specialEntity == null && tile.building == null && entity.Target.Entity == tile.terrain);
 }
コード例 #7
0
 public static UIState TerrainUpgradeSelected(TerrainUpgradeEntity terrainUpgradeEntity)
 {
     return(new UIState(Value.TerrainUpgradeSelected, null, terrainUpgradeEntity));
 }
コード例 #8
0
 private UIState(Value v, BuildingEntity buildingEntity, TerrainUpgradeEntity terrainUpgradeEntity)
 {
     state = v;
     this.buildingEntity       = buildingEntity;
     this.terrainUpgradeEntity = terrainUpgradeEntity;
 }
コード例 #9
0
 public bool CanAfford(TerrainUpgradeEntity terrainUpgrade, ResolvedMultipliers multipliers)
 {
     return(CanAfford(ResolvedGenerator.List(terrainUpgrade.BuildCost.Resources, multipliers)));
 }
コード例 #10
0
 public void Unlock(TerrainUpgradeEntity upgrade)
 {
     otherTerrainUpgrades.Remove(upgrade);
     unlockedTerrainUpgrades.Add(upgrade);
 }