public override void MousePressed(MouseButtonEventArgs eventArgs) { var mousePosition = worldView.MapMousePosition(new Vector2f(eventArgs.X, eventArgs.Y)); var position = worldMap.Find(mousePosition); if (position != null) { if (position.IsEqualTo(selectedObject.Location.Position)) { if (eventArgs.Button == Mouse.Button.Left) { selectedObject.Select(false); selectedObject.Location.CycleUnits(); selectedObject = selectedObject.Location.Units.LastOrDefault() ?? selectedObject; selectedObject.Select(true); } else if (eventArgs.Button == Mouse.Button.Right) { var improvement = selectedObject.Location.Improvement; if (improvement != null) { selectedObject.Select(false); selectedObject = improvement; selectedObject.Select(true); } } } else { if (eventArgs.Button == Mouse.Button.Left) { DeselectObject(); } else if (eventArgs.Button == Mouse.Button.Right) { selectedObject.PerformPrimaryAction(worldMap[position]); } } } }
public override void MousePressed(MouseButtonEventArgs eventArgs) { if (eventArgs.Button != Mouse.Button.Left) { return; } var mousePosition = worldView.MapMousePosition(new Vector2f(eventArgs.X, eventArgs.Y)); var position = worldMap.Find(mousePosition); if (position != null) { var location = worldMap[position]; var newObject = (GameObject)location.Units.LastOrDefault() ?? location.Improvement; if (newObject != null && newObject.Owner.Active) { newObject.Select(true); activeActionResolver.Value = actionResolverFactories.Value.ObjectAction.Invoke(newObject); } } }