Exemple #1
0
        /// <summary>
        /// Parser creates a container of Map entities
        /// </summary>
        /// <param name="mapStrings"></param>
        /// <param name="keymap"></param>
        /// <param name="platforms"></param>
        /// <returns></returns>

        public static EntityContainer Parser(List <string> mapStrings, Dictionary <string, string> keymap, List <string> platforms)
        {
            EntityContainer returnContainer = new EntityContainer();

            List <string> map = ASCIIParser.RemoveEmptyLines(mapStrings);

            int row = 1;
            int col = 0;

            float tileHeight = 1.0f / map.Count;

            foreach (string line in map)
            {
                float tileWidth = 1.0f / line.Length;
                foreach (char key in line)
                {
                    if (keymap.ContainsKey(key.ToString()))
                    {
                        returnContainer.AddStationaryEntity(
                            new StationaryShape(new Vec2F(col * tileWidth, 1.0f - row * tileHeight),
                                                new Vec2F(tileWidth, tileHeight)),
                            new Image(keymap[key.ToString()]));
                    }
                    col++;
                }
                row++;
                col = 0;
            }

            return(returnContainer);
        }
Exemple #2
0
        public static Map Parser(StreamReader sr)
        {
            string headerName = "";

            List <string> keyString      = new List <string>();
            string        metaDataString = "";
            List <string> mapStrings     = new List <string>();

            string pattern = @"\s*##(?<header>(";

            foreach (var header in MapParser.parserHeaders)
            {
                pattern += header + "|";
            }
            pattern  = pattern.Remove(pattern.Length - 1);
            pattern += @"))##\s*$";

            MapParser.regex = new Regex(pattern);

            string line = sr.ReadLine();


            while (!sr.EndOfStream)
            {
                Match match = MapParser.regex.Match(line);

                if (match.Success)
                {
                    headerName = match.Groups["header"].Value;
                }
                else
                {
                    switch (headerName)
                    {
                    case "Map":
                        mapStrings.Add(line);
                        break;

                    case "KeyMap":
                        keyString.Add(line);
                        break;

                    case "MetaData":
                        metaDataString += line;
                        break;

                    default:
                        break;
                    }
                }
                line = sr.ReadLine();
            }
            sr.Close();
            Map map = new Map(metaDataString);
            Dictionary <string, string> keyMap = KeyParser.ParseKey(keyString);

            map.AddEntityContainer(ASCIIParser.Parser(mapStrings, keyMap, map.Platforms));
            return(map);
        }