private void CreateCompositeButton(IEnumerable <IButtonAble> buttons, BaseMovable entityMover, Vector2 moveBy, MoverManager moverManager)
        {
            var smartButton = new CompositeSmartButton(buttons)
            {
                OnButtonJustPressed = (sender, args) =>
                {
                    ButtonsDown++;
                    ToMove.Moving = PlayerMove;
                    moverManager.RemoveMover(entityMover);
                    MoveBy(moveBy, entityMover.Position);
                },
                OnButtonHeldDown = (sender, args) =>
                {
                    ToMove.Moving = PlayerMove;
                    MoveBy(moveBy, entityMover.Position);
                },
                OnButtonReleased = (sender, args) =>
                {
                    ButtonsDown--;
                    ToMove.Moving = PlayerMove;
                    moverManager.RemoveMover(entityMover);
                    Release(moveBy);
                }
            };

            AddButton(smartButton);
        }
Beispiel #2
0
        public override BaseMovableController CreateEntityController(BaseMovable moveable,
                                                                     IPossibleMovements possibleMovements, MoverManager moverManager)
        {
            var controller    = base.CreateEntityController(moveable, possibleMovements, moverManager);
            var runningButton = new List <IButtonAble>();

            AddKeyBoardButton(runningButton, Keys.LeftShift);
            AddKeyBoardButton(runningButton, Keys.RightShift);
            AddGamePadButton(runningButton, Buttons.B);
            var entity = moveable as Entity;

            if (entity != null)
            {
                var smartButton = new CompositeSmartButton(runningButton)
                {
                    OnButtonJustPressed = (sender, args) => { entity.SpeedContext.SpeedState = new SpeedRunning(); },
                    OnButtonReleased    = (sender, args) => { entity.SpeedContext.SpeedState = new SpeedNormal(); }
                };
                controller.AddButton(smartButton);
            }
            return(controller);
        }
Beispiel #3
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);
        }
        public void AddInteractionController()
        {
            var controller     = new SmartController();
            var buttonsCreated = StaticServiceLocator.ContainsService <List <IButtonAble> >();

            if (!buttonsCreated)
            {
                var interactButton = new List <IButtonAble>
                {
                    new KeyButton(Keys.E),
                    new GamePadButton(Buttons.A)
                };
                StaticServiceLocator.AddService(interactButton);
            }
            var buttons     = StaticServiceLocator.GetService <List <IButtonAble> >();
            var smartButton = new CompositeSmartButton(buttons)
            {
                OnButtonJustPressed = (sender, args) =>
                {
                    if (!DialogBox.Interact())
                    {
                        InteractEvent?.Invoke(this, null);
                    }
                }
            };

            controller.AddButton(smartButton);
            var upButton = new List <IButtonAble> {
                new DirectionGamePadButton(Buttons.DPadUp, PlayerIndex.One, false)
            };
            var smartUpButton = new CompositeSmartButton(upButton)
            {
                OnButtonJustPressed = (sender, args) =>
                {
                    DialogBox.Up();
                }
            };

            controller.AddButton(smartUpButton);
            var downButton = new List <IButtonAble> {
                new DirectionGamePadButton(Buttons.DPadDown, PlayerIndex.One, false)
            };
            var smartDownButton = new CompositeSmartButton(downButton)
            {
                OnButtonJustPressed = (sender, args) =>
                {
                    DialogBox.Down();
                }
            };

            controller.AddButton(smartDownButton);
            var optionsButtons = new List <IButtonAble>
            {
                new KeyButton(Keys.Escape),
                new GamePadButton(Buttons.Start)
            };
            var optionsAction = new CompositeSmartButton(optionsButtons)
            {
                OnButtonJustPressed = (sender, args) =>
                {
                    _backButtonClickEvent.Invoke(this, null);
                }
            };

            controller.AddButton(optionsAction);
            UpdateList.Add(controller);
        }