/// <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); }