예제 #1
0
        internal void ApplyInput(ICalculatorInput calculatorinput)
        {
            if (!ValidateInput(calculatorinput))
            {
                return;
            }
            var input = InputHistory.LastOrDefault();

            if (input is CalculatorOperator && calculatorinput is CalculatorOperator)
            {
                InputHistory.RemoveAt(InputHistory.Count - 1);
                InputHistory.Add(calculatorinput);
                FireChange("Input");
                return;
            }

            if ((input == null || input is CalculatorOperator) && calculatorinput.Value == ".")
            {
                InputHistory.Add(InputButtons.FirstOrDefault(b => b.Value == "0"));
                InputHistory.Add(calculatorinput);
            }
            else
            {
                InputHistory.Add(calculatorinput);
            }
            CurrentInput = Input.Replace(" ", "").Split(OperatorButtons.Select(b => b.Value).ToArray(), StringSplitOptions.RemoveEmptyEntries).Where(s => !string.IsNullOrEmpty(s)).LastOrDefault();
            FireChange("Input");
            if (calculatorinput is CalculatorOperator)
            {
                CurrentOperator = calculatorinput as CalculatorOperator;
                Calculate();
            }
        }
예제 #2
0
        public static bool GetButtonDown(InputButtons button, int index)
        {
            var gIndex = IntToIndex(index);

            bool result = false;

            if (gIndex == Index.Any)
            {
                for (int i = 0; i < 4; i++)
                {
                    if (XInput.GetButtonDown(Buttons[button], i))
                    {
                        result = true;
                    }
                }
                if (KbInput.GetButtonDown(Buttons[button]))
                {
                    result = true;
                }
            }
            else if (gIndex == Index.Kbm)
            {
                result = KbInput.GetButtonDown(Buttons[button]);
            }
            else
            {
                result = XInput.GetButtonDown(Buttons[button], index);
            }

            return(result);
        }
예제 #3
0
 public Boolean IsDown(InputButtons button)
 {
     switch (button)
     {
     case InputButtons.Fire: return(Fire.IsDown);
     }
     return(false);
 }
예제 #4
0
 public Boolean WasPressed(InputButtons button)
 {
     switch (button)
     {
     case InputButtons.Fire: return(Fire.WasPressed);
     }
     return(false);
 }
예제 #5
0
        public bool getButtonDown(InputButtons button)
        {
            bool result;

            // default bool value of false is desired if key is missing
            buttonValues.TryGetValue(button, out result);
            return(result);
        }
예제 #6
0
 private void HandleInputManagerCreated(InputButtons sender, InputButtonManager input)
 {
     if (input.Which.Type == InputButtonType.Keyboard)
     { // Track all created keyboard events...
         _keys[_keyCount] = input;
         _keyCount++;
     }
 }
예제 #7
0
        public void ButtonHold(InputButtons button)
        {
            InputEvent ie;

            if (buttonHoldEvents.TryGetValue(button, out ie))
            {
                ie.Trigger();
            }
        }
 public TileTapEventArgs(TileEventArgs tileEventArgs, InputButtons button, bool doubleClicked, bool pressedDown,
                         InputButtons allButtons = InputButtons.None)
 {
     this.TileEventArgs   = tileEventArgs;
     this.Button          = button;
     this.DoubleClicked   = doubleClicked;
     this.PressedDown     = pressedDown;
     this.AllButtonStates = allButtons;
 }
 public TileTapEventArgs(TileEventArgs tileEventArgs, InputButtons button, bool doubleClicked, bool pressedDown,
     InputButtons allButtons = InputButtons.None)
 {
     this.TileEventArgs = tileEventArgs;
     this.Button = button;
     this.DoubleClicked = doubleClicked;
     this.PressedDown = pressedDown;
     this.AllButtonStates = allButtons;
 }
