public static string SaveTrack(Track track, string savename) { var dir = TrackIO.GetTrackDirectory(track); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } var filename = dir + savename + ".sol"; BigEndianWriter bw = new BigEndianWriter(); bw.WriteShort(0x00BF); //sol version bw.WriteInt(0); //length, placeholder bw.WriteString("TCSO"); bw.WriteBytes(new byte[] { 0, 4, 0, 0, 0, 0 }); bw.WriteMapleString("savedLines"); bw.WriteInt(0);//padding Amf0Object rootobj = new Amf0Object(); rootobj.name = "trackList"; rootobj.type = Amf0Object.Amf0Type.AMF0_ECMA_ARRAY; var tracks = new List <Amf0Object>(); rootobj.data = tracks; WriteTrack(tracks, track); Amf0 amf = new Amf0(bw); amf.WriteAmf0Object(rootobj); bw.WriteByte(0); bw.Reset(2); bw.WriteInt(bw.Length - 6); File.WriteAllBytes(filename, bw.ToArray()); return(filename); }
public static void SaveTrack(Track track) { var location = Program.UserDirectory + "Tracks" + Path.DirectorySeparatorChar + track.Name + "savedLines.sol"; BigEndianWriter bw = new BigEndianWriter(); bw.WriteShort(0x00BF); //sol version bw.WriteInt(0); //length, placeholder bw.WriteString("TCSO"); bw.WriteBytes(new byte[] { 0, 4, 0, 0, 0, 0 }); bw.WriteMapleString("savedLines"); bw.WriteInt(0);//padding Amf0Object rootobj = new Amf0Object(); rootobj.name = "trackList"; rootobj.type = Amf0Object.Amf0Type.AMF0_ECMA_ARRAY; var tracks = new List <Amf0Object>(); rootobj.data = tracks; WriteTrack(tracks, track); Amf0 amf = new Amf0(bw); amf.WriteAmf0Object(rootobj); bw.WriteByte(0); bw.Reset(2); bw.WriteInt(bw.Length - 6); File.WriteAllBytes(location, bw.ToArray()); }