Beispiel #1
0
 protected void JoypadConnectionEvent(IJoypad j, bool connected)
 {
     JoypadConnection?.Invoke(this, new JoypadConnectionEventArgs
     {
         Connected = connected,
         Joypad    = j
     });
 }
Beispiel #2
0
        /// <summary>
        /// Initialize this module.
        /// </summary>
        public override void Initialize()
        {
            base.Initialize();

            HardwareInput = Host.Platform.GetInput(Host.Window);
            HardwareInput.Initialize();

            HardwareInput.JoypadConnection += (obj, e) =>
            {
                if (!InputStates.ContainsKey(e.Joypad))
                {
                    InputStates.Add(e.Joypad, new InputState());
                }

                if (e.Connected)
                {
                    Joypads.Add(new VirtualJoypad(InputStates?[e.Joypad], e.Joypad.Index, e.Joypad.Name));
                }
                else
                {
                    Joypads.RemoveAt(Joypads.FindIndex(x => x.Index == e.Joypad.Index));
                }

                JoypadConnection?.Invoke(obj, e);
            };

            InputStates.Add(HardwareKeyboard, new InputState());
            InputStates.Add(HardwareMouse, new InputState());

            HardwareKeyboard.OnTypeWithMods += HardwareKeyboard_OnTypeWithMods;
            HardwareKeyboard.OnKeyEvent     += HardwareKeyboard_OnKeyEvent;
            HardwareKeyboard.OnType         += HardwareKeyboard_OnType;

            HardwareMouse.OnButtonEvent += HardwareMouse_OnButtonEvent;
            HardwareMouse.OnScroll      += HardwareMouse_OnScroll;
            HardwareMouse.OnMove        += HardwareMouse_OnMove;

            foreach (var j in HardwareJoypads)
            {
                Joypads.Add(new VirtualJoypad(null, j.Index, j.Name));
            }
        }