예제 #10
0
    // Constructor
    public HumanController(PlayerOnClient nPlayer)
    {
        player = nPlayer;

        if(InGameLobby.instance != null)
            lobbyChat = InGameLobby.instance.lobbyChat;

        // Input manager
        inputManager = InputManager.instance;
        buttons = new InputButtons(inputManager);
    }
예제 #11
0
        public SdlInput(string controllerMappingFilepath)
        {
            ControllerMappingFilepath = controllerMappingFilepath;

            Timestamp = 0;
            Buttons   = new InputButtons();
            Analog    = new InputAnalogue();
            Extension = new InputExtension();

            // Set "controller byte"
            Extension.Unknown1 = 1;
        }
예제 #12
0
        protected override void Release()
        {
            base.Release();

            _buttons = null;

            _mButtons.Values.ForEach(i =>
            {
                i.OnStateChanged -= this.HandleInputChanged;
            });

            _mButtons.Clear();
        }
예제 #13
0
    // Constructor
    public HumanController(PlayerOnClient nPlayer)
    {
        player = nPlayer;

        if (InGameLobby.instance != null)
        {
            lobbyChat = InGameLobby.instance.lobbyChat;
        }

        // Input manager
        inputManager = InputManager.instance;
        buttons      = new InputButtons(inputManager);
    }
        private void RaiseTileTap(Point tapPoint, InputButtons button, bool pressedDown, bool doubleClicked,
                                  MouseButtonEventArgs e)
        {
            var allButtons = e != null?this.GetStateOfAllMouseButtons(e) : InputButtons.None;

            this.TilePressCommand.ExecuteIfAbleTo(
                new TileTapEventArgs(
                    this.GetTileEventArgsFromBoardPoint(tapPoint),
                    button,
                    doubleClicked,
                    pressedDown,
                    allButtons));
        }
예제 #15
0
파일: Input.cs 프로젝트: MHDante/OrbitVR
        public bool IsButtonDown(InputButtons button)
        {
            switch (button)
            {
            case InputButtons.A_1:
                return(A_1 == ButtonState.Pressed);

            case InputButtons.X_2:
                return(X_2 == ButtonState.Pressed);

            case InputButtons.B_3:
                return(B_3 == ButtonState.Pressed);

            case InputButtons.Y_4:
                return(Y_4 == ButtonState.Pressed);

            case InputButtons.Dpad_UpArrow:
                return(Dpad_UpArrow == ButtonState.Pressed);

            case InputButtons.Dpad_DownArrow:
                return(Dpad_DownArrow == ButtonState.Pressed);

            case InputButtons.Dpad_RightArrow:
                return(Dpad_RightArrow == ButtonState.Pressed);

            case InputButtons.Dpad_LeftArrow:
                return(Dpad_LeftArrow == ButtonState.Pressed);

            case InputButtons.Select_TAB:
                return(Select_TAB == ButtonState.Pressed);

            case InputButtons.Start_ESC:
                return(Start_ESC == ButtonState.Pressed);

            case InputButtons.LeftBumper_Q:
                return(LeftBumper_Q == ButtonState.Pressed);

            case InputButtons.RightBumper_E:
                return(RightBumper_E == ButtonState.Pressed);

            case InputButtons.LeftTrigger_Mouse2:
                return(LeftTrigger_Mouse2 == ButtonState.Pressed);

            case InputButtons.RightTrigger_Mouse1:
                return(RightTrigger_Mouse1 == ButtonState.Pressed);

            default:
                return(false);
            }
        }
예제 #16
0
        public DxInput(string controllerMappingFilepath)
        {
            ControllerMappingFilepath = controllerMappingFilepath;

            Timestamp = 0;
            Buttons   = new InputButtons();
            Analog    = new InputAnalogue();
            Extension = new InputExtension();

            // Set "controller byte"
            Extension.Unknown1 = 1;

            // Initialize DirectInput
            _directInput = new DirectInput();
        }
