Ejemplo n.º 1
0
        private static void WriteObject(StreamWriter outStream, BasicObject obj)
        {
            BasicObjectParser parser = ParserFromObject(obj);

            if (parser == null)
            {
                return;
            }

            string keyword = parser.BuildCode();

            if (parser.Code.Count == 0)
            {
                return;
            }

            outStream.WriteLine(keyword);
            foreach (var s in parser.Code)
            {
                outStream.WriteLine(s);
            }

            outStream.WriteLine(parser.ObjectTerminator);
            outStream.WriteLine();
        }
Ejemplo n.º 2
0
        private static BasicObjectParser ParserFromObject(BasicObject obj)
        {
            BasicObjectParser parser = ParserFactory.Create(obj.ObjectType.ToUpperInvariant());

            parser.Object = obj;
            return(parser);
        }
Ejemplo n.º 3
0
        public static WorldMap ReadMap(StreamReader inStream)
        {
            WorldMap map = new WorldMap();

            map.IntForLoad();

            BasicObjectParser parser = null;

            while (!inStream.EndOfStream)
            {
                string line = inStream.ReadLine().Trim();

                if (line == string.Empty || line[0] == '#')
                {
                    continue;
                }

                string cmd_norm = GetFirstWord(line);

                string cmd = cmd_norm.ToUpperInvariant();

                if (parser == null)
                {
                    parser = ParserFactory.Create(cmd);
                    parser.Init(cmd_norm, GetRestOfWords(TrimTrainingComments(line)));
                }
                else
                {
                    if (cmd == "END")
                    {
                        parser.Finish();
                        map.AddObject(parser.Object);
                        parser = null;
                    }
                    else
                    {
                        parser.AddCodeLine(cmd, TrimTrainingComments(line));
                    }
                }
            }

            if (parser != null) // should not happen, but don't loose data
            {
                parser.Finish();
                map.AddObject(parser.Object);
                parser = null;
            }

            map.FinishLoad();
            return(map);
        }