/// <summary> /// Updates the machine configuration collections. Switches, lamps, coils etc. /// </summary> private void UpdateMachineConfigCollections() { Log("Updating UI Collections"); //Add only the switches not containing dedicated and flipper if (MachineConfig.PRSwitches != null) { Log("Adding dedicated switches"); //Quick hack for PDB switches. Need to put the 64-127 range of switch into the dedicated collection... if (MachineConfig.GetMachineType() == MachineType.PDB) { var lowRange = MachineConfig.PRSwitches.Where(x => x.Number.Contains("SD") && Convert.ToByte(x.Number.Replace("SD", "")) < 64); var hiRange = MachineConfig.PRSwitches.Where(x => x.Number.Contains("SD") && (Convert.ToByte(x.Number.Replace("SD", "")) < 128 && Convert.ToByte(x.Number.Replace("SD", "")) > 63)); Switches.AddRange(lowRange.Select(x => new SwitchViewModel(x))); DedicatedSwitches.AddRange(hiRange.Select(x => new SwitchViewModel(x))); } else { DedicatedSwitches.AddRange(MachineConfig.PRSwitches .Where(x => x.Number.Contains("SD")) .Select(x => new SwitchViewModel(x)).OrderBy(x => x.Number)); Log("Adding switches"); Switches.AddRange(MachineConfig.PRSwitches .Where(x => !x.Number.Contains("F") & !x.Number.Contains("SD")) .Select(x => new SwitchViewModel(x)).OrderBy(x => x.Number)); } Log("Adding flipper switches"); FlippersSwitches.AddRange(MachineConfig.PRSwitches .Where(x => x.Number.Contains("SF")) .Select(x => new SwitchViewModel(x)).OrderBy(x => x.Number)); } else { Log("PRSwitches doesn't exist"); } if (MachineConfig.PRCoils != null) { Coils.AddRange(MachineConfig.PRCoils.Select(x => new SolenoidFlasherViewModel(x)).OrderBy(x => x.Number)); } else { Log("PRCoils doesn't exist"); } if (MachineConfig.PRLamps != null) { Lamps.AddRange(MachineConfig.PRLamps.Select(x => new LampViewModel(x)).OrderBy(x => x.Number)); } else { Log("PRLamps doesn't exist"); } if (MachineConfig.PRLeds != null) { PRLeds.AddRange(MachineConfig.PRLeds.Select(x => new LampViewModel(x)));//.OrderBy(x => x.Number.Replace("A8-", ""))); } else { Log("PRLeds doesn't exist"); } }
private void SaveMachineConfig() { var mConfig = MachineConfig; Log("Saving Machine configuration"); Log("Adding Flipper switches"); mConfig.PRSwitches.Clear(); mConfig.PRSwitches .AddRange(FlippersSwitches.Select(x => new PRSwitch() { Name = x.Name, Number = x.Number, Tags = x.Tags, SwitchType = x.Type, Label = x.Label, VpSwitchType = x.VpSwitchType })); var allSwitches = Switches; if (mConfig.GetMachineType() == MachineType.PDB) { UpdateSwitchesBeforeSaved(mConfig); UpdateDedicatedBeforeSave(mConfig); } else { UpdateDedicatedBeforeSave(mConfig); UpdateSwitchesBeforeSaved(mConfig); } //Save Lamps Log("Adding Lamps"); mConfig.PRLamps?.Clear(); if (mConfig.PRLamps == null) { Log("No PRLEDs found in config.", Category.Warn); } else { foreach (var item in Lamps) { if (item.Name != "NOT USED") { var lamp = new PRLamp() { Name = item.Name, Number = item.Number, Tags = item.Tags, Label = item.Label }; MachineConfig.PRLamps.Add(lamp); } } } //Save LEds Log("Adding LEDs"); if (mConfig.PRLeds == null) { Log("No PRLEDs found in config.", Category.Warn); } else { mConfig.PRLeds.Clear(); foreach (var item in PRLeds) { if (item.Name != "NOT USED") { var lamp = new PRLed() { Name = item.Name, Number = item.Number, Tags = item.Tags, Label = item.Label }; mConfig.PRLeds.Add(lamp); } } } mConfig.PRCoils.Clear(); mConfig.PRFlippers.Clear(); Log("Adding Coils"); foreach (var coil in Coils) { var number = coil.Number; if (MachineConfig.GetMachineType() == MachineType.PDB) { number = coil.Number.Split(':')[1]; } if (coil.Name != "NOT USED") { var newcoil = new PRCoil() { Name = coil.Name, Number = number, Tags = coil.Tags, PatterOffTime = coil.PatterOffTime, PatterOnTime = coil.PatterOnTime, BallSearch = coil.BallSearch, PulseTime = coil.PulseTime, SolenoidType = coil.SolenoidType, Label = coil.Label }; mConfig.PRCoils.Add(newcoil); //Add PRFlippers list from the coil name once if (coil.Name.Contains("Main")) { mConfig.PRFlippers.Add(newcoil.Name.Replace("Main", string.Empty)); } } } Log("Attempting Save..."); _skeletonGameProvider.SaveMachineConfig(mConfig); }