Exemple #1
0
        private void RenderContent(TilesLayout.TilesLayout tilesLayout, TilesLayout.TilesLayoutContent content, PathCell[,] cells)
        {
            cells.ForeachIndexed((x, y, cell) =>
            {
                GameObject tileGameObject = null;
                switch (cell.CellType)
                {
                case PathCell.Type.LETTER:
                    tileGameObject = LetterGameObject;
                    break;

                case PathCell.Type.OBSTACLE:
                    tileGameObject = ObstacleGameObject;
                    break;

                case PathCell.Type.EMPTY:
                    tileGameObject = EmptyGameObject;
                    break;
                }

                content.Items[x, y].GameObject = tileGameObject;
            });

            tilesLayout.Content = content;
        }
Exemple #2
0
        private void GenerateGameObjects(PathCell[,] cells, TilesLayout.TilesLayout tilesLayout, TilesLayout.TilesLayoutContent content, List <string> letters)
        {
            RenderContent(tilesLayout, content, cells);

            var letterGenerator = LetterGenerator(letters).GetEnumerator();

            letterGenerator.MoveNext();

            cells.Flatten()
            .Where(cell => cell.CellType == PathCell.Type.LETTER)
            .ToList()
            .ForEach(cell =>
            {
                var gameObject = content.Items[cell.Position.x, cell.Position.y].GameObject;
                var binding    = gameObject.GetComponent(typeof(LetterTileBinding)) as LetterTileBinding;
                binding.Letter = letterGenerator.Current;
                letterGenerator.MoveNext();
            });
        }
Exemple #3
0
        private void GenerateLevel(TilesLayout.TilesLayout tilesLayout, TilesLayout.TilesLayoutContent content)
        {
            var obstaclePositioner  = new ObstaclePositioner();
            var emptyCellPositioner = new EmptyCellPositioner();

            var cells = new PathCell[content.Columns, content.Rows];

            cells.ForeachIndexed((x, y, cell) => cells[x, y] = new PathCell(x, y));

            int pathLength   = EnsurePathExists(cells);
            var letters      = GenerateLetters(pathLength);
            int maxObstacles = cells.Length - (letters.Count >= pathLength ? (letters.Count) : (pathLength));

            obstaclePositioner.PlaceObstacles(cells, maxObstacles);
            PlaceRemainingLetters(cells, pathLength, letters);
            emptyCellPositioner.PlaceEmptyCells(cells);

            cells.Print();

            GenerateGameObjects(cells, tilesLayout, content, letters);
        }