Пример #1
0
                /// <summary>
                /// Removes the control at the index specified.
                /// </summary>
                private void RemoveControl(int index)
                {
                    List <IControl> combo = new List <IControl>(bind.GetCombo());

                    if (index < combo.Count)
                    {
                        if (index == 0 && combo.Count == 1)
                        {
                            bind.ClearCombo();
                            UpdateBindText();
                        }
                        else
                        {
                            combo.RemoveAt(index);

                            if (bind.TrySetCombo(combo.ToArray(), false))
                            {
                                UpdateBindText();
                            }
                        }
                    }
                }
                /// <summary>
                /// Returns or sets the member associated with the given enum of the bind at the given index .
                /// </summary>
                private object GetOrSetBindMember(Vector2I index, object data, int memberEnum)
                {
                    IBind bind = bindGroups[index.X][index.Y];

                    switch ((BindAccesssors)memberEnum)
                    {
                    case BindAccesssors.Name:
                        return(bind.Name);

                    case BindAccesssors.Analog:
                        return(bind.Analog);

                    case BindAccesssors.Index:
                        return(bind.Index);

                    case BindAccesssors.IsPressed:
                        return(bind.IsPressed);

                    case BindAccesssors.IsNewPressed:
                        return(bind.IsNewPressed);

                    case BindAccesssors.IsPressedAndHeld:
                        return(bind.IsPressedAndHeld);

                    case BindAccesssors.OnNewPress:
                    {
                        var eventData = (MyTuple <bool, Action>)data;

                        if (eventData.Item1)
                        {
                            bind.NewPressed += eventData.Item2;
                        }
                        else
                        {
                            bind.NewPressed -= eventData.Item2;
                        }

                        break;
                    }

                    case BindAccesssors.OnPressAndHold:
                    {
                        var eventData = (MyTuple <bool, Action>)data;

                        if (eventData.Item1)
                        {
                            bind.PressedAndHeld += eventData.Item2;
                        }
                        else
                        {
                            bind.PressedAndHeld -= eventData.Item2;
                        }

                        break;
                    }

                    case BindAccesssors.OnRelease:
                    {
                        var eventData = (MyTuple <bool, Action>)data;

                        if (eventData.Item1)
                        {
                            bind.Released += eventData.Item2;
                        }
                        else
                        {
                            bind.Released -= eventData.Item2;
                        }

                        break;
                    }

                    case BindAccesssors.GetCombo:
                        return(bind.GetComboIndices());

                    case BindAccesssors.TrySetComboWithIndices:
                    {
                        var comboData = (MyTuple <IReadOnlyList <int>, bool, bool>)data;
                        return(bind.TrySetCombo(comboData.Item1, comboData.Item2, comboData.Item3));
                    }

                    case BindAccesssors.TrySetComboWithNames:
                    {
                        var comboData = (MyTuple <IReadOnlyList <string>, bool, bool>)data;
                        return(bind.TrySetCombo(comboData.Item1, comboData.Item2, comboData.Item3));
                    }

                    case BindAccesssors.ClearCombo:
                        bind.ClearCombo(); break;

                    case BindAccesssors.ClearSubscribers:
                        bind.ClearSubscribers(); break;
                    }

                    return(null);
                }