예제 #17
0
        /// <summary>
        /// Send controller input frame
        /// </summary>
        /// <param name="createdTime">Creation timestamp of input data.</param>
        /// <param name="buttons">Input button data.</param>
        /// <param name="analogue">Input analog axis data.</param>
        /// <param name="extension">Input extension data.</param>
        /// <returns></returns>
        public async Task SendInputFrame(DateTime createdTime, InputButtons buttons,
                                         InputAnalogue analogue, InputExtension extension)
        {
            // Convert DateTime to relative timestamp
            // e.g. microSeconds since reference timestamp
            ulong      createdTimestampMicroS = DateTimeHelper.ToTimestampMicroseconds(createdTime, ReferenceTimestamp);
            InputFrame frame = new InputFrame(NextFrameId, Timestamp, createdTimestampMicroS,
                                              buttons, analogue, extension);

            /*
             * await WaitForMessageAsync<InputFrameAck>(
             *  TimeSpan.FromMilliseconds(10),
             *  async () => await SendAsync(frame)
             * );
             */
            await SendAsync(frame);
        }
예제 #18
0
        public void EnableButton(InputButtons button, InputButtonActions action)
        {
            switch (action)
            {
            case InputButtonActions.Down:
                buttonDownEvents.First(b => b.Key == button).Value.Enable();
                break;

            case InputButtonActions.Hold:
                buttonHoldEvents.First(b => b.Key == button).Value.Enable();
                break;

            case InputButtonActions.Up:
                buttonUpEvents.First(b => b.Key == button).Value.Enable();
                break;
            }
        }
예제 #19
0
        public void RegisterButton(InputButtons button, InputButtonActions action, Action callback)
        {
            switch (action)
            {
            case InputButtonActions.Down:
                buttonDownEvents.Add(button, new InputEvent(callback));
                break;

            case InputButtonActions.Hold:
                buttonHoldEvents.Add(button, new InputEvent(callback));
                break;

            case InputButtonActions.Up:
                buttonUpEvents.Add(button, new InputEvent(callback));
                break;
            }
        }
예제 #20
0
        private void Calculate()
        {
            var calculation = Input.Replace(" ", "");
            var items       = calculation.Split(OperatorButtons.Select(o => o.Value).ToArray(), StringSplitOptions.RemoveEmptyEntries);

            if (items.Count() < 2)
            {
                return;
            }
            List <CalculatorOperator> operators = new List <CalculatorOperator>();

            foreach (string s in calculation.Where(o => OperatorButtons.Select(b => b.Value).Contains(o.ToString())).Select(o => o.ToString()))
            {
                operators.Add(OperatorButtons.FirstOrDefault(o => o.Value == s) as CalculatorOperator);
            }
            int    opindex    = 0;
            string calcresult = null;

            foreach (var item in items)
            {
                if (calcresult == null)
                {
                    calcresult = item;
                    continue;
                }
                var op = operators[opindex];
                switch (op.OperatorType)
                {
                case OperatorTypes.Add:
                {
                    calcresult = (double.Parse(calcresult) + double.Parse(item)).ToString();
                } break;

                case OperatorTypes.Subtract:
                {
                    calcresult = (double.Parse(calcresult) - double.Parse(item)).ToString();
                } break;

                case OperatorTypes.Multiply:
                {
                    calcresult = (double.Parse(calcresult) * double.Parse(item)).ToString();
                } break;

                case OperatorTypes.Divide:
                {
                    calcresult = (double.Parse(calcresult) / double.Parse(item)).ToString();
                } break;
                }
                opindex++;
            }
            Result = Math.Round(decimal.Parse(calcresult), 2).ToString();
            if (CurrentOperator.OperatorType == OperatorTypes.Equals)
            {
                InputHistory.Clear();
                foreach (var c in Result)
                {
                    ApplyInput(InputButtons.FirstOrDefault(i => i.Value.ToString() == c.ToString()));
                }
            }
            FireChange("Input");
        }
예제 #21
0
파일: Input.cs 프로젝트: MHDante/OrbitVR
 public bool BtnUp(InputButtons button)
 {
     return(!newInputState.IsButtonDown(button));
 }
