in WhackAMole.UWPClient/Models/WhackSpace.cs [258:299]
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();
}
}