コード例 #1
0
        public static void AddCameraZoomController(AbstractCameraTracker camera, ClickController clickController)
        {
            if (TouchScreenEnabled)
            {
                var pinchGesture = new SmartGesture(GestureType.Pinch)
                {
                    GestureEvent = gesture =>
                    {
                        var dist = Vector2.Distance(gesture.Position, gesture.Position2);

                        var aOld    = gesture.Position - gesture.Delta;
                        var bOld    = gesture.Position2 - gesture.Delta2;
                        var distOld = Vector2.Distance(aOld, bOld);

                        var scale = (distOld - dist) / 500f;
                        camera.Zoom(scale);
                    }
                };
                clickController.TouchScreenControl.AddSmartGesture(pinchGesture);
            }
            if (KeyboardMouseEnabled)
            {
                clickController.MouseControl.OnScrollEvent += zoomBy =>
                {
                    camera.Zoom((float)zoomBy / 1000);
                };
            }
        }
コード例 #2
0
        protected AbstractRpgGameMode(EventHandler clickEvent)
        {
            _backButtonClickEvent = clickEvent;
            GuiManager            = new GuiManager();
            var backButton = new BackButtonGuiLayer
            {
                ClickEvent = clickEvent
            };

            GuiManager.AddGuiLayer(backButton);
            UpdateList = new List <IUpdate> {
                GuiManager
            };
            ClickController = new ClickController
            {
                MouseControl =
                {
                    OnPressedEvent = (state, mouseState) =>
                    {
                        if (!GuiManager.Interact(mouseState.Position))
                        {
                            ClickEvent?.Invoke(mouseState.Position);
                        }
                    }
                }
            };
            var moveGesture = new SmartGesture(GestureType.Tap)
            {
                GestureEvent = gesture =>
                {
                    var position = gesture.Position.ToPoint();
                    if (!GuiManager.Interact(position))
                    {
                        ClickEvent?.Invoke(position);
                    }
                }
            };

            ClickController.TouchScreenControl.AddSmartGesture(moveGesture);
            UpdateList.Add(ClickController);
        }
コード例 #3
0
 public static void AddCameraMovementController(AbstractCameraTracker camera, ClickController clickController)
 {
     if (TouchScreenEnabled)
     {
         var dragGesture = new SmartGesture(GestureType.FreeDrag)
         {
             GestureEvent = gesture =>
             {
                 camera.Camera.Position -= gesture.Delta / camera.CameraZoom;
             }
         };
         clickController.AddSmartGesture(dragGesture);
         var doubleTap = new SmartGesture(GestureType.DoubleTap)
         {
             GestureEvent = gesture =>
             {
                 camera.ReFocus();
             }
         };
         clickController.AddSmartGesture(doubleTap);
     }
 }
コード例 #4
0
        protected MenuScreen(ViewportAdapter viewPort, IServiceProvider serviceProvider)
        {
            _camera = new Camera2D(viewPort)
            {
                Zoom = 1.0f
            };
            _serviceProvider = serviceProvider;
            MenuItems        = new List <MenuItem>();

            _clickController = new ClickController();
            _clickController.MouseControl.OnPressedEvent += (state, mouseState) =>
            {
                CheckClick(mouseState.Position.ToVector2());
            };
            var moveGesture = new SmartGesture(GestureType.Tap);

            moveGesture.GestureEvent += gesture =>
            {
                CheckClick(gesture.Position);
            };
            _clickController.TouchScreenControl.AddSmartGesture(moveGesture);
            var upButtons = new List <IButtonAble>
            {
                new DirectionGamePadButton(Buttons.DPadUp),
                new KeyButton(Keys.W),
                new KeyButton(Keys.Up)
            };
            var downButtons = new List <IButtonAble>
            {
                new DirectionGamePadButton(Buttons.DPadDown),
                new KeyButton(Keys.S),
                new KeyButton(Keys.Down)
            };
            var actionButtons = new List <IButtonAble>
            {
                new GamePadButton(Buttons.A),
                new KeyButton(Keys.E)
            };
            var upAction = new CompositeSmartButton(upButtons)
            {
                OnButtonJustPressed = (sender, args) =>
                {
                    Selected--;
                }
            };
            var downAction = new CompositeSmartButton(downButtons)
            {
                OnButtonJustPressed = (sender, args) =>
                {
                    Selected++;
                }
            };
            var action = new CompositeSmartButton(actionButtons)
            {
                OnButtonReleased = (sender, args) =>
                {
                    MenuItems[Selected].Action.Invoke();
                }
            };

            _controller = new SmartController();
            _controller.AddButton(upAction);
            _controller.AddButton(downAction);
            _controller.AddButton(action);
        }
コード例 #5
0
 public void AddSmartGesture(SmartGesture smartGesture)
 {
     TouchScreenControl.AddSmartGesture(smartGesture);
 }