Пример #1
0
 private IniOptions(int w, int h, int realtimeRaster, int backgroundRaster, bool showLightSources, IniInput input, SamplerState realtimeSampler, SamplerState backgroundSampler, int realtimeSamples, int backgroundSamples, bool multithread)
 {
     RealtimeSampleCount   = realtimeSamples;
     BackgroundSampleCount = backgroundSamples;
     Width  = w;
     Height = h;
     RealtimeRasterLevel   = realtimeRaster;
     BackgroundRasterLevel = backgroundRaster;
     Input                  = input;
     ShowLightSources       = showLightSources;
     RealtimeSamplerState   = realtimeSampler;
     BackgroundSamplerState = backgroundSampler;
     Multithreaded          = multithread;
 }
Пример #2
0
        public static IniOptions Parse(string file)
        {
            var    lines       = File.ReadAllLines(file);
            string sectionName = null;
            var    map         = new LoadedIniMap();
            var    values      = new Dictionary <string, string>();

            for (int i = 0; i < lines.Length; i++)
            {
                var trimmed = lines[i].Trim();
                if (trimmed.StartsWith("#") || string.IsNullOrEmpty(trimmed))
                {
                    continue;
                }

                if (trimmed.StartsWith("[") && trimmed.EndsWith("]"))
                {
                    if (sectionName != null)
                    {
                        map.Add(sectionName, values);
                        values = new Dictionary <string, string>();
                    }
                    sectionName = trimmed.Substring(1, trimmed.Length - 2);
                }
                else
                {
                    if (sectionName == null)
                    {
                        throw new NotSupportedException("Found ini values before first section");
                    }
                    var sp = trimmed.Split('=');
                    var k  = sp[0].Trim();
                    var v  = sp[1].Trim();
                    values.Add(k, v);
                }
            }
            if (sectionName != null)
            {
                map.Add(sectionName, values);
            }

            bool  invertX = bool.Parse(map["mouse"]["InvertXAxis"]);
            bool  invertY = bool.Parse(map["mouse"]["InvertYAxis"]);
            float accelX  = float.Parse(map["mouse"]["MouseAccelerationX"], NumberFormatInfo.InvariantInfo);
            float accelY  = float.Parse(map["mouse"]["MouseAccelerationY"], NumberFormatInfo.InvariantInfo);

            var keyMap = map.First(k => k.Key == "input").Value.Select(d =>
            {
                var k    = d.Value;
                var keys = (k.Contains("|") ? k.Split('|') : new[] { k }).Select(key => (Keys)Enum.Parse(typeof(Keys), key)).ToArray();
                return(new KeyValuePair <string, Keys[]>(d.Key, keys));
            }).ToDictionary(d => d.Key, d => d.Value);


            var input = new IniInput(invertX, invertY, accelX, accelY, keyMap);

            int w = int.Parse(map["video"]["Width"]);
            int h = int.Parse(map["video"]["Height"]);
            int realtimeRaster    = int.Parse(map["video"]["RealtimeRasterSize"]);
            int backgroundRaster  = int.Parse(map["video"]["BackgroundRasterSize"]);
            int realtimeSamples   = int.Parse(map["video"]["RealtimeSampleCount"]);
            int backgroundSamples = int.Parse(map["video"]["BackgroundSampleCount"]);
            var showLightSources  = bool.Parse(map["video"]["ShowLightSources"]);

            var realtimeSampler   = ParseSampler(map["video"]["RealtimeSamplerState"]);
            var backgroundSampler = ParseSampler(map["video"]["BackgroundSamplerState"]);
            var multithread       = bool.Parse(map["video"]["Multithreaded"]);

            return(new IniOptions(w, h, realtimeRaster, backgroundRaster, showLightSources, input, realtimeSampler, backgroundSampler, realtimeSamples, backgroundSamples, multithread));
        }