Example #1
0
        public GeneratorDungeon(DungeonGeneratorData dungeonGeneratorData, Transform parent)
        {
            _dungeonGeneratorData = dungeonGeneratorData;
            _parent = parent;

            _dungeon          = Object.Instantiate(new GameObject(), _parent);
            _dungeon.name     = "root-Dungeon.Static";
            _dungeon.isStatic = true;

            var gO = Object.Instantiate(_dungeonGeneratorData.StorageGenerator, _parent);

            _generator                      = gO.GetComponent <Dungeon>();
            _config                         = gO.GetComponent <GridFlowDungeonConfig>();
            _builder                        = gO.GetComponent <GridFlowDungeonBuilder>();
            _pooledSceneProvider            = gO.GetComponent <PooledDungeonSceneProvider>();
            _pooledSceneProvider.itemParent = _dungeon;

            Seed = new ReactiveProperty <uint>(_config.Seed);
            Seed.Subscribe(x => { _config.Seed = x; });
        }
Example #2
0
    public static List <Vector2Int> GenerateDungeon(DungeonGeneratorData dungeonData)
    {
        List <DungeonCrawler> dungeonCrawlers = new List <DungeonCrawler>();

        for (int i = 0; i < dungeonData.numberOfCrawlers; i++)
        {
            dungeonCrawlers.Add(new DungeonCrawler(Vector2Int.zero));
        }
        int iterations = Random.Range(dungeonData.iterationMin, dungeonData.iterationMax);

        for (int i = 0; i < iterations; i++)
        {
            foreach (DungeonCrawler dungeonCrawler in dungeonCrawlers)
            {
                Vector2Int newPos = dungeonCrawler.Move(directionMovementMap);
                positionsVisited.Add(newPos);
            }
        }

        return(positionsVisited);
    }