Example #1
0
 public void Handle(ItemSelectedMessage message)
 {
     InvokeScript("update", new List <Tuple <string, string> >
     {
         Tuple.Create("chose", string.Join("|",
                                           HeroSelectorViewModels
                                           .Where(vm => vm.SelectedItemInfo != null)
                                           .Select(vm => vm.SelectedItemInfo.Id))),
         Tuple.Create("map", BpStatus.Map),
         Tuple.Create("lang", App.Language)
     });
     if (BpStatus.StepSelectedIndex.Contains(message.SelectorId) ||        // 修改本轮选过的英雄
         !_listBpSteps[BpStatus.CurrentStep].Contains(message.SelectorId)) // 修改其他轮选过的英雄
     {
         // 修改英雄选择,无需处理
     }
     else
     {
         // 新英雄选择,判断本轮是否已选够英雄
         BpStatus.StepSelectedIndex.Add(message.SelectorId);
         if (BpStatus.StepSelectedIndex.Count == _listBpSteps[BpStatus.CurrentStep].Count)
         {
             // 选够了,下一步
             BpStatus.CurrentStep++;
             ProcessStep();
         }
     }
 }
Example #2
0
        private void ShowHeroSelector(int pointIndex)
        {
            var vm = _heroSelectorViewModelFactory.CreateViewModel();

            HeroSelectorViewModels.Add(vm);
            vm.Id = pointIndex;
            var position = _listPositions[pointIndex];

            if (pointIndex < 7)
            {
                vm.SetLeftAndTop(position);
            }
            else
            {
                vm.SetRightAndTop(position);
            }
            WindowManager.ShowWindow(vm);
            ((Window)vm.View).Owner = (Window)this.View;

            /*
             *          _eventAggregator.Publish(new ShowWindowMessage
             *          {
             *              ViewModel = vm,
             *          });
             */
        }
Example #3
0
        private void PopulateBanSelector(int pointIndex)
        {
            var firstBanId  = _listBpSteps[2].Contains(pointIndex) ? _listBpSteps[0].First() : _listBpSteps[5].First();
            var secondBanId = _listBpSteps[2].Contains(pointIndex) ? _listBpSteps[1].First() : _listBpSteps[6].First();

            if (!HeroSelectorViewModels.First(v => v.Id == firstBanId).InteractionVisible)
            {
                var vm = HeroSelectorViewModels.First(v => v.Id == firstBanId);
                vm.InteractionVisible = true;
                vm.Select(L("NO_CHOOSE"));
            }
            else if (HeroSelectorViewModels.First(v => v.Id == firstBanId).SelectedItemInfo == null)
            {
                HeroSelectorViewModels.First(v => v.Id == firstBanId).Select(L("NO_CHOOSE"));
            }
            if (!HeroSelectorViewModels.First(v => v.Id == secondBanId).InteractionVisible)
            {
                var vm = HeroSelectorViewModels.First(v => v.Id == secondBanId);
                vm.InteractionVisible = true;
                vm.Select(L("NO_CHOOSE"));
            }
            else if (HeroSelectorViewModels.First(v => v.Id == secondBanId).SelectedItemInfo == null)
            {
                HeroSelectorViewModels.First(v => v.Id == secondBanId).Select(L("NO_CHOOSE"));
            }

            BpStatus.CurrentStep = _listBpSteps[2].Contains(pointIndex) ? 2 : 7;
        }
Example #4
0
 private void CloseHeroSelectorWindows()
 {
     foreach (var vm in HeroSelectorViewModels)
     {
         vm.RequestClose();
     }
     HeroSelectorViewModels.Clear();
 }
Example #5
0
        public void ForceFirstPickProcess()
        {
            var secondBanId = _listBpSteps[1].First();

            if (BpStatus.CurrentStep == 1)
            {
                if (HeroSelectorViewModels.First(v => v.Id == secondBanId).SelectedItemInfo == null)
                {
                    HeroSelectorViewModels.First(v => v.Id == secondBanId).Select(L("NO_CHOOSE"));
                    HeroSelectorViewModels.First(v => v.Id == secondBanId).ConfirmSelection();
                }
            }
        }
Example #6
0
        public void PopulateCachedHeroSelectorWindows()
        {
            if (!_cachedHeroSelectorViewModels.Any())
            {
                InitializeAllHeroSelector();
            }

            foreach (var pointIndex in _listBpSteps.SelectMany(c => c))
            {
                var vm = _cachedHeroSelectorViewModels.First(v => v.Id == pointIndex);
                HeroSelectorViewModels.Add(vm);
            }
        }
