Ejemplo n.º 1
0
        // Prepare the MonoGameJoystick configuration system
        internal static void INTERNAL_InitMonoGameJoystick()
        {
            // Get the intended config file path.
            string osConfigFile = "";

            if (Game.Instance.Platform.OSVersion.Equals("Windows"))
            {
                osConfigFile = "MonoGameJoystick.cfg";                 // Oh well.
            }
            else if (Game.Instance.Platform.OSVersion.Equals("Mac OS X"))
            {
                osConfigFile += Environment.GetEnvironmentVariable("HOME");
                if (osConfigFile.Length == 0)
                {
                    // Home wasn't found, so just try file in current directory.
                    osConfigFile = "MonoGameJoystick.cfg";
                }
                else
                {
                    osConfigFile += "/Library/Application Support/MonoGame/MonoGameJoystick.cfg";
                }
            }
            else if (Game.Instance.Platform.OSVersion.Equals("Linux"))
            {
                // Assuming a non-OSX Unix platform will follow the XDG. Which it should.
                osConfigFile += Environment.GetEnvironmentVariable("XDG_CONFIG_HOME");
                if (osConfigFile.Length == 0)
                {
                    osConfigFile += Environment.GetEnvironmentVariable("HOME");
                    if (osConfigFile.Length == 0)
                    {
                        // Home wasn't found, so just try file in current directory.
                        osConfigFile = "MonoGameJoystick.cfg";
                    }
                    else
                    {
                        osConfigFile += "/.config/MonoGame/MonoGameJoystick.cfg";
                    }
                }
                else
                {
                    osConfigFile += "/MonoGame/MonoGameJoystick.cfg";
                }
            }
            else
            {
                throw new Exception("SDL2_GamePad: Platform.OSVersion not handled!");
            }

            // Check to see if we've already got a config...
            if (File.Exists(osConfigFile))
            {
                using (FileStream fileIn = File.OpenRead(osConfigFile))
                {
                    // Load the data into our config struct.
                    XmlSerializer serializer = new XmlSerializer(typeof(MonoGameJoystickConfig));
                    INTERNAL_joystickConfig = (MonoGameJoystickConfig)serializer.Deserialize(fileIn);
                }
            }
            else
            {
                // First of all, just set our config to null values.
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.BUTTON_START);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.BUTTON_BACK);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.BUTTON_A);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.BUTTON_B);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.BUTTON_X);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.BUTTON_Y);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.SHOULDER_LB);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.SHOULDER_RB);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.TRIGGER_LT);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.TRIGGER_RT);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.BUTTON_LSTICK);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.BUTTON_RSTICK);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.DPAD_UP);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.DPAD_DOWN);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.DPAD_LEFT);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.DPAD_RIGHT);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.AXIS_LX);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.AXIS_LY);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.AXIS_RX);
                INTERNAL_ClearButton(ref INTERNAL_joystickConfig.AXIS_RY);

                // Since it doesn't exist, we need to generate the default config.

                // ... but is our directory even there?
                string osConfigDir = osConfigFile.Substring(0, osConfigFile.IndexOf("MonoGameJoystick.cfg"));
                if (!String.IsNullOrEmpty(osConfigDir) && !Directory.Exists(osConfigDir))
                {
                    // Okay, jeez, we're really starting fresh.
                    Directory.CreateDirectory(osConfigDir);
                }

                // Now, create the file.
                using (FileStream fileOut = File.Open(osConfigFile, FileMode.OpenOrCreate))
                {
                    XmlSerializer serializer = new XmlSerializer(typeof(MonoGameJoystickConfig));
                    serializer.Serialize(fileOut, INTERNAL_joystickConfig);
                }
            }
        }