예제 #22
0
파일: Input.cs 프로젝트: MHDante/OrbitVR
 public bool BtnClicked(InputButtons button)
 {
     return(newInputState.IsButtonDown(button) && !oldInputState.IsButtonDown(button));
 }
예제 #23
0
파일: Input.cs 프로젝트: MHDante/OrbitVR
 public bool BtnReleased(InputButtons button)
 {
     return(!newInputState.IsButtonDown(button) && oldInputState.IsButtonDown(button));
 }
예제 #24
0
 public static InputButtons ClearFlag(this InputButtons self, InputButtons flag)
 {
     return(self & ~flag);
 }
예제 #25
0
        protected override void Release()
        {
            base.Release();

            _inputButtons = null;
        }
예제 #26
0
 public static Boolean HasFlag(this InputButtons self, InputButtons flag)
 {
     return((self & flag) == flag);
 }
예제 #27
0
 public void DisableEvent(InputContexts context, InputButtons button, InputButtonActions action)
 {
     GetByContext(context).DisableButton(button, action);
 }
예제 #28
0
 public void RegisterEvent(InputContexts context, InputButtons button, InputButtonActions action, Action callback)
 {
     GetByContext(context).RegisterButton(button, action, callback);
 }
예제 #29
0
 public bool IsButtonDown(InputButtons button)
 {
     switch(button)
     {
         case InputButtons.A_1: return A_1 == ButtonState.Pressed;
         case InputButtons.X_2: return X_2 == ButtonState.Pressed;
         case InputButtons.B_3: return B_3 == ButtonState.Pressed;
         case InputButtons.Y_4: return Y_4 == ButtonState.Pressed;
         case InputButtons.Dpad_UpArrow: return Dpad_UpArrow == ButtonState.Pressed;
         case InputButtons.Dpad_DownArrow: return Dpad_DownArrow == ButtonState.Pressed;
         case InputButtons.Dpad_RightArrow: return Dpad_RightArrow == ButtonState.Pressed;
         case InputButtons.Dpad_LeftArrow: return Dpad_LeftArrow == ButtonState.Pressed;
         case InputButtons.Select_TAB: return Select_TAB == ButtonState.Pressed;
         case InputButtons.Start_ESC: return Start_ESC == ButtonState.Pressed;
         case InputButtons.LeftBumper_Q: return LeftBumper_Q == ButtonState.Pressed;
         case InputButtons.RightBumper_E: return RightBumper_E == ButtonState.Pressed;
         case InputButtons.LeftTrigger_Mouse2: return LeftTrigger_Mouse2 == ButtonState.Pressed;
         case InputButtons.RightTrigger_Mouse1: return RightTrigger_Mouse1 == ButtonState.Pressed;
         default: return false;
     }
 }
예제 #30
0
 public bool BtnClicked(InputButtons button)
 {
     return newInputState.IsButtonDown(button) && !oldInputState.IsButtonDown(button);
 }
예제 #31
0
 public bool BtnReleased(InputButtons button)
 {
     return !newInputState.IsButtonDown(button) && oldInputState.IsButtonDown(button);
 }
예제 #32
0
 public static InputButtons SetFlag(this InputButtons self, InputButtons flag)
 {
     return(self | flag);
 }
        private void RaiseTileTap(Point tapPoint, InputButtons button, bool pressedDown, bool doubleClicked,
            MouseButtonEventArgs e)
        {
            var allButtons = e != null ? this.GetStateOfAllMouseButtons(e) : InputButtons.None;

            this.TilePressCommand.ExecuteIfAbleTo(
                new TileTapEventArgs(
                    this.GetTileEventArgsFromBoardPoint(tapPoint),
                    button,
                    doubleClicked,
                    pressedDown,
                    allButtons));
        }
예제 #34
0
 public bool BtnUp(InputButtons button)
 {
     return !newInputState.IsButtonDown(button);
 }