public void Save(string file) { if (Path.GetExtension(file) != ".adm") { throw new ArgumentException("File does not have *.adm extension."); } BufferWriter w = new BufferWriter(); w.WriteString("ADmapv2"); w.WriteByte(0); // 'version' w.WriteByte(GRID_SIZE); w.WriteBytes(new byte[15]); // extra slots w.WriteString(Name); w.WriteString(Author); w.WriteByte(floorType); saveObjects(w); w.Save(file); }
private void saveObjects(BufferWriter writer) { var queryObjectsByType = from obj in objects group obj by obj.LongName; foreach (var objectGroup in queryObjectsByType) { writer.WriteString(objectGroup.Key); ushort count = 0; foreach (MapObject obj in objectGroup) { count++; } writer.WriteUShort(count); foreach (MapObject obj in objectGroup) { obj.WriteSelf(writer); } } }
public virtual void WriteSelf(BufferWriter writer) { writer.WriteUShort(X); writer.WriteUShort(Y); }