예제 #1
0
 private void CreateWalkers(MapWalkersRouter router, MapWalkerData data, Vector2Int position, int count)
 {
     for (var i = 0; i < count; i++)
     {
         router.CreateWalker(data, position);
     }
 }
예제 #2
0
        private void UpdateWalkers(Map map, MapWalkersRouter router)
        {
            foreach (var walker in router.Walkers)
            {
                TryCreateMapObject(map, walker.Position);
                walker.MoveRandom();
            }

            router.TryCreateWalker(_data.ChanceSpawnWalker, _data.WalkerData, _data.MaxWalkerCount);
            router.TryKillWalker(_data.ChanceKillWalker, _data.MinWalkerCount);
        }
예제 #3
0
        private void CreateStepByStep(Map map)
        {
            _readerRouter = new MapWalkersRouter(map.Borders);
            CreateWalkers(_readerRouter, _readerData, _mapData.StartPosition, 4);
            var index = 0;

            foreach (var walker in _readerRouter.Walkers)
            {
                walker.Direction = _readerData.AvailableDirections[index];
                index++;
            }

            StartCoroutine(Create(map));
        }
예제 #4
0
        public Map Create()
        {
            Random.InitState(10);

            var size = _data.GetMapSize();
            var map  = new Map(size);
            var maxCreatedObjects = _data.GetMaxObjectsCount();

            var walkersBorders = new RectInt(Vector2Int.one, size - 2 * Vector2Int.one);
            var walkersRouter  = new MapWalkersRouter(walkersBorders);

            _mapObjectsFactory = new MapObjectsFactory(_objects, map);

            CreateWalkers(walkersRouter, _data.WalkerData, _data.StartPosition, _data.InitWalkersCount);

            while (maxCreatedObjects > _createdObjects)
            {
                UpdateWalkers(map, walkersRouter);
            }

            return(map);
        }