Example #7
0
        private void ForceFourthBanProcess()
        {
            var firstBanId  = _listBpSteps[5].First();
            var secondBanId = _listBpSteps[6].First();

            if (!HeroSelectorViewModels.First(v => v.Id == secondBanId).InteractionVisible)
            {
                if (HeroSelectorViewModels.First(v => v.Id == firstBanId).SelectedItemInfo == null)
                {
                    HeroSelectorViewModels.First(v => v.Id == firstBanId).Select(L("NO_CHOOSE"));
                    HeroSelectorViewModels.First(v => v.Id == firstBanId).ConfirmSelection();
                }
            }
        }
Example #8
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();
            }
        }
Example #9
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();
            }
        }
Example #10
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;
                }
            }
        }
Example #11
0
 private void CloseHeroSelectorWindows()
 {
     HeroSelectorViewModels?.Clear();
     _cachedHeroSelectorViewModels.Clear();
     _heroSelectorWindowViewModel.RequestClose();
 }
Example #12
0
        public void Handle(ItemSelectedMessage message)
        {
            try
            {
                if (message.ItemInfo == null)
                {
                    if (IsAutoMode || BpStatus.CurrentStep <= 0)
                    {
                        return;
                    }

                    if (BpStatus.StepSelectedIndex.Any())
                    {
                        foreach (var i in _listBpSteps[BpStatus.CurrentStep])
                        {
                            var vm = HeroSelectorViewModels.First(v => v.Id == i);
                            vm.Selected         = false;
                            vm.SelectedItemInfo = null;
                        }
                        BpStatus.StepSelectedIndex.Clear();
                    }
                    else
                    {
                        foreach (var i in _listBpSteps[BpStatus.CurrentStep])
                        {
                            var vm = HeroSelectorViewModels.First(v => v.Id == i);
                            vm.InteractionVisible = false;
                        }

                        BpStatus.CurrentStep--;

                        {
                            var i  = _listBpSteps[BpStatus.CurrentStep].Last();
                            var vm = HeroSelectorViewModels.First(v => v.Id == i);
                            vm.Selected         = false;
                            vm.SelectedItemInfo = null;

                            if (_listBpSteps[BpStatus.CurrentStep].Count > 1)
                            {
                                var vmSelected = HeroSelectorViewModels.First(v => v.Id != _listBpSteps[BpStatus.CurrentStep].First());
                                if (vmSelected != null)
                                {
                                    BpStatus.StepSelectedIndex = new HashSet <int>()
                                    {
                                        vmSelected.Id
                                    }
                                }
                                ;
                                else
                                {
                                    BpStatus.StepSelectedIndex.Clear();
                                }
                            }
                            else
                            {
                                BpStatus.StepSelectedIndex.Clear();
                            }
                        }
                    }

                    InvokeScript("update", new List <Tuple <string, string> >
                    {
                        Tuple.Create("chose", string.Join("|",
                                                          HeroSelectorViewModels
                                                          .Where(vm => vm.SelectedItemInfo != null)
                                                          .Select(vm => vm.SelectedItemInfo.Id))),
                        Tuple.Create("map", BpStatus.Map),
                        Tuple.Create("lang", App.Language)
                    });
                    return;
                }

                var idList = new List <string>();

                foreach (var vm in HeroSelectorViewModels)
                {
                    if (vm.SelectedItemInfo != null)
                    {
                        idList.Add(vm.SelectedItemInfo.Id);
                    }
                }

                if (App.CustomConfigurationSettings.UploadBanSample && BanSteps.Contains(message.SelectorId) && !string.IsNullOrEmpty(message.ItemInfo?.Id) && message.ItemInfo.Id != "0")
                {
                    if (_lastIds[message.SelectorId] != message.ItemInfo?.Id)
                    {
                        Task.Run(() => UploadSampleAsync(message.ItemInfo.Id, BanSteps.IndexOf(message.SelectorId)));
                        _lastIds[message.SelectorId] = message.ItemInfo?.Id;
                    }
                }

                InvokeScript("update", new List <Tuple <string, string> >
                {
                    Tuple.Create("chose", string.Join("|", idList)),
                    Tuple.Create("map", BpStatus.Map),
                    Tuple.Create("lang", App.Language)
                });
                if (BpStatus.StepSelectedIndex.Contains(message.SelectorId) ||        // 修改本轮选过的英雄
                    !_listBpSteps[BpStatus.CurrentStep].Contains(message.SelectorId)) // 修改其他轮选过的英雄
                {
                    // 修改英雄选择,无需处理
                }
                else
                {
                    // 新英雄选择,判断本轮是否已选够英雄
                    BpStatus.StepSelectedIndex.Add(message.SelectorId);
                    if (BpStatus.StepSelectedIndex.Count == _listBpSteps[BpStatus.CurrentStep].Count)
                    {
                        // 选够了,下一步
                        if (BpStatus.CurrentStep < 9)
                        {
                            BpStatus.CurrentStep++;
                            ProcessStep();
                        }
                    }
                }
            }
            catch (Exception)
            {
                // TODO Ignore for test, please remove the catch
            }
        }