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