Exemplo n.º 1
0
        /// <summary>
        /// Saves a Sonic Heroes configuration file based off of the Sonic_Heroes_Configuration_File struct.
        /// </summary>
        public static void Save_Configuration_File(Sonic_Heroes_Configuration_File ConfigFile)
        {
            string ConfigFilePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\SEGA\SONICHEROES\sonic_h.ini";

            System.IO.StreamWriter INIConfigFile = new System.IO.StreamWriter(ConfigFilePath);

            string PadControls1 = ""; foreach (byte PadButton in ConfigFile.ControllerOne)
            {
                PadControls1 = PadControls1 + " " + PadButton;
            }
            string PadControls2 = ""; foreach (byte PadButton in ConfigFile.ControllerTwo)
            {
                PadControls2 = PadControls2 + " " + PadButton;
            }
            string MouseControls = ""; foreach (byte MouseButton in ConfigFile.MouseControls)

            {
                MouseControls = MouseControls + " " + MouseButton;
            }

            INIConfigFile.WriteLine("Frame_Rate " + ConfigFile.FrameRate);
            INIConfigFile.WriteLine("Free_Camera " + ConfigFile.FreeCamera);
            INIConfigFile.WriteLine("Fog " + ConfigFile.FogEmulation);
            INIConfigFile.WriteLine("Clip_Range " + ConfigFile.ClipRange);
            INIConfigFile.WriteLine("Anisotoropic " + ConfigFile.AnisotropicFiltering);
            INIConfigFile.WriteLine("Pad_Assign1" + PadControls1);
            INIConfigFile.WriteLine("Pad_Assign2" + PadControls2);
            INIConfigFile.WriteLine("Mouse_Assign" + MouseControls);
            INIConfigFile.WriteLine("Screen_Size_Selection 0");
            INIConfigFile.WriteLine("Screen_Full " + ConfigFile.FullScreen);
            INIConfigFile.WriteLine("Language " + ConfigFile.Language);
            INIConfigFile.WriteLine("3D_Sound " + ConfigFile.SurroundSound);
            INIConfigFile.WriteLine("SE_Volume " + ConfigFile.SFXVolume);
            INIConfigFile.WriteLine("SE_On " + ConfigFile.SFXToggle);
            INIConfigFile.WriteLine("BGM_Volume " + ConfigFile.BGMVolume);
            INIConfigFile.WriteLine("BGM_On " + ConfigFile.BGMToggle);
            INIConfigFile.WriteLine("Cheap_Shadow " + ConfigFile.SoftShadows);
            INIConfigFile.WriteLine("Mouse_Control_Type " + ConfigFile.MouseControlType);
            INIConfigFile.Dispose();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Loads the Sonic Heroes Configuration File, returns under the custom struct defined in the same file.
        /// </summary>
        public static Sonic_Heroes_Configuration_File Load_Configuration_File()
        {
            Sonic_Heroes_Configuration_File ConfigFile = new Sonic_Heroes_Configuration_File();
            string ConfigFilePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\SEGA\SONICHEROES\sonic_h.ini";

            try
            {
                string CurrentLine;
                System.IO.StreamReader INIConfigFile = new System.IO.StreamReader(ConfigFilePath);

                // Initialize size of struct arrays;
                ConfigFile.ControllerOne = new byte[8];
                ConfigFile.ControllerTwo = new byte[8];
                ConfigFile.MouseControls = new byte[8];

                while ((CurrentLine = INIConfigFile.ReadLine()) != null)
                {
                    if (CurrentLine.StartsWith("Frame_Rate"))
                    {
                        ConfigFile.FrameRate = byte.Parse(CurrentLine.Substring(CurrentLine.LastIndexOf(" ") + 1));
                    }
                    else if (CurrentLine.StartsWith("Free_Camera"))
                    {
                        ConfigFile.FreeCamera = byte.Parse(CurrentLine.Substring(CurrentLine.LastIndexOf(" ") + 1));
                    }
                    else if (CurrentLine.StartsWith("Fog"))
                    {
                        ConfigFile.FogEmulation = byte.Parse(CurrentLine.Substring(CurrentLine.LastIndexOf(" ") + 1));
                    }
                    else if (CurrentLine.StartsWith("Clip_Range"))
                    {
                        ConfigFile.ClipRange = byte.Parse(CurrentLine.Substring(CurrentLine.LastIndexOf(" ") + 1));
                    }
                    else if (CurrentLine.StartsWith("Anisotoropic"))
                    {
                        ConfigFile.AnisotropicFiltering = byte.Parse(CurrentLine.Substring(CurrentLine.LastIndexOf(" ") + 1));
                    }
                    else if (CurrentLine.StartsWith("Pad_Assign1"))
                    {
                        ReadStringByteArray(CurrentLine.Substring(CurrentLine.IndexOf(" ") + 1), ConfigFile.ControllerOne);
                    }
                    else if (CurrentLine.StartsWith("Pad_Assign2"))
                    {
                        ReadStringByteArray(CurrentLine.Substring(CurrentLine.IndexOf(" ") + 1), ConfigFile.ControllerTwo);
                    }
                    else if (CurrentLine.StartsWith("Mouse_Assign"))
                    {
                        ReadStringByteArray(CurrentLine.Substring(CurrentLine.IndexOf(" ") + 1), ConfigFile.MouseControls);
                    }
                    else if (CurrentLine.StartsWith("Screen_Size_Selection"))
                    {
                        ConfigFile.Screensize = byte.Parse(CurrentLine.Substring(CurrentLine.LastIndexOf(" ") + 1));
                    }
                    else if (CurrentLine.StartsWith("Screen_Full"))
                    {
                        ConfigFile.FullScreen = byte.Parse(CurrentLine.Substring(CurrentLine.LastIndexOf(" ") + 1));
                    }
                    else if (CurrentLine.StartsWith("Language"))
                    {
                        ConfigFile.Language = byte.Parse(CurrentLine.Substring(CurrentLine.LastIndexOf(" ") + 1));
                    }
                    else if (CurrentLine.StartsWith("3D_Sound"))
                    {
                        ConfigFile.SurroundSound = byte.Parse(CurrentLine.Substring(CurrentLine.LastIndexOf(" ") + 1));
                    }
                    else if (CurrentLine.StartsWith("SE_Volume"))
                    {
                        ConfigFile.SFXVolume = byte.Parse(CurrentLine.Substring(CurrentLine.LastIndexOf(" ") + 1));
                    }
                    else if (CurrentLine.StartsWith("SE_On"))
                    {
                        ConfigFile.SFXToggle = byte.Parse(CurrentLine.Substring(CurrentLine.LastIndexOf(" ") + 1));
                    }
                    else if (CurrentLine.StartsWith("BGM_Volume"))
                    {
                        ConfigFile.BGMVolume = byte.Parse(CurrentLine.Substring(CurrentLine.LastIndexOf(" ") + 1));
                    }
                    else if (CurrentLine.StartsWith("BGM_On"))
                    {
                        ConfigFile.BGMToggle = byte.Parse(CurrentLine.Substring(CurrentLine.LastIndexOf(" ") + 1));
                    }
                    else if (CurrentLine.StartsWith("Cheap_Shadow"))
                    {
                        ConfigFile.SoftShadows = byte.Parse(CurrentLine.Substring(CurrentLine.LastIndexOf(" ") + 1));
                    }
                    else if (CurrentLine.StartsWith("Mouse_Control_Type"))
                    {
                        ConfigFile.MouseControlType = byte.Parse(CurrentLine.Substring(CurrentLine.LastIndexOf(" ") + 1));
                    }
                }

                INIConfigFile.Dispose();
                return(ConfigFile);
            }
            catch (Exception)
            {
                // If the game is not Sonic Heroes or a config file is missing, set a default file into memory undefined defaults.
                MessageBox.Show("Could not find the Sonic Heroes configuration ini. The settings in the mod loader have been replaced with the defaults.");
                return(ConfigFile);
            }
        }