/// <summary> /// Try to load the SilkCfg file /// </summary> private bool LoadSilkCfg() { if (File.Exists(PATH_SILKCFG)) { BinaryReader reader = null; try { reader = new BinaryReader(new FileStream(PATH_SILKCFG, FileMode.Open, FileAccess.Read)); // Read config structure by version m_SilkCfg.Version = reader.ReadUInt32(); if (m_SilkCfg.Version < 4) { m_SilkCfg.unkUint01 = reader.ReadUInt32(); // Read game resolution and ignore if is not supported SilkCfg.WindowResolution w = new SilkCfg.WindowResolution(reader.ReadUInt32(), reader.ReadUInt32()); if (SupportedResolutions.Contains(w)) { m_SilkCfg.Resolution = w; } // Graphics #1 SilkCfg.Graphic g = (SilkCfg.Graphic)reader.ReadByte(); if (SupportedGraphics.Contains(g)) { m_SilkCfg.GraphicType = g; } m_SilkCfg.unkByte01 = reader.ReadByte(); // Sound m_SilkCfg.IsSoundEnabled = reader.ReadBoolean(); m_SilkCfg.unkByte02 = reader.ReadByte(); if (m_SilkCfg.Version == 3) { // Read graphics #2 SilkCfg.Graphic g2 = (SilkCfg.Graphic)reader.ReadByte(); // Graphics choosen byte gIndex = reader.ReadByte(); // Just handling one graphic from GUI if (gIndex == 2 && SupportedGraphics.Contains(g2)) { m_SilkCfg.GraphicType = g2; } } m_SilkCfg.unkByte03 = reader.ReadByte(); } return(true); } catch (Exception e) { System.Diagnostics.Debug.WriteLine(e.Message); } finally { reader?.Close(); } } return(false); }
public ConfigViewModel() { // Set default SilkCfg.dat m_SilkCfg = new SilkCfg(); // Load available resolutions to display SupportedResolutions = new List <SilkCfg.WindowResolution>(); DEVMODE mode = new DEVMODE(); var minPixels = 800 * 600; for (int i = 0; EnumDisplaySettings(null, i, ref mode); i++) { // Avoid lowest resolutions if (mode.dmPelsWidth * mode.dmPelsHeight < minPixels) { continue; } // Add only one per resolution var resolution = new SilkCfg.WindowResolution((uint)mode.dmPelsWidth, (uint)mode.dmPelsHeight); if (!SupportedResolutions.Contains(resolution)) { SupportedResolutions.Add(resolution); } } // Default brightness SupportedBrightness = new List <SilkCfg.Brightness>() { SilkCfg.Brightness.VeryDark, SilkCfg.Brightness.Dark, SilkCfg.Brightness.Normal, SilkCfg.Brightness.Bright, SilkCfg.Brightness.VeryBright }; // Default graphics SupportedGraphics = new List <SilkCfg.Graphic>() { SilkCfg.Graphic.Low, SilkCfg.Graphic.Middle, SilkCfg.Graphic.High }; // Set default SROptionSet.dat m_SROptionSet = new SROptionSet(); // Set languages supported SupportedLanguages = new List <string>(LauncherSettings.CLIENT_LANGUAGE_SUPPORTED_MASK); }