예제 #1
0
        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;
        }
예제 #2
0
        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]");
        }
예제 #3
0
        private void WriteMissile(Missile missile)
        {
            WriteString(missile.File);

            _writer.Write((byte)missile.Names.Count);
            foreach (var name in missile.Names)
            {
                WriteString(name);
            }
        }
예제 #4
0
        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;
        }