private static Missile ReadMissile(ref StringReader reader, ref int lineNumber) { Missile missile = new Missile(); string line; int startLine = lineNumber; bool[] hasSet = new bool[1]; while ((line = reader.ReadLine()) != null) { lineNumber++; if (line == "[/MISSILE]") { break; } else if (line.StartsWith("<STRING>File:")) { line = line.Replace("<STRING>File:", "").Trim(); missile.File = line; hasSet[0] = true; } else if (line.StartsWith("[NAMES]")) { while ((line = reader.ReadLine()) != null) { lineNumber++; if (line == "[/NAMES]") { break; } else if(line.StartsWith("//") || line.StartsWith("#")) { continue; } else { missile.Names.Add(line.Replace("<STRING>", "").Trim()); } } } else if(line.StartsWith("//") || line.StartsWith("#")) { continue; } else { throw new TxtConverterException(String.Format("Unknown unit property. (Line: {0})", lineNumber)); } } Validate(hasSet, startLine); return missile; }
private static void AppendMissile(this StringBuilder builder, Missile missile) { builder.AppendLine(" [MISSILE]"); builder.AppendFormat(" <STRING>File:{0}\r\n", missile.File); if (missile.Names.Count > 0) { builder.AppendLine(" [NAMES]"); foreach (var name in missile.Names) { builder.AppendFormat(" <STRING>{0}\r\n", name); } builder.AppendLine(" [/NAMES]"); } builder.AppendLine(" [/MISSILE]"); }
private void WriteMissile(Missile missile) { WriteString(missile.File); _writer.Write((byte)missile.Names.Count); foreach (var name in missile.Names) { WriteString(name); } }
private Missile ReadMissile() { Missile missile = new Missile(); missile.File = ReadString(); int nameCount = _reader.ReadByte(); for (int i = 0; i < nameCount; i++) { missile.Names.Add(ReadString()); } return missile; }