Esempio n. 1
0
        private static void UpdateBind(string bindName, string[] controls)
        {
            IBind bind = BvBinds.ModifierGroup.GetBind(bindName);

            if (bind == null)
            {
                bind = BvBinds.MainGroup.GetBind(bindName);
            }

            if (bind == null)
            {
                ExceptionHandler.SendChatMessage("Error: The bind specified could not be found.");
            }
            else
            {
                bind.TrySetCombo(controls, true, false);
            }
        }
Esempio n. 2
0
                /// <summary>
                /// Replaces current bind combos with combos based on the given <see cref="BindDefinition"/>[]. Does not register new binds.
                /// </summary>
                public bool TryLoadBindData(IReadOnlyList <BindDefinition> bindData)
                {
                    List <IControl>      oldUsedControls;
                    List <List <IBind> > oldBindMap;
                    bool bindError = false;

                    if (bindData != null && bindData.Count > 0)
                    {
                        oldUsedControls = usedControls;
                        oldBindMap      = bindMap;

                        UnregisterControls();
                        usedControls = new List <IControl>(bindData.Count);
                        bindMap      = new List <List <IBind> >(bindData.Count);

                        foreach (BindDefinition bindDef in bindData)
                        {
                            IBind bind = GetBind(bindDef.name);

                            if (bind != null && !bind.TrySetCombo(bindDef.controlNames, false, false))
                            {
                                bindError = true;
                                break;
                            }
                        }

                        if (bindError)
                        {
                            UnregisterControls();

                            usedControls = oldUsedControls;
                            bindMap      = oldBindMap;
                            ReregisterControls();
                        }
                        else
                        {
                            return(true);
                        }
                    }

                    return(false);
                }
Esempio n. 3
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);
                }