protected virtual void BindMouseAndKeyboardType(ControllerPlayerInputType type)
 {
     _primaryLeft.AddDefaultBinding(Key.A);
     _primaryRight.AddDefaultBinding(Key.D);
     _primaryUp.AddDefaultBinding(Key.W);
     _primaryDown.AddDefaultBinding(Key.S);
 }
        protected override void BindDeviceToPlayerIndex(InputDevice device, int playerIndex)
        {
            base.BindDeviceToPlayerIndex(device, playerIndex);

            TPlayerActions            playerActions = this.ActionsForPlayerIndex(playerIndex);
            ControllerPlayerInputType type          = (playerIndex == 0) ? _playerOneInputType : ControllerPlayerInputType.CONTROLLER;

            playerActions.BindWithInputType(type);

            this.LogIfDebugEnabled("Setup player " + playerIndex + " with type: " + type + "!");
        }
		protected virtual void BindControllerType(ControllerPlayerInputType type) {
			_primaryLeft.AddDefaultBinding(InputControlType.LeftStickLeft);
			_primaryRight.AddDefaultBinding(InputControlType.LeftStickRight);
			_primaryUp.AddDefaultBinding(InputControlType.LeftStickUp);
			_primaryDown.AddDefaultBinding(InputControlType.LeftStickDown);
			
			_secondaryLeft.AddDefaultBinding(InputControlType.RightStickLeft);
			_secondaryRight.AddDefaultBinding(InputControlType.RightStickRight);
			_secondaryUp.AddDefaultBinding(InputControlType.RightStickUp);
			_secondaryDown.AddDefaultBinding(InputControlType.RightStickDown);
		}
		public void BindWithInputType(ControllerPlayerInputType type) {
			switch (type) {
				case ControllerPlayerInputType.MOUSE_AND_KEYBOARD:
					this.BindMouseAndKeyboardType(type);
					break;
				
				case ControllerPlayerInputType.CONTROLLER:
					this.BindControllerType(type);
					break;
			}
		}
        protected virtual void BindControllerType(ControllerPlayerInputType type)
        {
            _primaryLeft.AddDefaultBinding(InputControlType.LeftStickLeft);
            _primaryRight.AddDefaultBinding(InputControlType.LeftStickRight);
            _primaryUp.AddDefaultBinding(InputControlType.LeftStickUp);
            _primaryDown.AddDefaultBinding(InputControlType.LeftStickDown);

            _secondaryLeft.AddDefaultBinding(InputControlType.RightStickLeft);
            _secondaryRight.AddDefaultBinding(InputControlType.RightStickRight);
            _secondaryUp.AddDefaultBinding(InputControlType.RightStickUp);
            _secondaryDown.AddDefaultBinding(InputControlType.RightStickDown);
        }
        public void BindWithInputType(ControllerPlayerInputType type)
        {
            switch (type)
            {
            case ControllerPlayerInputType.MOUSE_AND_KEYBOARD:
                this.BindMouseAndKeyboardType(type);
                break;

            case ControllerPlayerInputType.CONTROLLER:
                this.BindControllerType(type);
                break;
            }
        }
		protected virtual void BindMouseAndKeyboardType(ControllerPlayerInputType type) {
			_primaryLeft.AddDefaultBinding(Key.A);
			_primaryRight.AddDefaultBinding(Key.D);
			_primaryUp.AddDefaultBinding(Key.W);
			_primaryDown.AddDefaultBinding(Key.S);
		}