public static void LoadAllPVPReplays() { if (!Directory.Exists(ReplayFolder)) { Directory.CreateDirectory(ReplayFolder); } // 获取所有文件名并排序 var fs = Directory.GetFiles(ReplayFolder, "*.*", SearchOption.TopDirectoryOnly).Where((f) => f.EndsWith(".scm")).ToArray(); fs.SwiftSort((f) => { var pureFileName = Path.GetFileNameWithoutExtension(f); return(int.Parse(pureFileName)); }); if (fs.Length > 0) { var lastFile = Path.GetFileNameWithoutExtension(fs[fs.Length - 1]); nextReplayNo = int.Parse(lastFile); } nextReplayNo++; // 读取所有录像内容 foreach (var f in fs) { byte[] data = null; using (var fr = new BinaryReader(new FileStream(f, FileMode.Open))) data = fr.ReadBytes((int)fr.BaseStream.Length); var replay = BattleReplay.Deserialize(new RingBuffer(data)); replays[Path.GetFileNameWithoutExtension(f)] = replay; } }
public void ReadFromBuffer(IReadableBuffer data) { var r = BattleReplay.Deserialize(data); msgHistroy = r.Msgs; }