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