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(); }
private static BasicObjectParser ParserFromObject(BasicObject obj) { BasicObjectParser parser = ParserFactory.Create(obj.ObjectType.ToUpperInvariant()); parser.Object = obj; return(parser); }
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); }