Beispiel #1
0
        public void InitializeAllHeroSelector()
        {
            // unspoiled cache, no need to re-initialize
            if (!HeroSelectorViewModels.Any() && _cachedHeroSelectorViewModels.Any())
            {
                return;
            }

            if (_cachedHeroSelectorViewModels.Any())
            {
                CloseHeroSelectorWindows();
            }

            _heroSelectorWindowViewModel = _viewModelFactory.CreateViewModel <HeroSelectorWindowViewModel>();
            WindowManager.ShowWindow(_heroSelectorWindowViewModel);
            ((Window)_heroSelectorWindowViewModel.View).Owner = (Window)View;

            for (var i = 0; i <= 13; ++i)
            {
                var vm = _viewModelFactory.CreateViewModel <HeroSelectorViewModel>();
                _cachedHeroSelectorViewModels.Add(vm);
                vm.Id = i;
                vm.InitializeUnselect();
                var position = _listPositions[i];
                if (i < 7)
                {
                    vm.SetLeftAndTop(position);
                }
                else
                {
                    vm.SetRightAndTop(position);
                }
                vm.InteractionVisible = false;
                vm.LayerVisible       = false;
                vm.Refresh();
            }
        }
Beispiel #2
0
        public void ShowHeroSelector(int pointIndex, string name = null)
        {
            if (!HeroSelectorViewModels.Any())
            {
                PopulateCachedHeroSelectorWindows();
            }

            if ((_listBpSteps[2].Contains(pointIndex) || _listBpSteps[7].Contains(pointIndex)) && name != null)
            {
                PopulateBanSelector(pointIndex);
            }

            var vm = HeroSelectorViewModels.First(v => v.Id == pointIndex);

            vm.InteractionVisible = true;
            if (name != null)
            {
                var heroInUi =
                    vm.ItemsInfos.First(
                        m => m.Id == App.OcrHeroInfos.First(om => om.Name == name).Id.ToString()).Name;
                vm.Select(heroInUi);
                vm.ConfirmSelection();
            }
        }
Beispiel #3
0
        private async Task OcrAsync(IEnumerable <int> steps, CancellationToken cancellationToken)
        {
            var stepToProcess = new List <int>();

            foreach (var i in steps)
            {
                if (ProcessingThreads.ContainsKey(i) && ProcessingThreads[i])
                {
                    continue;
                }

                if (HeroSelectorViewModels.Any(v => v.Id == i && v.Selected))
                {
                    continue;
                }

                stepToProcess.Add(i);
                ProcessingThreads[i] = true;
            }
            if (!stepToProcess.Any())
            {
                return;
            }

            try
            {
                if (stepToProcess[0] <= 6 && OcrUtil.IsInitialized)
                {
                    await OcrUtil.ScanLabelAsync(stepToProcess, this, OcrUtil.ScanSide.Left, cancellationToken).ConfigureAwait(false);
                }
                else
                {
                    await OcrUtil.ScanLabelAsync(stepToProcess, this, OcrUtil.ScanSide.Right, cancellationToken).ConfigureAwait(false);
                }
            }
            catch (Exception)
            {
                Logger.Trace("OcrAsync failed first attempt on {0}", string.Join(",", stepToProcess));
                try
                {
                    foreach (var i in stepToProcess)
                    {
                        ProcessingThreads[i] = false;
                    }

                    if (stepToProcess[0] <= 6 && OcrUtil.IsInitialized)
                    {
                        await OcrUtil.ScanLabelAsync(stepToProcess, this, OcrUtil.ScanSide.Left, cancellationToken).ConfigureAwait(false);
                    }
                    else
                    {
                        await OcrUtil.ScanLabelAsync(stepToProcess, this, OcrUtil.ScanSide.Right, cancellationToken).ConfigureAwait(false);
                    }
                }
                catch (Exception)
                {
                    Logger.Trace("OcrAsync failed 2nd attempt on {0}", string.Join(",", stepToProcess));
                    Execute.OnUIThread(() => { Reset(); });
                }
            }
            finally
            {
                foreach (var i in stepToProcess)
                {
                    ProcessingThreads[i] = false;
                }
            }
        }