private void SellBuilding() { Cell clickedCell = grid.GetCell(GetMouseWorldPosition()); if (clickedCell == null) { return; } Building clickedBuilding = clickedCell.GetBuilding(); if (clickedBuilding != null) { //Selling a road if (clickedBuilding.Type.type == BuildingTypeSO.Type.Road) { int posX, posZ; posX = clickedCell.GetX(); posZ = clickedCell.GetY(); List <Vector2Int> destroyedCoordinates = clickedBuilding.GetGridPositionList(); foreach (Vector2Int gridPos in destroyedCoordinates) { grid.GetCell(gridPos.x, gridPos.y).ClearBuilding(); } placedBuildings.Remove(clickedBuilding); GameManager.instance.SellBuilding(clickedBuilding); clickedBuilding.Destroy(); foreach (Cell cell in grid.GetCell(posX, posZ).Neighbours) { if (cell.GetBuilding() != null && cell.GetBuilding().Type.type == BuildingTypeSO.Type.Road) { UpdateRoad(cell.GetX(), cell.GetY()); } } } // Selling an attraction else if (clickedBuilding.Type.type == BuildingTypeSO.Type.Attraction) { Attraction clicked = (Attraction)clickedBuilding; if (clicked.Broke) { EventManager.instance.BrokeBuildingSold(); lastX = -1; lastZ = -1; } else { clicked.SendOutVisitors(); List <Vector2Int> destroyedCoordinates = clickedBuilding.GetGridPositionList(); foreach (Vector2Int gridPos in destroyedCoordinates) { grid.GetCell(gridPos.x, gridPos.y).ClearBuilding(); } placedBuildings.Remove(clickedBuilding); placedAttractions.Remove((Attraction)clickedBuilding); GameManager.instance.SellBuilding(clickedBuilding); clickedBuilding.Destroy(); } } else { List <Vector2Int> destroyedCoordinates = clickedBuilding.GetGridPositionList(); foreach (Vector2Int gridPos in destroyedCoordinates) { grid.GetCell(gridPos.x, gridPos.y).ClearBuilding(); } placedBuildings.Remove(clickedBuilding); GameManager.instance.SellBuilding(clickedBuilding); clickedBuilding.Destroy(); } } }