Пример #1
0
        /// <summary>
        /// Reads the bound button or key from the given control to bypass control blocking.
        /// </summary>
        public static bool IsControlPressedIgnoreBlock(MyStringId controlId, bool newPress = false)
        {
            IMyControl control = MyAPIGateway.Input.GetGameControl(controlId);

            // WARNING: IsKeyPress(MyKeys.None) returns true for some people!

            if (newPress)
            {
                MyMouseButtonsEnum button = control.GetMouseControl();
                if (button != MyMouseButtonsEnum.None && MyAPIGateway.Input.IsNewMousePressed(button))
                {
                    return(true);
                }

                MyKeys kb1 = control.GetKeyboardControl();
                if (kb1 != MyKeys.None && MyAPIGateway.Input.IsNewKeyPressed(kb1))
                {
                    return(true);
                }

                MyKeys kb2 = control.GetSecondKeyboardControl();
                if (kb2 != MyKeys.None && MyAPIGateway.Input.IsNewKeyPressed(kb2))
                {
                    return(true);
                }
            }
            else
            {
                MyMouseButtonsEnum button = control.GetMouseControl();
                if (button != MyMouseButtonsEnum.None && MyAPIGateway.Input.IsMousePressed(button))
                {
                    return(true);
                }

                MyKeys kb1 = control.GetKeyboardControl();
                if (kb1 != MyKeys.None && MyAPIGateway.Input.IsKeyPress(kb1))
                {
                    return(true);
                }

                MyKeys kb2 = control.GetSecondKeyboardControl();
                if (kb2 != MyKeys.None && MyAPIGateway.Input.IsKeyPress(kb2))
                {
                    return(true);
                }
            }

            return(false);
        }
Пример #2
0
        public static string GetAssignedGameControlNames(IMyControl control)
        {
            var inputs = new List<string>();

            if(control.GetMouseControl() != MyMouseButtonsEnum.None)
                inputs.Add(Input.GetName(control.GetMouseControl()));

            if(control.GetKeyboardControl() != MyKeys.None)
                inputs.Add(Input.GetKeyName(control.GetKeyboardControl()));

            if(control.GetSecondKeyboardControl() != MyKeys.None)
                inputs.Add(Input.GetKeyName(control.GetSecondKeyboardControl()));

            return (inputs.Count == 0 ? Input.GetUnassignedName() : string.Join(" or ", inputs));
        }
Пример #3
0
        public static string GetAssignedGameControlNames(IMyControl control, bool oneResult = false)
        {
            List <string> inputs = (oneResult ? null : new List <string>());

            if (control.GetMouseControl() != MyMouseButtonsEnum.None)
            {
                string name = Input.GetName(control.GetMouseControl());

                if (oneResult)
                {
                    return(name);
                }
                else
                {
                    inputs.Add(name);
                }
            }

            if (control.GetKeyboardControl() != MyKeys.None)
            {
                string name = Input.GetKeyName(control.GetKeyboardControl());

                if (oneResult)
                {
                    return(name);
                }
                else
                {
                    inputs.Add(name);
                }
            }

            if (control.GetSecondKeyboardControl() != MyKeys.None)
            {
                string name = Input.GetKeyName(control.GetSecondKeyboardControl());

                if (oneResult)
                {
                    return(name);
                }
                else
                {
                    inputs.Add(name);
                }
            }

            return(oneResult || inputs.Count == 0 ? "{Unassigned:" + control.GetControlName() + "}" : string.Join(" or ", inputs));
        }
Пример #4
0
        public string GetFriendlyString(bool xboxChars = true)
        {
            List <string> combined = new List <string>();

            foreach (object o in combination)
            {
                if (o is MyStringId)
                {
                    IMyControl control = MyAPIGateway.Input.GetGameControl((MyStringId)o);

                    if (control.GetMouseControl() != MyMouseButtonsEnum.None)
                    {
                        combined.Add(InputHandler.inputNames[control.GetMouseControl()]);
                    }
                    else if (control.GetKeyboardControl() != MyKeys.None)
                    {
                        combined.Add(InputHandler.inputNames[control.GetKeyboardControl()]);
                    }
                    else if (control.GetSecondKeyboardControl() != MyKeys.None)
                    {
                        combined.Add(InputHandler.inputNames[control.GetSecondKeyboardControl()]);
                    }
                    else
                    {
                        combined.Add(InputHandler.inputNames[control]);
                    }
                }
                else if (xboxChars && (o is MyJoystickAxesEnum || o is MyJoystickButtonsEnum))
                {
                    char c = InputHandler.xboxCodes.GetValueOrDefault(o, ' ');
                    combined.Add(c == ' ' ? InputHandler.inputNames[o] : c.ToString());
                }
                else
                {
                    combined.Add(InputHandler.inputNames[o]);
                }
            }

            return(String.Join(" ", combined));
        }
Пример #5
0
        public static string GetFriendlyStringForControl(IMyControl control)
        {
            tmp.Clear();

            if (control.GetKeyboardControl() != MyKeys.None)
            {
                if (tmp.Length > 0)
                {
                    tmp.Append(" or ");
                }

                string def = control.GetKeyboardControl().ToString();
                tmp.Append(inputNiceNames.GetValueOrDefault(inputNames.GetValueOrDefault(control.GetKeyboardControl(), def), def));
            }

            if (control.GetMouseControl() != MyMouseButtonsEnum.None)
            {
                string def = control.GetMouseControl().ToString();
                tmp.Append(inputNiceNames.GetValueOrDefault(inputNames.GetValueOrDefault(control.GetMouseControl(), def), def));
            }
            else if (control.GetSecondKeyboardControl() != MyKeys.None)
            {
                if (tmp.Length > 0)
                {
                    tmp.Append(" or ");
                }

                string def = control.GetSecondKeyboardControl().ToString();
                tmp.Append(inputNiceNames.GetValueOrDefault(inputNames.GetValueOrDefault(control.GetSecondKeyboardControl(), def), def));
            }

            string val = tmp.ToString();

            tmp.Clear();
            return(val);
        }
Пример #6
0
        public static string GetFriendlyStringForControl(IMyControl control)
        {
            tmp.Clear();

            if(control.GetKeyboardControl() != MyKeys.None)
            {
                if(tmp.Length > 0)
                    tmp.Append(" or ");

                var def = control.GetKeyboardControl().ToString();
                tmp.Append(inputNiceNames.GetValueOrDefault(inputNames.GetValueOrDefault(control.GetKeyboardControl(), def), def));
            }

            if(control.GetMouseControl() != MyMouseButtonsEnum.None)
            {
                var def = control.GetMouseControl().ToString();
                tmp.Append(inputNiceNames.GetValueOrDefault(inputNames.GetValueOrDefault(control.GetMouseControl(), def), def));
            }
            else if(control.GetSecondKeyboardControl() != MyKeys.None)
            {
                if(tmp.Length > 0)
                    tmp.Append(" or ");

                var def = control.GetSecondKeyboardControl().ToString();
                tmp.Append(inputNiceNames.GetValueOrDefault(inputNames.GetValueOrDefault(control.GetSecondKeyboardControl(), def), def));
            }

            var val = tmp.ToString();
            tmp.Clear();
            return val;
        }