예제 #1
0
 /// <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);
 }
예제 #2
0
        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);
        }