Esempio n. 1
0
                /// <summary>
                /// Updates the buttons for the bind controls to reflect the current configuration.
                /// </summary>
                private void UpdateBindText()
                {
                    bindName.Text = bind.Name;
                    List <IControl> combo = bind.GetCombo();

                    if (combo != null && combo.Count > 0)
                    {
                        if (!group.DoesComboConflict(combo, bind))
                        {
                            bindName.TextBoard.SetFormatting(GlyphFormat.Blueish);
                        }
                        else
                        {
                            bindName.TextBoard.SetFormatting(TerminalFormatting.WarningFormat);
                        }

                        con1.Text = combo[0].DisplayName;

                        if (combo.Count > 1)
                        {
                            con2.Text = combo[1].DisplayName;
                        }
                        else
                        {
                            con2.Text = "none";
                        }

                        if (combo.Count > 2)
                        {
                            con3.Text = combo[2].DisplayName;
                        }
                        else
                        {
                            con3.Text = "none";
                        }
                    }
                    else
                    {
                        bindName.TextBoard.SetFormatting(TerminalFormatting.WarningFormat);
                        con1.Text = "none";
                        con2.Text = "none";
                        con3.Text = "none";
                    }
                }
                private object GetOrSetGroupMember(int index, object data, int memberEnum)
                {
                    IBindGroup group = bindGroups[index];

                    switch ((BindGroupAccessors)memberEnum)
                    {
                    case BindGroupAccessors.Name:
                        return(group.Name);

                    case BindGroupAccessors.GetBindFromName:
                        return(new Vector2I(group.Index, group.GetBind(data as string)?.Index ?? -1));

                    case BindGroupAccessors.DoesBindExist:
                        return(group.DoesBindExist(data as string));

                    case BindGroupAccessors.RegisterBindNames:
                        group.RegisterBinds(data as IReadOnlyList <string>); break;

                    case BindGroupAccessors.RegisterBindIndices:
                        group.RegisterBinds(data as IReadOnlyList <MyTuple <string, IReadOnlyList <int> > >); break;

                    case BindGroupAccessors.RegisterBindDefinitions:
                        group.RegisterBinds(data as IReadOnlyList <BindDefinitionData>); break;

                    case BindGroupAccessors.AddBindWithIndices:
                    {
                        var args = (MyTuple <string, IReadOnlyList <int> >)data;
                        return(new Vector2I(group.Index, group.AddBind(args.Item1, args.Item2).Index));
                    }

                    case BindGroupAccessors.AddBindWithNames:
                    {
                        var args = (MyTuple <string, IReadOnlyList <string> >)data;
                        return(new Vector2I(group.Index, group.AddBind(args.Item1, args.Item2).Index));
                    }

                    case BindGroupAccessors.DoesComboConflict:
                    {
                        var args = (MyTuple <IReadOnlyList <int>, int>)data;
                        return(group.DoesComboConflict(args.Item1, args.Item2));
                    }

                    case BindGroupAccessors.TryRegisterBindName:
                    {
                        IBind bind;
                        bool  success = group.TryRegisterBind(data as string, out bind);

                        return(success ? bind.Index : -1);
                    }

                    case BindGroupAccessors.TryRegisterBindWithIndices:
                    {
                        var args = (MyTuple <string, IReadOnlyList <int> >)data;

                        IBind bind;
                        bool  success = group.TryRegisterBind(args.Item1, out bind, args.Item2);

                        return(success ? bind.Index : -1);
                    }

                    case BindGroupAccessors.TryRegisterBindWithNames:
                    {
                        var args = (MyTuple <string, IReadOnlyList <string> >)data;

                        IBind bind;
                        bool  success = group.TryRegisterBind(args.Item1, out bind, args.Item2);

                        return(success ? bind.Index : -1);
                    }

                    case BindGroupAccessors.TryLoadBindData:
                    {
                        var arg = data as IReadOnlyList <BindDefinitionData>;
                        return(group.TryLoadBindData(arg));
                    }

                    case BindGroupAccessors.GetBindData:
                        return(group.GetBindData());

                    case BindGroupAccessors.ClearSubscribers:
                        group.ClearSubscribers();
                        break;

                    case BindGroupAccessors.ID:
                        return(group);
                    }

                    return(null);
                }