예제 #1
0
 private void AlignDisplay(MoleViewModel mole)
 {
     if (mole.Vector.X > 0)
     {
         mole.DisplayAlignment = (mole.Vector.Y > 0) ? MoleAlignment.TopLeft : MoleAlignment.BottomLeft;
     }
     else
     {
         mole.DisplayAlignment = (mole.Vector.Y > 0) ? MoleAlignment.TopRight : MoleAlignment.BottomRight;
     }
 }
예제 #2
0
        private async Task <bool> DeletePodAsync(MoleViewModel mole)
        {
            var result = await mole.DeleteAsync();

            if (result)
            {
                await RemoveMoleAsync(mole);

                WhackCount++;
            }
            Debug.WriteLine($"### Pod Deleted - {mole.MoleName}");
            return(result);
        }
예제 #3
0
        private async Task <MoleControl> CreateMoleAsync(KubePod pod)
        {
            try
            {
                MoleControl moleControl = null;
                await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    moleControl = new MoleControl();
                    _molemap.Add(pod.Name, moleControl);
                    moleControl.MoleName = pod.Name;
                    moleControl.Height   = moleControl.Width = MOLE_SIZE;
                    var init             = _movementEngine.InitializeMole(MOLE_SPEED);
                    var vm = new MoleViewModel(init.Item1, init.Item2, _moleService, _adminService)
                    {
                        CurrentChar = "-", MoleName = pod.Name, Phase = pod.Phase
                    };
                    moleControl.DataContext = vm;
                    Moles.Add(vm);
                    var property    = nameof(vm.DisplayAlignment);
                    Binding binding = new Binding()
                    {
                        Path = new PropertyPath(property)
                    };
                    moleControl.SetBinding(MoleControl.DisplayAlignmentProperty, binding);

                    moleControl.Init(_width, _height);
                    moleControl.MoleTapped += async(s, e) =>
                    {
                        Debug.WriteLine($"MOLE TAPPED {e.MoleName}");
                        await DeletePodAsync(e.Mole);
                        _lastKill = DateTime.Now;
                    };

                    _molepen.Children.Add(moleControl);
                });

                await _semaphore.WaitAsync();

                Debug.WriteLine($"+++Create mole {pod.Name}");
                return(moleControl);
            }
            finally
            {
                _semaphore.Release();
            }
        }
예제 #4
0
        private async Task RemoveMoleAsync(MoleViewModel remove)
        {
            try
            {
                await _semaphore.WaitAsync();

                _removedList.Add(remove.MoleName);
                await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    Moles.Remove(remove);
                    RemoveMoleFromPen(remove.MoleName);
                    remove = null;
                });
            }
            finally
            {
                _semaphore.Release();
            }
        }