Esempio n. 1
0
    public void ClearEvents()
    {
        //loop through every event and unsubscribe the events
        if (LevelGeneration != null)
        {
            foreach (var eventDelegate in LevelGeneration.GetInvocationList())
            {
                LevelGeneration -= (eventDelegate as EventHandler);
            }
        }

        if (LevelBaking != null)
        {
            foreach (var eventDelegate in LevelBaking.GetInvocationList())
            {
                LevelBaking -= (eventDelegate as EventHandler);
            }
        }

        if (LevelPopulation != null)
        {
            foreach (var eventDelegate in LevelPopulation.GetInvocationList())
            {
                LevelPopulation -= (eventDelegate as EventHandler);
            }
        }

        if (PlayerPopulation != null)
        {
            foreach (var eventDelegate in PlayerPopulation.GetInvocationList())
            {
                PlayerPopulation -= (eventDelegate as EventHandler);
            }
        }

        if (PostPlayer != null)
        {
            foreach (var eventDelegate in PostPlayer.GetInvocationList())
            {
                PostPlayer -= (eventDelegate as EventHandler);
            }
        }

        if (FinalizeObjectPools != null)
        {
            foreach (var eventDelegate in FinalizeObjectPools.GetInvocationList())
            {
                FinalizeObjectPools -= (eventDelegate as EventHandler);
            }
        }

        if (FinalStep != null)
        {
            foreach (var eventDelegate in FinalStep.GetInvocationList())
            {
                FinalStep -= (eventDelegate as EventHandler);
            }
        }
    }
Esempio n. 2
0
    public bool GenerateLevel()
    {
        level = new int[width, height];
        RandomFillLevel();
        for (int i = 0; i < smoothAmount; i++)
        {
            SmoothLevel();
        }

        ProcessLevel();

        int borderSize = 1;

        int[,] borderedLevel = new int[width + borderSize * 2, height + borderSize * 2];

        for (int x = 0; x < borderedLevel.GetLength(0); x++)
        {
            for (int y = 0; y < borderedLevel.GetLength(1); y++)
            {
                if (x >= borderSize && x < width + borderSize && y >= borderSize && y < height + borderSize)
                {
                    borderedLevel[x, y] = level[x - borderSize, y - borderSize];
                }
                else
                {
                    borderedLevel[x, y] = 0;
                }
            }
        }

        LevelMeshGenerator meshGen = GetComponent <LevelMeshGenerator>();

        levelMeshData = meshGen.GenerateMesh(borderedLevel, sizeMultiplier);

        LevelPopulation popGen = GetComponent <LevelPopulation>();

        popGen.DepopulateLevel();
        if (populateLevel)
        {
            if (!popGen.PopulateLevel(borderedLevel, sizeMultiplier, levelMeshData))
            {
                fillAmount++;
                GenerateLevel();
            }
        }

        if (generateGrid)
        {
            Grid pathfindingGrid = GetComponent <Grid>();
            pathfindingGrid.CreateGrid();
        }
        return(true);
    }