Ejemplo n.º 2
0
        // Prepare the MonoGameJoystick configuration system
        private static void INTERNAL_AutoConfig()
        {
            if (!Init())
            {
                return;
            }

            // Get the intended config file path.
            string osConfigFile = "";

            if (Game.Instance.Platform.OSVersion.Equals("Windows"))
            {
                osConfigFile = "MonoGameJoystick.cfg";                 // Oh well.
            }
            else if (Game.Instance.Platform.OSVersion.Equals("Mac OS X"))
            {
                osConfigFile += Environment.GetEnvironmentVariable("HOME");
                if (osConfigFile.Length == 0)
                {
                    // Home wasn't found, so just try file in current directory.
                    osConfigFile = "MonoGameJoystick.cfg";
                }
                else
                {
                    osConfigFile += "/Library/Application Support/MonoGame/MonoGameJoystick.cfg";
                }
            }
            else if (Game.Instance.Platform.OSVersion.Equals("Linux"))
            {
                // Assuming a non-OSX Unix platform will follow the XDG. Which it should.
                osConfigFile += Environment.GetEnvironmentVariable("XDG_CONFIG_HOME");
                if (osConfigFile.Length == 0)
                {
                    osConfigFile += Environment.GetEnvironmentVariable("HOME");
                    if (osConfigFile.Length == 0)
                    {
                        // Home wasn't found, so just try file in current directory.
                        osConfigFile = "MonoGameJoystick.cfg";
                    }
                    else
                    {
                        osConfigFile += "/.config/MonoGame/MonoGameJoystick.cfg";
                    }
                }
                else
                {
                    osConfigFile += "/MonoGame/MonoGameJoystick.cfg";
                }
            }
            else
            {
                throw new Exception("SDL2_GamePad: Platform.OSVersion not handled!");
            }

            // Check to see if we've already got a config...
            if (File.Exists(osConfigFile))
            {
                // Load the file.
                FileStream fileIn = File.OpenRead(osConfigFile);

                // Load the data into our config struct.
                XmlSerializer serializer = new XmlSerializer(typeof(MonoGameJoystickConfig));
                INTERNAL_joystickConfig = (MonoGameJoystickConfig)serializer.Deserialize(fileIn);

                // We out.
                fileIn.Close();
            }
            else
            {
                // First of all, just set our config to default values.

                // NOTE: These are based on a 360 controller on Linux.

                // Start
                INTERNAL_joystickConfig.BUTTON_START.INPUT_TYPE   = InputType.Button;
                INTERNAL_joystickConfig.BUTTON_START.INPUT_ID     = 7;
                INTERNAL_joystickConfig.BUTTON_START.INPUT_INVERT = false;

                // Back
                INTERNAL_joystickConfig.BUTTON_BACK.INPUT_TYPE   = InputType.Button;
                INTERNAL_joystickConfig.BUTTON_BACK.INPUT_ID     = 6;
                INTERNAL_joystickConfig.BUTTON_BACK.INPUT_INVERT = false;

                // A
                INTERNAL_joystickConfig.BUTTON_A.INPUT_TYPE   = InputType.Button;
                INTERNAL_joystickConfig.BUTTON_A.INPUT_ID     = 0;
                INTERNAL_joystickConfig.BUTTON_A.INPUT_INVERT = false;

                // B
                INTERNAL_joystickConfig.BUTTON_B.INPUT_TYPE   = InputType.Button;
                INTERNAL_joystickConfig.BUTTON_B.INPUT_ID     = 1;
                INTERNAL_joystickConfig.BUTTON_B.INPUT_INVERT = false;

                // X
                INTERNAL_joystickConfig.BUTTON_X.INPUT_TYPE   = InputType.Button;
                INTERNAL_joystickConfig.BUTTON_X.INPUT_ID     = 2;
                INTERNAL_joystickConfig.BUTTON_X.INPUT_INVERT = false;

                // Y
                INTERNAL_joystickConfig.BUTTON_Y.INPUT_TYPE   = InputType.Button;
                INTERNAL_joystickConfig.BUTTON_Y.INPUT_ID     = 3;
                INTERNAL_joystickConfig.BUTTON_Y.INPUT_INVERT = false;

                // LB
                INTERNAL_joystickConfig.SHOULDER_LB.INPUT_TYPE   = InputType.Button;
                INTERNAL_joystickConfig.SHOULDER_LB.INPUT_ID     = 4;
                INTERNAL_joystickConfig.SHOULDER_LB.INPUT_INVERT = false;

                // RB
                INTERNAL_joystickConfig.SHOULDER_RB.INPUT_TYPE   = InputType.Button;
                INTERNAL_joystickConfig.SHOULDER_RB.INPUT_ID     = 5;
                INTERNAL_joystickConfig.SHOULDER_RB.INPUT_INVERT = false;

                // LT
                INTERNAL_joystickConfig.TRIGGER_LT.INPUT_TYPE   = InputType.Axis;
                INTERNAL_joystickConfig.TRIGGER_LT.INPUT_ID     = 2;
                INTERNAL_joystickConfig.TRIGGER_LT.INPUT_INVERT = false;

                // RT
                INTERNAL_joystickConfig.TRIGGER_RT.INPUT_TYPE   = InputType.Axis;
                INTERNAL_joystickConfig.TRIGGER_RT.INPUT_ID     = 5;
                INTERNAL_joystickConfig.TRIGGER_RT.INPUT_INVERT = false;

                // LStick
                INTERNAL_joystickConfig.BUTTON_LSTICK.INPUT_TYPE   = InputType.Button;
                INTERNAL_joystickConfig.BUTTON_LSTICK.INPUT_ID     = 9;
                INTERNAL_joystickConfig.BUTTON_LSTICK.INPUT_INVERT = false;

                // RStick
                INTERNAL_joystickConfig.BUTTON_RSTICK.INPUT_TYPE   = InputType.Button;
                INTERNAL_joystickConfig.BUTTON_RSTICK.INPUT_ID     = 10;
                INTERNAL_joystickConfig.BUTTON_RSTICK.INPUT_INVERT = false;

                // DPad Up
                INTERNAL_joystickConfig.DPAD_UP.INPUT_TYPE   = InputType.PovUp;
                INTERNAL_joystickConfig.DPAD_UP.INPUT_ID     = 0;
                INTERNAL_joystickConfig.DPAD_UP.INPUT_INVERT = false;

                // DPad Down
                INTERNAL_joystickConfig.DPAD_DOWN.INPUT_TYPE   = InputType.PovDown;
                INTERNAL_joystickConfig.DPAD_DOWN.INPUT_ID     = 0;
                INTERNAL_joystickConfig.DPAD_DOWN.INPUT_INVERT = false;

                // DPad Left
                INTERNAL_joystickConfig.DPAD_LEFT.INPUT_TYPE   = InputType.PovLeft;
                INTERNAL_joystickConfig.DPAD_LEFT.INPUT_ID     = 0;
                INTERNAL_joystickConfig.DPAD_LEFT.INPUT_INVERT = false;

                // DPad Right
                INTERNAL_joystickConfig.DPAD_RIGHT.INPUT_TYPE   = InputType.PovRight;
                INTERNAL_joystickConfig.DPAD_RIGHT.INPUT_ID     = 0;
                INTERNAL_joystickConfig.DPAD_RIGHT.INPUT_INVERT = false;

                // LX
                INTERNAL_joystickConfig.AXIS_LX.INPUT_TYPE   = InputType.Axis;
                INTERNAL_joystickConfig.AXIS_LX.INPUT_ID     = 0;
                INTERNAL_joystickConfig.AXIS_LX.INPUT_INVERT = false;

                // LY
                INTERNAL_joystickConfig.AXIS_LY.INPUT_TYPE   = InputType.Axis;
                INTERNAL_joystickConfig.AXIS_LY.INPUT_ID     = 1;
                INTERNAL_joystickConfig.AXIS_LY.INPUT_INVERT = false;

                // RX
                INTERNAL_joystickConfig.AXIS_RX.INPUT_TYPE   = InputType.Axis;
                INTERNAL_joystickConfig.AXIS_RX.INPUT_ID     = 3;
                INTERNAL_joystickConfig.AXIS_RX.INPUT_INVERT = false;

                // RY
                INTERNAL_joystickConfig.AXIS_RY.INPUT_TYPE   = InputType.Axis;
                INTERNAL_joystickConfig.AXIS_RY.INPUT_ID     = 4;
                INTERNAL_joystickConfig.AXIS_RY.INPUT_INVERT = false;


                // Since it doesn't exist, we need to generate the default config.

                // ... but is our directory even there?
                string osConfigDir = osConfigFile.Substring(0, osConfigFile.IndexOf("MonoGameJoystick.cfg"));
                if (!String.IsNullOrEmpty(osConfigDir) && !Directory.Exists(osConfigDir))
                {
                    // Okay, jeez, we're really starting fresh.
                    Directory.CreateDirectory(osConfigDir);
                }

                // So, create the file.
                FileStream    fileOut    = File.Open(osConfigFile, FileMode.OpenOrCreate);
                XmlSerializer serializer = new XmlSerializer(typeof(MonoGameJoystickConfig));
                serializer.Serialize(fileOut, INTERNAL_joystickConfig);

                // We out.
                fileOut.Close();
            }

            // Limit to the first 4 sticks to avoid crashes.
            int numSticks = Math.Min(4, SDL.SDL_NumJoysticks());

            for (int x = 0; x < numSticks; x += 1)
            {
                INTERNAL_AddInstance(x);
            }
        }
