Beispiel #1
0
 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();
            }
        }