Exemple #1
0
    static void Main(string[] args)
    {
        int mapWidth, mapHeight, fillPercent;

        if (args.Length < 3)
        {
            Console.WriteLine("Usage: *.exe <width> <height> <fill%>");
            return;
        }
        else
        {
            mapWidth    = Int32.Parse(args[0]);
            mapHeight   = Int32.Parse(args[1]);
            fillPercent = Int32.Parse(args[2]);
        }

        CaveGenerator caveGenerator = new CaveGenerator();
        Renderer      renderer      = new Renderer();
        ImageRenderer imageRenderer = new ImageRenderer();

        int[] playerPos = { 0, 0 };

        byte[,] mapContent = new byte[mapWidth, mapHeight];
        bool[,] map        = new bool[mapWidth, mapHeight];

        caveGenerator.GenerateCave(ref map, ref mapContent, 2, fillPercent);
        // caveGenerator.SpawnPlayer(ref map, ref mapContent, ref playerPos);

        // renderer.DrawMap(ref map, ref mapContent);
        Console.WriteLine("Rendering image...");
        imageRenderer.DrawMap(ref mapContent);

        Console.WriteLine("Done.");
        return;
    }
Exemple #2
0
    // Use this for initialization
    void Start()
    {
        // generate cave
        caveGenerator = GetComponent <CaveGenerator>();
        caveGenerator.GenerateCave();

        // generate player
        player = caveGenerator.GeneratePlayer();
        cameraController.player = player.gameObject; // set camera to follow player

        string[] percepts = caveGenerator.GetCaveInfluence(curRoom.row, curRoom.col);
        PrintPercepts(percepts);
    }
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        CaveGenerator caveGenerator = (CaveGenerator)target;

        if (Application.isPlaying)
        {
            if (GUILayout.Button("Generate New Map"))
            {
                caveGenerator.GenerateCave();
            }

            if (GUILayout.Button("Create Prefab"))
            {
                CreatePrefab(caveGenerator);
            }
        }
    }
    public void GenerateCave()
    {
        bool[,] caveMap = CaveGenerator.GenerateCave(caveSize, simulationSteps);

        for (int y = 0; y < caveSize; y++)
        {
            for (int x = 0; x < caveSize; x++)
            {
                if (x == 0 || y == 0 || x == caveSize - 1 || y == caveSize - 1)
                {
                    // creates a wall around the border of the cave
                    caveMap[x, y] = true;
                }
                if (caveMap[x, y])
                {
                    tilemap.SetTile(new Vector3Int(x, y, 0), blackTile);
                }
                else
                {
                    tilemap.SetTile(new Vector3Int(x, y, 0), regions[2].tile);
                }
            }
        }

        caveMap = CaveGenerator.FloodFill(caveMap, caveSize);
        int totalCaveSize = 0;

        for (int y = 0; y < caveSize; y++)
        {
            for (int x = 0; x < caveSize; x++)
            {
                if (caveMap[x, y])
                {
                    tilemap.SetTile(new Vector3Int(x, y, 0), regions[2].tile);
                    totalCaveSize++;
                }
                else
                {
                    tilemap.SetTile(new Vector3Int(x, y, 0), blackTile);
                }
            }
        }

        int minCaveSize = (caveSize * caveSize) / 2;

        if (totalCaveSize <= minCaveSize)
        {
            GenerateCave();
        }
        else
        {
            for (int y = 1; y < caveSize - 1; y++)
            {
                for (int x = 1; x < caveSize - 1; x++)
                {
                    if (tilemap.GetTile(new Vector3Int(x, y, 0)) == blackTile)
                    {
                        //Checks 8 coords around current x and y to see if it's wall or black

                        if (caveMap[x + 1, y] == regions[2].tile || caveMap[x - 1, y] == regions[2].tile ||
                            caveMap[x, y + 1] == regions[2].tile || caveMap[x, y - 1] == regions[2].tile ||
                            caveMap[x + 1, y + 1] == regions[2].tile || caveMap[x - 1, y + 1] == regions[2].tile ||
                            caveMap[x + 1, y - 1] == regions[2].tile || caveMap[x - 1, y - 1] == regions[2].tile)
                        {
                            tilemap.SetTile(new Vector3Int(x, y, 0), regions[6].tile);
                        }
                    }
                }
            }
        }
    }
 private void GenerateCave()
 {
     CaveGeneratorUtilities.CaveSave.CreateAssetsDirectories();
     caveGenerator.GenerateCave(seed, mapwidth, mapHeight, wallDensityPercentaje, iterations, borderDensity, minWallRegionDensity, minRoomRegionDensity, connetionsDensity, scale,
                                wallsAltitude, groundMaterial, wallsMaterial, prefabName);
 }