예제 #1
0
    private void AddTunnel(Vector2Int wall, Vector2Int offset, int length, int groundTile, ref int[,] mapAux)
    {
        Vector2Int start = wall + length * offset;
        Vector2Int end   = wall;

        GeneratorUtils.DrawCorridor(start, end, groundTile, ref mapAux);
    }
예제 #2
0
    public void ConnectRooms(BSPRect leftRoom, BSPRect rightRoom, ref int[,] mapAux)
    {
        int column1 = URandom.Range(leftRoom.Col, leftRoom.Col + leftRoom.Width);
        int row1    = URandom.Range(leftRoom.Row, leftRoom.Row + leftRoom.Height);

        int column2 = URandom.Range(rightRoom.Col, rightRoom.Col + rightRoom.Width);
        int row2    = URandom.Range(rightRoom.Row, rightRoom.Row + rightRoom.Height);

        int deltaRows = row2 - row1;
        int deltaCols = column2 - column1;


        if (deltaRows < 0) // down
        {
            if (deltaCols != 0)
            {
                bool isCornerUp = URandom.value < 0.5f;
                if (isCornerUp)
                {
                    GeneratorUtils.DrawCorridor(new Vector2Int(row1, column1), new Vector2Int(row1, column2), _bspGenData.GroundTile, ref mapAux);
                    GeneratorUtils.DrawCorridor(new Vector2Int(row1, column2), new Vector2Int(row2, column2), _bspGenData.GroundTile, ref mapAux);
                }
                else
                {
                    GeneratorUtils.DrawCorridor(new Vector2Int(row1, column1), new Vector2Int(row2, column1), _bspGenData.GroundTile, ref mapAux);
                    GeneratorUtils.DrawCorridor(new Vector2Int(row2, column1), new Vector2Int(row2, column2), _bspGenData.GroundTile, ref mapAux);
                }
            }
            else
            {
                GeneratorUtils.DrawCorridor(new Vector2Int(row1, column1), new Vector2Int(row2, column2), _bspGenData.GroundTile, ref mapAux);
            }
        }
        else if (deltaRows > 0) // up
        {
            if (deltaCols != 0)
            {
                bool isCornerUp = URandom.value < 0.5f;
                if (isCornerUp)
                {
                    GeneratorUtils.DrawCorridor(new Vector2Int(row1, column1), new Vector2Int(row2, column1), _bspGenData.GroundTile, ref mapAux);
                    GeneratorUtils.DrawCorridor(new Vector2Int(row2, column1), new Vector2Int(row2, column2), _bspGenData.GroundTile, ref mapAux);
                }
                else
                {
                    GeneratorUtils.DrawCorridor(new Vector2Int(row1, column1), new Vector2Int(row1, column2), _bspGenData.GroundTile, ref mapAux);
                    GeneratorUtils.DrawCorridor(new Vector2Int(row1, column2), new Vector2Int(row2, column2), _bspGenData.GroundTile, ref mapAux);
                }
            }
            else
            {
                GeneratorUtils.DrawCorridor(new Vector2Int(row1, column1), new Vector2Int(row2, column2), _bspGenData.GroundTile, ref mapAux);
            }
        }
        else
        {
            GeneratorUtils.DrawCorridor(new Vector2Int(row1, column1), new Vector2Int(row2, column2), _bspGenData.GroundTile, ref mapAux);
        }
    }