예제 #1
0
        /// <summary>
        /// Loads a level file and returns an ILevel object.
        /// May throw a FileNotFoundException if the file is not found.
        /// </summary>
        public ILevel ImportLevel()
        {
            int width = GetIntValue(LevelReader.ReadLine());
            int height = GetIntValue(LevelReader.ReadLine());
            ILevel level = new Level(width, height);
            level.Start = GetPosition(LevelReader.ReadLine(), 1);
            level.Finish = GetPosition(LevelReader.ReadLine(), 1);

            Point gridObjectPos;
            GridObjectType gridObjectType = GridObjectType.Tile;
            string tileLine = LevelReader.ReadLine();
            while (tileLine != null)
            {
                gridObjectPos = GetPosition(tileLine, 0);
                switch (GetStringValue(tileLine))
                {
                    case "tile":
                        gridObjectType = GridObjectType.Tile;
                        break;
                    case "ghost":
                        gridObjectType = GridObjectType.Ghost;
                        break;
                    case "patrol":
                        gridObjectType = GridObjectType.Patrol;
                        // Skip the range line.
                        tileLine = LevelReader.ReadLine();
                        break;
                    case "gravityboots":
                        gridObjectType = GridObjectType.GravityBoots;
                        break;
                    case "jumpplatform":
                        gridObjectType = GridObjectType.JumpPlatform;
                        break;
                }
                level.SetGridObject(gridObjectPos, new GridObject(gridObjectType));
                tileLine = LevelReader.ReadLine();
            }
            LevelReader.Close();
            return level;
        }