Example #1
0
        private Level ParseLevel(CsvLineProvider lineProvider)
        {
            var level = new Level();

            ConsumeTagLine(lineProvider, "Level");
            ConsumeTagCell(lineProvider, "ShapeCount");

            level.ShapeCount = lineProvider.Cells.CurrentCellAsInt();
            lineProvider.MoveToNextLine();

            ConsumeTagLine(lineProvider, "TileColors");

            level.TileColors = ParseIntArray(lineProvider);

            ConsumeTagLine(lineProvider, "ShapeMasks");

            level.ShapeMasks = ParseIntArray(lineProvider);

            ConsumeTagLine(lineProvider, "ShapeMoves");
            for (int i = 0; i < level.ShapeCount; i++)
            {
                lineProvider.MoveToNextLine();
            }

            return(level);
        }
Example #2
0
 private void AssertCurrentCellHasTag(CsvLineProvider lineProvider, string tag)
 {
     if (lineProvider.Cells.CurrentCell != MakeTagString(tag))
     {
         throw new Exception("Unexpected tag " + tag);
     }
 }
Example #3
0
        public LevelTemplate[] ReadLevelTemplates(string filename)
        {
            var fileLines    = File.ReadAllLines(filename);
            var lineProvider = new CsvLineProvider(fileLines);

            var levels = new List <LevelTemplate>();

            lineProvider.MoveToNextLine();

            while (lineProvider.HasLine)
            {
                var levelData     = ParseLevel(lineProvider);
                var levelTemplate = ConvertLevelDataToLevelTemplate(levelData);
                levels.Add(levelTemplate);
            }

            return(levels.ToArray());
        }
Example #4
0
        private int[][] ParseIntArray(CsvLineProvider lineProvider)
        {
            var lines = new List <int[]>();

            while (lineProvider.HasLine && !lineProvider.Cells.CurrentCellIsTag())
            {
                var cells = new List <int>();

                while (lineProvider.Cells.HasCell && lineProvider.Cells.CurrentCell != "")
                {
                    cells.Add(lineProvider.Cells.CurrentCellAsInt());
                    lineProvider.Cells.MoveToNextCell();
                }
                lines.Add(cells.ToArray());

                lineProvider.MoveToNextLine();
            }

            return(lines.ToArray());
        }
Example #5
0
 private void ConsumeTagLine(CsvLineProvider lineProvider, string tag)
 {
     AssertCurrentCellHasTag(lineProvider, tag);
     lineProvider.MoveToNextLine();
 }