private void OnGemCreated(GemManager sender, GemController gemController) { GemControllerWrapper wrapper = new GemControllerWrapper(gemController); DrawCanvas.Children.Add(wrapper.GemImage); DrawCanvas.Children.Add(wrapper.SpecialImage); wrapper.GemImage.MouseDown += Image_MouseDown; wrapper.OnOverEvent += OnGemWrapperOver; gemControllers.Add(wrapper); }
private void OnGemWrapperOver(GemControllerWrapper sender) { Dispatcher.Invoke(() => { DrawCanvas.Children.Remove(sender.GemImage); DrawCanvas.Children.Remove(sender.SpecialImage); sender.GemImage.MouseDown -= Image_MouseDown; sender.OnOverEvent -= OnGemWrapperOver; gemControllers.Remove(sender); }); }
private void Image_MouseDown(object sender, MouseButtonEventArgs e) { if (sender is Image) { Image img_sender = sender as Image; if (img_sender.Tag != null && img_sender.Tag is GemControllerWrapper) { selectedGem = img_sender.Tag as GemControllerWrapper; mouseDownPosition = e.GetPosition(this); } } }
private void Window_MouseUp(object sender, MouseButtonEventArgs e) { if (selectedGem != null) { Point mousePos = e.GetPosition(this); Direction direction = CalculateDirection(mousePos, mouseDownPosition); if (!selectedGem.GetConstrains().HasFlag(direction)) { selectedGem.MoveTo(direction); } selectedGem = null; } }