Ejemplo n.º 3
0
        // Prepare the MonoGameJoystick configuration system
        internal static void INTERNAL_InitMonoGameJoystick()
        {
            // Get the intended config file path.
            string osConfigFile = String.Empty;

            if (Game.Instance.Platform.OSVersion.Equals("Windows"))
            {
                osConfigFile = "MonoGameJoystick.cfg";                 // Oh well.
            }
            else if (Game.Instance.Platform.OSVersion.Equals("Mac OS X"))
            {
                osConfigFile += Environment.GetEnvironmentVariable("HOME");
                if (osConfigFile.Length == 0)
                {
                    // Home wasn't found, so just try file in current directory.
                    osConfigFile = "MonoGameJoystick.cfg";
                }
                else
                {
                    osConfigFile += "/Library/Application Support/MonoGame/MonoGameJoystick.cfg";
                }
            }
            else if (Game.Instance.Platform.OSVersion.Equals("Linux"))
            {
                // Assuming a non-OSX Unix platform will follow the XDG. Which it should.
                osConfigFile += Environment.GetEnvironmentVariable("XDG_CONFIG_HOME");
                if (osConfigFile.Length == 0)
                {
                    osConfigFile += Environment.GetEnvironmentVariable("HOME");
                    if (osConfigFile.Length == 0)
                    {
                        // Home wasn't found, so just try file in current directory.
                        osConfigFile = "MonoGameJoystick.cfg";
                    }
                    else
                    {
                        osConfigFile += "/.config/MonoGame/MonoGameJoystick.cfg";
                    }
                }
                else
                {
                    osConfigFile += "/MonoGame/MonoGameJoystick.cfg";
                }
            }
            else
            {
                throw new Exception("SDL2_GamePad: Platform.OSVersion not handled!");
            }

            // Check to see if we've already got a config...
            if (File.Exists(osConfigFile))
            {
                using (FileStream fileIn = File.OpenRead(osConfigFile))
                {
                    // Load the data into our config struct.
                    XmlSerializer serializer = new XmlSerializer(typeof(MonoGameJoystickConfig));
                    INTERNAL_joystickConfig = (MonoGameJoystickConfig)serializer.Deserialize(fileIn);
                }
            }
            else
            {
                // Since it doesn't exist, we need to generate the default config.
                INTERNAL_joystickConfig = Platform.CreateJoystickConfig(osConfigFile);
            }
        }
