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()) { s.Settings.Add(setting); s.SettingsByKey.Add(setting.SettingsKey, setting); } s.HiddenSettings = new HashSet <string>(SettingsOverrides.Keys); foreach (var ss in ExtraSettings) { s.Settings.Add(ss); s.SettingsByKey.Add(ss.SettingsKey, ss); } SettingsInfo = s; }
/// <summary> /// remove things that aren't used by the core /// Normally won't do anything, but can be useful in case settings change /// </summary> public void Normalize(NymaSettingsInfo info) { var toRemove = new List <string>(); foreach (var kvp in MednafenValues) { if (!info.AllSettingsByKey.ContainsKey(kvp.Key)) { toRemove.Add(kvp.Key); } else { var ovr = info.AllOverrides[kvp.Key]; if (ovr.Hide || !ovr.NonSync) { toRemove.Add(kvp.Key); } } } foreach (var key in toRemove) { MednafenValues.Remove(key); } DisabledLayers = new HashSet <string>(DisabledLayers.Where(l => info.LayerNames.Contains(l))); }
private void InitAllSettingsInfo(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 kvp in ExtraOverrides.Concat(SettingOverrides)) { s.AllOverrides[kvp.Key] = kvp.Value; } foreach (var setting in GetSettingsData().Concat(ExtraSettings)) { s.AllSettingsByKey.Add(setting.SettingsKey, setting); s.AllSettings.Add(setting); if (!s.AllOverrides.ContainsKey(setting.SettingsKey)) { s.AllOverrides.Add(setting.SettingsKey, new SettingOverride()); } } SettingsInfo = s; }
public static NymaSettingsInfo CachedSettingsInfo(CoreComm comm) { if (_cachedSettingsInfo is null) { using var n = new NeoGeoPort(comm); n.InitForSettingsInfo("ngp.wbx"); _cachedSettingsInfo = n.SettingsInfo.Clone(); } return(_cachedSettingsInfo); }
public static NymaSettingsInfo CachedSettingsInfo(CoreComm comm) { if (_cachedSettingsInfo is null) { using var n = new HyperNyma(comm); n.InitForSettingsInfo("hyper.wbx"); _cachedSettingsInfo = n.SettingsInfo.Clone(); } return(_cachedSettingsInfo); }
public static NymaSettingsInfo CachedSettingsInfo(CoreComm comm) { if (_cachedSettingsInfo is null) { using var n = new VirtualBoyee(comm); n.InitForSettingsInfo("vb.wbx"); _cachedSettingsInfo = n.SettingsInfo.Clone(); } return(_cachedSettingsInfo); }
/// <summary> /// remove things that aren't used by the core /// Normally won't do anything, but can be useful in case settings change /// </summary> public void Normalize(NymaSettingsInfo info) { var toRemove = new List <string>(); foreach (var kvp in MednafenValues) { if (!info.AllSettingsByKey.ContainsKey(kvp.Key)) { toRemove.Add(kvp.Key); } else { var ovr = info.AllOverrides[kvp.Key]; if (ovr.Hide || ovr.NonSync) { toRemove.Add(kvp.Key); } } } foreach (var key in toRemove) { MednafenValues.Remove(key); } var toRemovePort = new List <int>(); foreach (var kvp in PortDevices) { if (info.Ports.Count <= kvp.Key || info.Ports[kvp.Key].DefaultSettingsValue == kvp.Value) { toRemovePort.Add(kvp.Key); } } foreach (var key in toRemovePort) { PortDevices.Remove(key); } }
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; }
public static PutSettingsDirtyBits Reboot(NymaSyncSettings x, NymaSyncSettings y, NymaSettingsInfo info) { var restarters = info.AllOverrides.Where(kvp => !kvp.Value.NonSync && !kvp.Value.NoRestart).Select(kvp => kvp.Key); foreach (var key in restarters) { x.MednafenValues.TryGetValue(key, out var xx); y.MednafenValues.TryGetValue(key, out var yy); if (xx != yy) { return(PutSettingsDirtyBits.RebootCore); } } if (!new HashSet <KeyValuePair <int, string> >(x.PortDevices).SetEquals(y.PortDevices)) { return(PutSettingsDirtyBits.RebootCore); } return(PutSettingsDirtyBits.None); }
public static PutSettingsDirtyBits Reboot(NymaSettings x, NymaSettings y, NymaSettingsInfo info) { var restarters = info.AllOverrides.Where(kvp => kvp.Value.NonSync && !kvp.Value.NoRestart).Select(kvp => kvp.Key); foreach (var key in restarters) { x.MednafenValues.TryGetValue(key, out var xx); y.MednafenValues.TryGetValue(key, out var yy); if (xx != yy) { return(PutSettingsDirtyBits.RebootCore); } } return(PutSettingsDirtyBits.None); }
public static IEnumerable <string> ChangedKeys(NymaSettings x, NymaSettings y, NymaSettingsInfo info) { var possible = info.AllOverrides.Where(kvp => kvp.Value.NonSync && kvp.Value.NoRestart).Select(kvp => kvp.Key); return(possible.Where(key => { x.MednafenValues.TryGetValue(key, out var xx); y.MednafenValues.TryGetValue(key, out var yy); return xx != yy; })); }
private void InitSyncSettingsInfo() { // TODO: Some shared logic in ControllerAdapter. Avoidable? var s = new NymaSettingsInfo(); var numPorts = _nyma.GetNumPorts(); for (uint port = 0; port < numPorts; port++) { var portInfo = *_nyma.GetPort(port); s.Ports.Add(new NymaSettingsInfo.Port { Name = portInfo.FullName, DefaultSettingsValue = portInfo.DefaultDeviceShortName, AllowedDevices = Enumerable.Range(0, (int)portInfo.NumDevices) .Select(i => { var dev = *_nyma.GetDevice(port, (uint)i); return(new NymaSettingsInfo.Device { Name = dev.FullName, Description = dev.Description, SettingValue = dev.ShortName }); }) .ToList() }); } for (var i = 0;; i++) { var tt = new NymaSettingsInfo.MednaSettingS(); _nyma.IterateSettings(i, tt); if (tt.SettingsKey == IntPtr.Zero) { break; } var ss = new NymaSettingsInfo.MednaSetting(tt); s.Settings.Add(ss); s.SettingsByKey.Add(ss.SettingsKey, ss); if (ss.Type == NymaSettingsInfo.MednaSetting.SettingType.ENUM) { var l = ss.SettingEnums; for (var j = 0;; j++) { var ff = new NymaSettingsInfo.MednaSettingS.EnumValueS(); _nyma.IterateSettingEnums(i, j, ff); if (ff.Value == IntPtr.Zero) { break; } var ee = new NymaSettingsInfo.MednaSetting.EnumValue(ff); l.Add(ee); } } } s.HiddenSettings = new HashSet <string>(SettingsOverrides.Keys); foreach (var ss in ExtraSettings) { s.Settings.Add(ss); s.SettingsByKey.Add(ss.SettingsKey, ss); } SettingsInfo = s; }
public SettingsCustomTypeDescriptor(NymaSettingsInfo info) { SettingsInfo = info; }
public NymaTypeDescriptorProvider(NymaSettingsInfo info) { SettingsInfo = info; }