Example #1
0
    public void SpawnBuilding(Vector3 mousePosition)
    {
        //TODO fix preconfigured ware house
        var storage = GetComponent <IStorage>();
        var tile    = mouseManager.GetClickedTile(mousePosition);

        if (tile is null)
        {
            return;
        }

        var requiredBuildingType = _buildingManager.GetCurrentPlacementBuilding();



        var building = _buildingManager.GetBuildingOfType(requiredBuildingType);

        var moneyAvailable    = _moneyPool >= building.GeneralBuildingStats.BuildCostMoney;
        var resourceAvailable = storage.GetResourceIfAvailable(ResourceType.Plank, building.GeneralBuildingStats.BuildCostPlanks);
        var allowedTileType   = building.GeneralBuildingStats.AllowedTileTypes.Contains(tile.Type);

        if (moneyAvailable && resourceAvailable && allowedTileType)
        {
            _moneyPool -= building.GeneralBuildingStats.BuildCostMoney;
            building.ConstructOnTile(tile, storage);
            _buildingManager.AddPlacedBuilding(building);
            building.potentialFieldsList = _navigationManager.CreatePotentialFieldMapFor(building);
        }
        else
        {
            print($"Placement of building failed. allowed tile : {allowedTileType} , resources available {resourceAvailable} , money available {moneyAvailable}");
            Destroy(building.gameObject);
        }
    }