void mapTab_MouseMove(object sender, MouseEventArgs e) { cursorPosition = e.GetPosition(mapTab.MapCanvas); var cursor = cursorPosition.Value; var planets = from planet in mapTab.MapCanvas.Children.OfType <PlanetIcon>() let distance = Math.Sqrt(Math.Pow(cursor.X - planet.X, 2) + Math.Pow(cursor.Y - planet.Y, 2)) where distance < orderClickProximity / mapTab.ZoomControl.Zoom orderby distance select planet; cursorPlanet = planets.FirstOrDefault(); }
void mapTab_MouseLeftButtonDown(object sender, MouseButtonEventArgs _) { mapTab.MapCanvas.MouseLeftButtonDown -= mapTab_MouseLeftButtonDown; Application.Current.RootVisual.MouseMove -= mapTab_MouseMove; cursorPosition = null; if (cursorPlanet == null) { return; } var destination = cursorPlanet; cursorPlanet = null; var service = new PlanetWarsServiceClient(); service.OrderFleetCompleted += (s, e) => { transit.Fleets = e.Result; MessageBox.Show(cursorPlanet.Name + " called, they want their transit back!"); }; service.OrderFleetAsync(App.UserName, App.Password, transit.Fleets.FleetID, destination.Body.CelestialObjectID, 0); }