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; } }
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); }
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(); } }
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(); } }