private void ReadWeaponUsage(Stream saveData) { using (var weaponUsageReader = new WeaponUsageReader(saveData)) { foreach (WeaponUsageSaveSlotInfo weaponUsageInfo in weaponUsageReader.Read()) { PrintBaseSaveData(weaponUsageInfo); Console.WriteLine(); Console.WriteLine("Low rank:"); PrintWeaponUsage(weaponUsageInfo.LowRank); Console.WriteLine("High rank:"); PrintWeaponUsage(weaponUsageInfo.HighRank); Console.WriteLine("Investigations:"); PrintWeaponUsage(weaponUsageInfo.Investigations); Console.WriteLine("Total:"); PrintWeaponUsage(weaponUsageInfo.LowRank + weaponUsageInfo.HighRank + weaponUsageInfo.Investigations); PrintSeparator('-'); } } }
private async Task LoadSaveDataAsync(CancellationToken cancellationToken) { MemoryStream ms; var crypto = new Crypto(); using (Stream inputStream = File.OpenRead(saveDataFullFilename)) { byte[] buffer = new byte[inputStream.Length]; await inputStream.ReadAsync(buffer, 0, buffer.Length); await crypto.DecryptAsync(buffer); ms = new MemoryStream(buffer); } if (cancellationToken.IsCancellationRequested) { return; } using (var weaponUsageReader = new WeaponUsageReader(ms)) { foreach (SaveDataSlotViewModel saveDataItem in saveDataItems) { saveDataItem.Dispose(); } saveDataItems.Clear(); foreach (WeaponUsageSaveSlotInfo saveSlotInfo in weaponUsageReader.Read()) { saveSlotInfo.SetSaveDataInfo(new SaveDataInfo(UserId, saveDataFullFilename)); saveDataItems.Add(new SaveDataSlotViewModel(rootViewModel, saveSlotInfo)); } } rootViewModel.ApplyMiniModeVisibility(); }
public async Task ReadFile() { Output = string.Empty; StateHasChanged(); foreach (IFileReference file in await dropReference.EnumerateFilesAsync()) { var stream = new MemoryStream(); Log($"Decrypting save data, this can be long..."); Stopwatch sw = Stopwatch.StartNew(); using (Stream inputStream = await file.CreateMemoryStreamAsync()) { await Crypto.ParallelDecryptAsync(inputStream, stream, CancellationToken.None); } sw.Stop(); Log($"Decryption done. ({sw.ElapsedMilliseconds} ms)"); Output += NewLine; using (var weaponUsageReader = new WeaponUsageReader(stream)) { IEnumerable <WeaponUsageSaveSlotInfo> slots = weaponUsageReader.Read(); foreach (WeaponUsageSaveSlotInfo slotInfo in slots) { string playtime = MiscUtils.PlaytimeToGameString(slotInfo.Playtime); Log($"Name: {slotInfo.Name}, Rank: {slotInfo.Rank}, Play time: {playtime}", false); } } StateHasChanged(); } }