Exemplo n.º 1
0
        /// <summary>
        /// Main method for handling raw data from socket.
        /// </summary>
        /// <param name="data">Byte array representing UTF8 string.</param>
        /// <returns>Bool indicating whether data was ingested.</returns>
        public static PocketStrafeInput GetData(byte[] data)
        {
            // Handle empty data case
            if (data.Length == 0)
            {
                throw new PocketStrafeDataException("Data was length zero");
            }

            // Split on $ for main categories
            string[] arr = System.Text.Encoding.UTF8.GetString(data).Split('$');

            // Split on : for main data values
            string[] ints = arr[PocketStrafePacketIndex.Vals].Split(':');

            var d = new PocketStrafeInput()
            {
                deviceNumber = int.Parse(arr[PocketStrafePacketIndex.DeviceNumber]),
                packetNumber = int.Parse(arr[PocketStrafePacketIndex.PacketNumber]),
                buttons      = int.Parse(arr[PocketStrafePacketIndex.Buttons]),
                speed        = int.Parse(ints[PocketStrafePacketIndex.Speed]) / 1000.0,
                POV          = Algorithm.WrapAngle(-int.Parse(ints[PocketStrafePacketIndex.POV]) / 1000.0),
                validPOV     = int.Parse(arr[PocketStrafePacketIndex.ValidPOV]) != PocketStrafeDataMode.NoGyro
            };

            return(d);
        }
Exemplo n.º 2
0
        public void AddInput(PocketStrafeInput input)
        {
            _State.Speed += input.speed;

            if ((input.buttons & 32768) != 0)                              // Y button pressed on phone
            {
                input.buttons = (short.MinValue | input.buttons & ~32768); // Y button pressed in terms of XInput
            }
            _State.Buttons = (PocketStrafeButtons)input.buttons;
        }
Exemplo n.º 3
0
        public PocketStrafeMobileDevice()
        {
            this.State      = new PocketStrafeInput();
            this.Ready      = false;
            this._Count     = 0;
            this._LastCount = 0;

            DeviceTimeoutTimer.AutoReset = true;
            DeviceTimeoutTimer.Interval  = DeviceTimeout;
            DeviceTimeoutTimer.Elapsed  += CheckDeviceTimeout;
            DeviceTimeoutTimer.Enabled   = true;
        }
        public void AddInput(PocketStrafeInput input)
        {
            _UserIsRunning = input.speed > 0.1;
            if (_Coupled)
            {
                _State.Y  += SignY * input.speed * _MaxAxis / 2;
                _State.POV = input.POV;
            }
            else
            {
                _State.X  += SignX * Math.Sin(input.POV * Math.PI / 180) * input.speed * _MaxAxis / 2;
                _State.Y  += SignY * Math.Cos(input.POV * Math.PI / 180) * input.speed * _MaxAxis / 2;
                _State.POV = input.POV / 360 * _MaxPov;
            }

            if ((input.buttons & 32768) != 0)                              // Y button pressed on phone
            {
                input.buttons = (short.MinValue | input.buttons & ~32768); // Y button pressed in terms of XInput
            }
            _State.Buttons = (PocketStrafeButtons)input.buttons;
        }
Exemplo n.º 5
0
 public void SetState(PocketStrafeInput newState)
 {
     State = newState;
     _Count++;
 }
 public void AddInput(PocketStrafeInput input)
 {
     _State.Speed += input.speed;
 }