Exemplo n.º 1
0
 protected void JoypadConnectionEvent(IJoypad j, bool connected)
 {
     JoypadConnection?.Invoke(this, new JoypadConnectionEventArgs
     {
         Connected = connected,
         Joypad    = j
     });
 }
Exemplo n.º 2
0
        /// <summary>Assigns a specific joypad.</summary>
        /// <param name="joypadIndex">The idnex of the joypad to assign.</param>
        /// <param name="joypad">The joypad instance to use, or null to unassign.</param>
        public IJoypad SetJoypad(int joypadIndex, IJoypad joypad)
        {
            joypad = joypad ?? DummyJoypad.Instance;

            switch (joypadIndex)
            {
            case 0: return(SwapJoypad(ref joypad0, joypad));

            case 1: return(SwapJoypad(ref joypad1, joypad));

            case 2: return(SwapJoypad(ref joypad2, joypad));

            case 3: return(SwapJoypad(ref joypad3, joypad));

            default: throw new ArgumentOutOfRangeException(nameof(joypad));
            }
        }
Exemplo n.º 3
0
        private static IJoypad SwapJoypad(ref IJoypad storage, IJoypad newValue)
        {
            var oldValue = Interlocked.Exchange(ref storage, newValue);

            return(oldValue is DummyJoypad ? null : oldValue);
        }