Пример #1
0
 private void UpdateInteractableStateClimateBuilding()
 {
     if (button != null)
     {
         button.interactable = ClimateBuilding.IsBuildingBuildable(id);
     }
 }
        protected override void Build(Tile[,] tiles)
        {
            ClimateBuilding building = Instantiate(SelectedBuilding, Tile.GetCentrePoint(tiles), SelectedBuilding.transform.rotation, buildingsParent);

            AverageOutTerrain(tiles);

            foreach (Tile tile in tiles)
            {
                if (tile.Occupant != null)
                {
                    Building.OnDemolishInitiated(tile.Occupant);
                }

                tile.SetOccupant(building);
                TerrainBlock block = City.Instance.Terrain.GetTerrainBlock(tile.Coordinates);
                block.SetExtraHeight(SelectedBuildingData.Level);
            }

            Instantiate(placeEffectPrefab).Setup(building);

            PlayerResources.Instance.RemoveMoney(SelectedBuildingData.Moneycost);
            for (int i = 0; i < SelectedBuildingData.Resourcecost.Length; i++)
            {
                PlayerResources.Instance.RemoveResource(SelectedBuildingData.Resourcecost[i], SelectedBuildingData.Resourcecostamount[i]);
            }

            building.enabled = true;
            building.Init(SelectedBuildingData, tiles);
            building.AddOutline(outlinePrefab);

            OnBuildingPlaced(building, SelectedBuildingData);

            buildingGhost.Setup(SelectedBuilding, SelectedBuildingData.ID);
        }
Пример #3
0
        private void Activate(ClimateBuilding building)
        {
            if (building == null || building == selectedBuilding)
            {
                gameObject.SetActive(false);
                selectedBuilding = null;
                return;
            }

            transform.position = building.transform.position + posOffset;
            gameObject.SetActive(true);
            selectedBuilding = building;
            FillValues();
        }
Пример #4
0
        public void Init(int id, BuildingPrefabs prefab, ClimateBuildingsData data, bool isCorrectClimate, BuildModeBase buildMode)
        {
            this.id               = id;
            this.data             = data;
            this.isCorrectClimate = isCorrectClimate;
            img.sprite            = prefab.GetBuildingSprite(id);
            button.onClick.AddListener(() => buildMode.SelectBuilding(id));
            button.interactable = ClimateBuilding.IsBuildingBuildable(id);
            PlayerResources.OnResourceChanged += (x, y) => UpdateInteractableStateClimateBuilding();
            PlayerResources.OnMoneyChanged    += (x) => UpdateInteractableStateClimateBuilding();
            Construction.BuildModeClimateBuildings.OnBuildingPlaced += (x, y) => UpdateInteractableStateClimateBuilding();

            if (!isCorrectClimate)
            {
                button.interactable = false;
                img.color           = incorrectClimateColor;
            }
        }
Пример #5
0
 private void OnDisable()
 {
     selectedBuilding = null;
 }
 protected override void OnMouseClick()
 {
     if (tilesHoveringOver == null || EventSystem.current.IsPointerOverGameObject() || !ClimateBuilding.IsBuildingBuildable(SelectedBuildingData.ID))
     {
         return;
     }
     if (CanBePlacedAtTiles(tilesHoveringOver))
     {
         Build(tilesHoveringOver);
     }
 }