private void DemoCutByTimeThread(object arg) { var info = (CutByTimeInfo)arg; if (info == null) { _app.LogError("Invalid thread argument type"); return; } var protocol = App.GetProtocolFromFilePath(info.FilePath); if (protocol == UDT_DLL.udtProtocol.Invalid) { _app.LogError("Unrecognized protocol for demo '{0}'", Path.GetFileName(info.FilePath)); return; } _app.InitParseArg(); _app.ParseArg.FileOffset = info.FileOffset; _app.ParseArg.GameStateIndex = info.GameStateIndex; try { UDT_DLL.CutDemoByTime(_app.GetMainThreadContext(), ref _app.ParseArg, info.FilePath, info.StartTime, info.EndTime); } catch (Exception exception) { var startTimeDisplay = App.FormatMinutesSeconds(info.StartTime); var endTimeDisplay = App.FormatMinutesSeconds(info.EndTime); _app.LogError("Caught an exception while writing cut {0}-{1}: {2}", startTimeDisplay, endTimeDisplay, exception.Message); } }
private CutLists GetFileMatches() { var items = _fileResultsListView.SelectedItems; if (items.Count == 0) { return(null); } var result = new CutLists(); foreach (var item in items) { var listViewItem = item as ListViewItem; if (listViewItem == null) { continue; } var displayInfo = listViewItem.Content as SearchResultFileDisplayInfo; if (displayInfo == null) { continue; } if (displayInfo.FileIndex >= (uint)_resultDemos.Count) { continue; } var filePath = _resultDemos[(int)displayInfo.FileIndex].FilePath; if (!App.IsValidWriteProtocol(App.GetProtocolFromFilePath(filePath))) { continue; } var matches = _results.FindAll(c => c.DemoInputIndex == displayInfo.FileIndex); var fileCuts = new FileCuts(); fileCuts.FilePath = filePath; foreach (var match in matches) { var cut = new UDT_DLL.Cut(); cut.GameStateIndex = (int)match.GameStateIndex; cut.StartTimeMs = match.StartTimeMs; cut.EndTimeMs = match.EndTimeMs; fileCuts.Cuts.Add(cut); } result.FileCuts.Add(fileCuts); } return(result); }