Exemplo n.º 1
0
        private void InitializeButtonBindingV2(object settings, PropertyInfo prop)
        {
            if (!(prop.GetValue(settings) is ButtonBinding binding))
            {
                binding = new ButtonBinding();

                DefaultButtonBindingAttribute defaults = prop.GetCustomAttribute <DefaultButtonBindingAttribute>();
                if (defaults != null)
                {
                    if (defaults.Button != 0)
                    {
                        binding.Binding.Add(defaults.Button);
                    }
                    if (defaults.Key != 0)
                    {
                        binding.Binding.Add(defaults.Key);
                    }
                }

                prop.SetValue(settings, binding);
            }

            binding.Button = (patch_VirtualButton_InputV1) new VirtualButton(binding.Binding, Input.Gamepad, 0.08f, 0.2f);
            ((patch_VirtualButton_InputV2)(VirtualButton)binding.Button).AutoConsumeBuffer = true;
        }
 public ButtonBindingEntry(string name, bool supportsMultipleBindings, ButtonBinding binding, DefaultButtonBindingAttribute defaults)
 {
     Name = name;
     SupportsMultipleBindings = supportsMultipleBindings;
     Binding  = binding;
     Defaults = defaults;
 }
Exemplo n.º 3
0
        private void InitializeButtonBindingV1(object settings, PropertyInfo prop)
        {
            if (!(prop.GetValue(settings) is ButtonBinding binding))
            {
                binding = new ButtonBinding();

                DefaultButtonBindingAttribute defaults = prop.GetCustomAttribute <DefaultButtonBindingAttribute>();
                if (defaults != null)
                {
                    if (defaults.Button != 0)
                    {
                        binding.Buttons.Add(defaults.Button);
                    }
                    if (defaults.Key != 0)
                    {
                        binding.Keys.Add(defaults.Key);
                    }
                }

                prop.SetValue(settings, binding);
            }

            patch_VirtualButton_InputV1 vbutton = new patch_VirtualButton_InputV1();

            foreach (Keys key in binding.Keys)
            {
                vbutton.Nodes.Add(new patch_VirtualButton_InputV1.KeyboardKey(key));
            }

            foreach (Buttons button_ in binding.Buttons)
            {
                Buttons button = button_;
                if ((button & Buttons.LeftTrigger) == Buttons.LeftTrigger)
                {
                    vbutton.Nodes.Add(new patch_VirtualButton_InputV1.PadLeftTrigger(Input.Gamepad, 0.25f));
                    button &= ~Buttons.LeftTrigger;
                }
                if ((button & Buttons.RightTrigger) == Buttons.RightTrigger)
                {
                    vbutton.Nodes.Add(new patch_VirtualButton_InputV1.PadLeftTrigger(Input.Gamepad, 0.25f));
                    button &= ~Buttons.RightTrigger;
                }
                if (button != 0)
                {
                    vbutton.Nodes.Add(new patch_VirtualButton_InputV1.PadButton(Input.Gamepad, button));
                }
            }

            binding.Button = vbutton;
        }
 public ButtonBindingEntry(string name, ButtonBinding binding, DefaultButtonBindingAttribute defaults)
 {
     Name     = name;
     Binding  = binding;
     Defaults = defaults;
 }
Exemplo n.º 5
0
 public ButtonBindingEntry(ButtonBinding binding, DefaultButtonBindingAttribute defaults)
 {
     Binding  = binding;
     Defaults = defaults;
 }
Exemplo n.º 6
0
        public virtual void OnInputInitialize()
        {
            if (SettingsType == null)
            {
                return;
            }

            object settings = _Settings;

            if (settings == null)
            {
                return;
            }

            foreach (PropertyInfo prop in SettingsType.GetProperties())
            {
                if (!prop.CanRead)
                {
                    continue;
                }

                if (typeof(ButtonBinding).IsAssignableFrom(prop.PropertyType))
                {
                    if (!(prop.GetValue(settings) is ButtonBinding binding))
                    {
                        binding = new ButtonBinding();

                        DefaultButtonBindingAttribute defaults = prop.GetCustomAttribute <DefaultButtonBindingAttribute>();
                        if (defaults != null)
                        {
                            if (defaults.Button != 0)
                            {
                                binding.Buttons.Add(defaults.Button);
                            }
                            if (defaults.Key != 0)
                            {
                                binding.Keys.Add(defaults.Key);
                            }
                        }

                        prop.SetValue(settings, binding);
                    }

                    VirtualButton vbutton = new VirtualButton();
                    foreach (Keys key in binding.Keys)
                    {
                        vbutton.Nodes.Add(new VirtualButton.KeyboardKey(key));
                    }

                    foreach (Buttons button_ in binding.Buttons)
                    {
                        Buttons button = button_;
                        if ((button & Buttons.LeftTrigger) == Buttons.LeftTrigger)
                        {
                            vbutton.Nodes.Add(new VirtualButton.PadLeftTrigger(Input.Gamepad, 0.25f));
                            button &= ~Buttons.LeftTrigger;
                        }
                        if ((button & Buttons.RightTrigger) == Buttons.RightTrigger)
                        {
                            vbutton.Nodes.Add(new VirtualButton.PadLeftTrigger(Input.Gamepad, 0.25f));
                            button &= ~Buttons.RightTrigger;
                        }
                        if (button != 0)
                        {
                            vbutton.Nodes.Add(new VirtualButton.PadButton(Input.Gamepad, button));
                        }
                    }

                    binding.Button = vbutton;
                }
                else if (false)
                {
                    // TODO: JoystickBindings
                }
            }
        }