private async void _parseTimer_Tick(object sender, object e) { _parseTimer.Stop(); if (Warframe.WarframeIsRunning()) { var text = await ScreenCapture.ParseTextAsync(); var hiddenPrimes = new List <DisplayPrime>(); List <Task> fetchPlatpriceTasks = new List <Task>(); foreach (var p in PrimeItems) { if (text.IndexOf(LocalizationManager.Localize(p.Prime.Name), StringComparison.InvariantCultureIgnoreCase) != -1) { p.Visible = true; fetchPlatpriceTasks.Add(FetchPlatPriceTask(p)); fetchPlatpriceTasks.Add(FetchDucatValueTask(p)); } else { hiddenPrimes.Add(p); } } if (!ShowAllPrimes) { if (hiddenPrimes.Count < PrimeItems.Count) { //Only hide if we see at least one prime (let the old list persist until we need to refresh) foreach (var p in hiddenPrimes) { p.Visible = false; } } } if (text.Contains(LocalizationManager.MissionSuccess) && _lastMissionComplete.AddMinutes(1) > DateTime.Now && PrimeItems.Count - hiddenPrimes.Count == 1) { //Auto-record the selected reward if we detect a prime on the mission complete screen _lastMissionComplete = DateTime.MinValue; await Task.Run(() => PrimeItems.FirstOrDefault(p => p.Visible)?.AddCommand?.Execute()); } if (text.Contains(LocalizationManager.SelectAReward) && PrimeItems.Count - hiddenPrimes.Count > 0) { OnMissionComplete(); } WarframeNotDetected = false; await Task.WhenAll(fetchPlatpriceTasks); } else { WarframeNotDetected = true; } _parseTimer.Start(); }
private async void LoadData() { var primeData = await PrimeData.GetInstance(); foreach (var primeItem in primeData.Primes) { PrimeItems.Add(new DisplayPrime() { Data = primeData.GetDataForItem(primeItem), Prime = primeItem }); } }