コード例 #1
0
 protected string SettingsQuery(string name)
 {
     if (SettingsOverrides.TryGetValue(name, out var val))
     {
         // use override
     }
     else
     {
         // try to get actual value from settings
         if (NonSyncSettingNames.Contains(name))
         {
             _settings.MednafenValues.TryGetValue(name, out val);
         }
         else
         {
             _syncSettings.MednafenValues.TryGetValue(name, out val);
         }
     }
     // in either case, might need defaults
     if (val == null)
     {
         SettingsInfo.AllSettingsByKey.TryGetValue(name, out var info);
         val = info?.DefaultValue;
     }
     if (val == null)
     {
         throw new InvalidOperationException($"Core asked for setting {name} which was not found in the defaults");
     }
     return(val);
 }
コード例 #2
0
        public Faust(GameInfo game, byte[] rom, CoreComm comm, string extension,
                     NymaSettings settings, NymaSyncSettings syncSettings, bool deterministic)
            : base(comm, "SNES", "I don't think anything uses this parameter", settings, syncSettings)
        {
            if (deterministic)
            {
                // force ST renderer
                SettingsOverrides.Add("snes_faust.renderer", "0");
            }

            DoInit <LibNymaCore>(game, rom, null, "faust.wbx", extension, deterministic);
        }
コード例 #3
0
        protected T ValueForTargetEnvironment <T>(T?[] values, [CallerMemberName] string propertyName = null) where T : struct
        {
            values = SettingsOverrides.ValuesForProperty(propertyName, values);
            var value = values[TargetEnvironmentIndex] ?? values[0];

            if (value == null)
            {
                throw new InvalidOperationException(
                          string.Format(
                              "'{0}' does not have a defined value neither for '{1}' or default target environment.",
                              propertyName,
                              BindingGenerationContext.TargetEnvironment));
            }
            return(value.Value);
        }
コード例 #4
0
 protected string SettingsQuery(string name)
 {
     SettingsOverrides.TryGetValue(name, out var val);
     if (val == null)
     {
         if (!_syncSettingsActual.MednafenValues.TryGetValue(name, out val))
         {
             if (SettingsInfo.SettingsByKey.TryGetValue(name, out var info))
             {
                 val = info.DefaultValue;
             }
             else
             {
                 throw new InvalidOperationException($"Core asked for setting {name} which was not found in the defaults");
             }
         }
     }
     return(val);
 }
コード例 #5
0
        private void InitSyncSettingsInfo(List <NPortInfoT> allPorts)
        {
            var s = new NymaSettingsInfo();

            foreach (var portInfo in allPorts)
            {
                s.Ports.Add(new NymaSettingsInfo.Port
                {
                    Name = portInfo.FullName,
                    DefaultSettingsValue = portInfo.DefaultDeviceShortName,
                    AllowedDevices       = portInfo.Devices.Select(dev => new NymaSettingsInfo.Device
                    {
                        Name         = dev.FullName,
                        Description  = dev.Description,
                        SettingValue = dev.ShortName
                    }).ToList()
                });
            }

            foreach (var setting in GetSettingsData().Concat(ExtraSettings))
            {
                s.AllSettingsByKey.Add(setting.SettingsKey, setting);
                if (!SettingsOverrides.ContainsKey(setting.SettingsKey))
                {
                    if (NonSyncSettingNames.Contains(setting.SettingsKey))
                    {
                        s.Settings.Add(setting);
                    }
                    else
                    {
                        s.SyncSettings.Add(setting);
                    }
                }
            }
            SettingsInfo = s;
        }