Ejemplo n.º 4
0
        // Prepare the MonoGameJoystick configuration system
        internal static void INTERNAL_InitMonoGameJoystick()
        {
            // Get the intended config file path.
            string osConfigFile = String.Empty;
            if (Game.Instance.Platform.OSVersion.Equals("Windows"))
            {
                osConfigFile = "MonoGameJoystick.cfg"; // Oh well.
            }
            else if (Game.Instance.Platform.OSVersion.Equals("Mac OS X"))
            {
                osConfigFile += Environment.GetEnvironmentVariable("HOME");
                if (osConfigFile.Length == 0)
                {
                    // Home wasn't found, so just try file in current directory.
                    osConfigFile = "MonoGameJoystick.cfg";
                }
                else
                {
                    osConfigFile += "/Library/Application Support/MonoGame/MonoGameJoystick.cfg";
                }
            }
            else if (Game.Instance.Platform.OSVersion.Equals("Linux"))
            {
                // Assuming a non-OSX Unix platform will follow the XDG. Which it should.
                osConfigFile += Environment.GetEnvironmentVariable("XDG_CONFIG_HOME");
                if (osConfigFile.Length == 0)
                {
                    osConfigFile += Environment.GetEnvironmentVariable("HOME");
                    if (osConfigFile.Length == 0)
                    {
                        // Home wasn't found, so just try file in current directory.
                        osConfigFile = "MonoGameJoystick.cfg";
                    }
                    else
                    {
                        osConfigFile += "/.config/MonoGame/MonoGameJoystick.cfg";
                    }
                }
                else
                {
                    osConfigFile += "/MonoGame/MonoGameJoystick.cfg";
                }
            }
            else
            {
                throw new Exception("SDL2_GamePad: Platform.OSVersion not handled!");
            }

            // Check to see if we've already got a config...
            if (File.Exists(osConfigFile))
            {
                using (FileStream fileIn = File.OpenRead(osConfigFile))
                {
                    // Load the data into our config struct.
                    XmlSerializer serializer = new XmlSerializer(typeof(MonoGameJoystickConfig));
                    INTERNAL_joystickConfig = (MonoGameJoystickConfig) serializer.Deserialize(fileIn);
                }
            }
            else
            {
                // Since it doesn't exist, we need to generate the default config.
                INTERNAL_joystickConfig = new MonoGameJoystickConfig();

                // ... but is our directory even there?
                string osConfigDir = osConfigFile.Substring(0, osConfigFile.IndexOf("MonoGameJoystick.cfg"));
                if (!String.IsNullOrEmpty(osConfigDir) && !Directory.Exists(osConfigDir))
                {
                    // Okay, jeez, we're really starting fresh.
                    Directory.CreateDirectory(osConfigDir);
                }

                // Now, create the file.
                using (FileStream fileOut = File.Open(osConfigFile, FileMode.OpenOrCreate))
                {
                    XmlSerializer serializer = new XmlSerializer(typeof(MonoGameJoystickConfig));
                    serializer.Serialize(fileOut, INTERNAL_joystickConfig);
                }
            }
        }