public Configuration SaveConfiguration(Dictionarys dicts) { var returnConf = new Configuration { Name = Name, FileLocation = FileLocation, DisplayConfigurations = new List<DisplayConfiguration>(), ControllerConfigurations = new List<ControllerConfiguration>(), TMDisplaySettings = new TMDisplaySettings { ColourDeltaByDD = this.ColourDeltaByDD, ShiftIntensity = this.ShiftIntensity, Intensity = this.Intensity, ShiftIntensityType = this.ShiftIntensityType, ShiftIntensityAmount = this.ShiftIntensityAmount, ShowHeaders = this.ShowHeader, HeaderDisplayTime = this.HeaderDisplayTime + 1, QuickInfoDisplayTime = this.QuickInfoDisplayTime + 1, LapDisplayTime = this.LapTimeDisplayTime + 1, DeltaRange = this.DeltaRange + 1, DeltaMessageScreen = this.DeltaMessageScreen, DeltaLightsOnDefault = this.DeltaLightsOnDefault, WarningTextDisplayTime = this.WarningTextDisplayTime + 1, QuickInfoLightsColour = this.QuickInfoLightsColour }, SerialPortSettings = new SerialPortConfiguration { PreferredComPort = this .PreferredComPort, SerialPortSpeed = AdvancedOptions .ParseSerialSpeedString ( this .SerialPortSpeed), UseCustomSerialSpeed = this .UseCustomSerialSpeed }, OtherSettings = new OtherSettings { FuelCalculationLaps = this.FuelCalculationLaps + 2, UseCustomFuelCalculationOptions = this .UseCustomFuelCalculationOptions, UseWeightedFuelCalculations = this .UseWeightedFuelCalculations }, RefreshRates = new RefreshRates { DisplayRefreshRate = AdvancedOptions .ParseRefreshRatesString( this .DisplayRefreshRate), LEDRefreshRate = AdvancedOptions .ParseRefreshRatesString( this.LEDRefreshRate) }, AdvancedSettings = new AdvancedSettings { LogArduinoMessages = this.LogArduinoMessages } }; if(returnConf.TMDisplaySettings.DeltaRange <= 0) { returnConf.TMDisplaySettings.DeltaRange = 1; } if (!UseCustomSerialSpeed) //Calculate and Auto Set Serial Speed { int numberTM1638 = 0; int numberTM1640 = 0; foreach (var unit in DisplayUnitConfigurations) { if (unit.IsTM1640) { numberTM1640++; } else { numberTM1638++; } } returnConf.SerialPortSettings.SerialPortSpeed = AdvancedOptions.CalculateRecommendSerialSpeed( returnConf.RefreshRates.DisplayRefreshRate,returnConf.RefreshRates.LEDRefreshRate, numberTM1638, numberTM1640); } //int controllerCount = 0; foreach (ControllerButtonConfiguration item in ControllerConfigurations) { var temp = new ControllerConfiguration(); for (int y = 0; y < Constants.MaxNumberJoystickButtons; y++) { var butFuncTemp = ButtonFunctionsEnum.None; foreach (var butFunc in dicts.ButtonFunctions) { if (butFunc.Value.Name == item.ButtonFunctions[y]) { butFuncTemp = butFunc.Key; } } temp.ButtonFunctions[y] = butFuncTemp; temp.ButtonOptions[y] = item.ButtonOptions[y]; temp.ButtonOptionsScreens[y] = item.ButtonOptionsScreens[y]; temp.ButtonNumbers[y] = item.ButtonNumbers[y]; temp.DeviceGuid = item.DeviceGuid; temp.Selected = item.Selected; } //controllerCount++; returnConf.ControllerConfigurations.Add(temp); } returnConf.NumberControllers = returnConf.ControllerConfigurations.Count; foreach (DisplayUnitConfiguration displayConf in DisplayUnitConfigurations) { var temp = new DisplayConfiguration(false) { NumScreens = displayConf.NumScreens + 1, Inverted = displayConf.Inverted, IsTM1640 = displayConf.IsTM1640, SwitchLEDs = displayConf.SwitchLEDs, ShowDC = displayConf.ShowDC, DCDisplayTime = displayConf.DCDisplayTime, ShowLap = displayConf.ShowLap, FFBClippingLights = displayConf.LEDsConfigurations.FFBClippingLights, FFBClippingScreen = displayConf.LEDsConfigurations.FFBClippingScreen + 1, PitLights = displayConf.LEDsConfigurations.PitLights, ShiftClumps = displayConf.LEDsConfigurations.ShiftClumps, RevLimiterLights = displayConf.LEDsConfigurations.RevLimiterLights, ShowShiftLights = displayConf.LEDsConfigurations.ShowShiftLights, DeltaLightsShow = displayConf.LEDsConfigurations.DeltaLightsShow, ShowEngineWarnings = displayConf.ShowEngineWarnings }; List<Screen> screenTemp = displayConf.Screens; foreach (Screen screen in screenTemp) { int place = 0; while (place < screen.Variables.Count) { if (screen.Variables[place] == null || screen.Variables[place] == "") { screen.Variables.RemoveAt(place); } else { place++; } } if (screen.Variables.Count == 0) { screen.Variables.Add("Space"); } } temp.Screens = displayConf.Screens; try { temp.WarningType = dicts.WarningTypes[displayConf.WarningType]; } catch { Enum.TryParse(displayConf.WarningType, out temp.WarningType); } try { temp.LapStyle = dicts.LapDisplayStyles[displayConf.LapStyle]; } catch { Enum.TryParse(displayConf.LapStyle, out temp.LapStyle); } try { temp.PitLimiterStyle = dicts.PitFlashStyles[displayConf.LEDsConfigurations.PitLimiterStyle]; } catch { Enum.TryParse(displayConf.LEDsConfigurations.PitLimiterStyle, out temp.PitLimiterStyle); } try { temp.PitLimiterSpeed = dicts.PitFlashSpeeds[displayConf.LEDsConfigurations.PitLimiterSpeed]; } catch { Enum.TryParse(displayConf.LEDsConfigurations.PitLimiterSpeed, out temp.PitLimiterSpeed); } try { temp.ShiftLightStyle = dicts.ShiftStyles[displayConf.LEDsConfigurations.ShiftLightStyle]; } catch { Enum.TryParse(displayConf.LEDsConfigurations.ShiftLightStyle, out temp.ShiftLightStyle); } try { temp.RevLimiterStyle = dicts.RevFlashStyles[displayConf.LEDsConfigurations.RevLimiterStyle]; } catch { Enum.TryParse(displayConf.LEDsConfigurations.RevLimiterStyle, out temp.RevLimiterStyle); } temp.MatchCarShiftStyle = displayConf.LEDsConfigurations.MatchCarShiftLights; temp.MatchRedShift = displayConf.LEDsConfigurations.MatchRedShift; try { temp.MatchCarShiftStyleOption = dicts.MatchCarShiftOptions[displayConf.LEDsConfigurations.MatchCarShiftOptions]; } catch { Enum.TryParse(displayConf.LEDsConfigurations.MatchCarShiftOptions, out temp.MatchCarShiftStyleOption); } temp.DeltaLightsShow = displayConf.LEDsConfigurations.DeltaLightsShow; try { temp.DeltaLightsPosition = dicts.DeltaLightsPositionOptions[displayConf.LEDsConfigurations.DeltaLightsPosition]; } catch { Enum.TryParse(displayConf.LEDsConfigurations.DeltaLightsPosition, out temp.DeltaLightsPosition); } for (int y = 0; y < Constants.NumberButtonsOnTm1638; y++) { var butFuncTemp = ButtonFunctionsEnum.None; foreach (var butFunc in dicts.ButtonFunctions) { if (butFunc.Value.Name == displayConf.ButtonConfigurations.ButtonFunctions[y]) { butFuncTemp = butFunc.Key; } } temp.ButtonFunctions[y] = butFuncTemp; temp.ButtonOptions[y] = displayConf.ButtonConfigurations.ButtonOptions[y]; temp.ButtonOptionsScreens[y] = displayConf.ButtonConfigurations.ButtonOptionsScreens[y]; } returnConf.DisplayConfigurations.Add(temp); } return returnConf; }
public Configuration SaveConfiguration(Dictionarys dicts) { var returnConf = new Configuration { Name = Name, FileLocation = FileLocation, DisplayConfigurations = new List <DisplayConfiguration>(), ControllerConfigurations = new List <ControllerConfiguration>(), TMDisplaySettings = new TMDisplaySettings { ColourDeltaByDD = this.ColourDeltaByDD, ShiftIntensity = this.ShiftIntensity, Intensity = this.Intensity, ShiftIntensityType = this.ShiftIntensityType, ShiftIntensityAmount = this.ShiftIntensityAmount, ShowHeaders = this.ShowHeader, HeaderDisplayTime = this.HeaderDisplayTime + 1, QuickInfoDisplayTime = this.QuickInfoDisplayTime + 1, LapDisplayTime = this.LapTimeDisplayTime + 1, DeltaRange = this.DeltaRange + 1, DeltaMessageScreen = this.DeltaMessageScreen, DeltaLightsOnDefault = this.DeltaLightsOnDefault, WarningTextDisplayTime = this.WarningTextDisplayTime + 1, QuickInfoLightsColour = this.QuickInfoLightsColour }, SerialPortSettings = new SerialPortConfiguration { PreferredComPort = this .PreferredComPort, SerialPortSpeed = AdvancedOptions .ParseSerialSpeedString ( this .SerialPortSpeed), UseCustomSerialSpeed = this .UseCustomSerialSpeed }, OtherSettings = new OtherSettings { FuelCalculationLaps = this.FuelCalculationLaps + 2, UseCustomFuelCalculationOptions = this .UseCustomFuelCalculationOptions, UseWeightedFuelCalculations = this .UseWeightedFuelCalculations }, RefreshRates = new RefreshRates { DisplayRefreshRate = AdvancedOptions .ParseRefreshRatesString( this .DisplayRefreshRate), LEDRefreshRate = AdvancedOptions .ParseRefreshRatesString( this.LEDRefreshRate) }, AdvancedSettings = new AdvancedSettings { LogArduinoMessages = this.LogArduinoMessages } }; if (returnConf.TMDisplaySettings.DeltaRange <= 0) { returnConf.TMDisplaySettings.DeltaRange = 1; } if (!UseCustomSerialSpeed) //Calculate and Auto Set Serial Speed { int numberTM1638 = 0; int numberTM1640 = 0; foreach (var unit in DisplayUnitConfigurations) { if (unit.IsTM1640) { numberTM1640++; } else { numberTM1638++; } } returnConf.SerialPortSettings.SerialPortSpeed = AdvancedOptions.CalculateRecommendSerialSpeed( returnConf.RefreshRates.DisplayRefreshRate, returnConf.RefreshRates.LEDRefreshRate, numberTM1638, numberTM1640); } //int controllerCount = 0; foreach (ControllerButtonConfiguration item in ControllerConfigurations) { var temp = new ControllerConfiguration(); for (int y = 0; y < Constants.MaxNumberJoystickButtons; y++) { var butFuncTemp = ButtonFunctionsEnum.None; foreach (var butFunc in dicts.ButtonFunctions) { if (butFunc.Value.Name == item.ButtonFunctions[y]) { butFuncTemp = butFunc.Key; } } temp.ButtonFunctions[y] = butFuncTemp; temp.ButtonOptions[y] = item.ButtonOptions[y]; temp.ButtonOptionsScreens[y] = item.ButtonOptionsScreens[y]; temp.ButtonNumbers[y] = item.ButtonNumbers[y]; temp.DeviceGuid = item.DeviceGuid; temp.Selected = item.Selected; } //controllerCount++; returnConf.ControllerConfigurations.Add(temp); } returnConf.NumberControllers = returnConf.ControllerConfigurations.Count; foreach (DisplayUnitConfiguration displayConf in DisplayUnitConfigurations) { var temp = new DisplayConfiguration(false) { NumScreens = displayConf.NumScreens + 1, Inverted = displayConf.Inverted, IsTM1640 = displayConf.IsTM1640, SwitchLEDs = displayConf.SwitchLEDs, ShowDC = displayConf.ShowDC, DCDisplayTime = displayConf.DCDisplayTime, ShowLap = displayConf.ShowLap, FFBClippingLights = displayConf.LEDsConfigurations.FFBClippingLights, FFBClippingScreen = displayConf.LEDsConfigurations.FFBClippingScreen + 1, PitLights = displayConf.LEDsConfigurations.PitLights, ShiftClumps = displayConf.LEDsConfigurations.ShiftClumps, RevLimiterLights = displayConf.LEDsConfigurations.RevLimiterLights, ShowShiftLights = displayConf.LEDsConfigurations.ShowShiftLights, DeltaLightsShow = displayConf.LEDsConfigurations.DeltaLightsShow, ShowEngineWarnings = displayConf.ShowEngineWarnings }; List <Screen> screenTemp = displayConf.Screens; foreach (Screen screen in screenTemp) { int place = 0; while (place < screen.Variables.Count) { if (screen.Variables[place] == null || screen.Variables[place] == "") { screen.Variables.RemoveAt(place); } else { place++; } } if (screen.Variables.Count == 0) { screen.Variables.Add("Space"); } } temp.Screens = displayConf.Screens; try { temp.WarningType = dicts.WarningTypes[displayConf.WarningType]; } catch { Enum.TryParse(displayConf.WarningType, out temp.WarningType); } try { temp.LapStyle = dicts.LapDisplayStyles[displayConf.LapStyle]; } catch { Enum.TryParse(displayConf.LapStyle, out temp.LapStyle); } try { temp.PitLimiterStyle = dicts.PitFlashStyles[displayConf.LEDsConfigurations.PitLimiterStyle]; } catch { Enum.TryParse(displayConf.LEDsConfigurations.PitLimiterStyle, out temp.PitLimiterStyle); } try { temp.PitLimiterSpeed = dicts.PitFlashSpeeds[displayConf.LEDsConfigurations.PitLimiterSpeed]; } catch { Enum.TryParse(displayConf.LEDsConfigurations.PitLimiterSpeed, out temp.PitLimiterSpeed); } try { temp.ShiftLightStyle = dicts.ShiftStyles[displayConf.LEDsConfigurations.ShiftLightStyle]; } catch { Enum.TryParse(displayConf.LEDsConfigurations.ShiftLightStyle, out temp.ShiftLightStyle); } try { temp.RevLimiterStyle = dicts.RevFlashStyles[displayConf.LEDsConfigurations.RevLimiterStyle]; } catch { Enum.TryParse(displayConf.LEDsConfigurations.RevLimiterStyle, out temp.RevLimiterStyle); } temp.MatchCarShiftStyle = displayConf.LEDsConfigurations.MatchCarShiftLights; temp.MatchRedShift = displayConf.LEDsConfigurations.MatchRedShift; try { temp.MatchCarShiftStyleOption = dicts.MatchCarShiftOptions[displayConf.LEDsConfigurations.MatchCarShiftOptions]; } catch { Enum.TryParse(displayConf.LEDsConfigurations.MatchCarShiftOptions, out temp.MatchCarShiftStyleOption); } temp.DeltaLightsShow = displayConf.LEDsConfigurations.DeltaLightsShow; try { temp.DeltaLightsPosition = dicts.DeltaLightsPositionOptions[displayConf.LEDsConfigurations.DeltaLightsPosition]; } catch { Enum.TryParse(displayConf.LEDsConfigurations.DeltaLightsPosition, out temp.DeltaLightsPosition); } for (int y = 0; y < Constants.NumberButtonsOnTm1638; y++) { var butFuncTemp = ButtonFunctionsEnum.None; foreach (var butFunc in dicts.ButtonFunctions) { if (butFunc.Value.Name == displayConf.ButtonConfigurations.ButtonFunctions[y]) { butFuncTemp = butFunc.Key; } } temp.ButtonFunctions[y] = butFuncTemp; temp.ButtonOptions[y] = displayConf.ButtonConfigurations.ButtonOptions[y]; temp.ButtonOptionsScreens[y] = displayConf.ButtonConfigurations.ButtonOptionsScreens[y]; } returnConf.DisplayConfigurations.Add(temp); } return(returnConf); }
public static bool LoadConfigurationFromFile(string fileLocation, out Configuration loaded) { var newConf = new Configuration { FileLocation = fileLocation }; bool fileReadOk = true; int currentDisplayUnit = 0; int currentController = 0; int currentButton = 0; int currentScreen = 0; try { using (var sr = new StreamReader(fileLocation)) { bool fileEnded = false; while (sr.EndOfStream == false && !fileEnded) { string line = sr.ReadLine(); // ReSharper disable StringIndexOfIsCultureSpecific.1 if (line == null) { continue; } int commaLoc = line.IndexOf(","); // ReSharper restore StringIndexOfIsCultureSpecific.1 if (commaLoc <= 0) { continue; } string parameter = line.Substring(0, commaLoc); string value = line.Substring(commaLoc + 1); ButtonFunctionsEnum temp; switch (parameter) { //ButtonOptionsScreens case "ConfName": newConf.Name = value; break; case "ComPort": int.TryParse(value, out newConf.SerialPortSettings.PreferredComPort); break; case "SerialSpeed": int.TryParse(value, out newConf.SerialPortSettings.SerialPortSpeed); break; case "LogArduinoMessages": Boolean.TryParse(value, out newConf.AdvancedSettings.LogArduinoMessages); break; case "UseCustomSerialSpeed": Boolean.TryParse(value, out newConf.SerialPortSettings.UseCustomSerialSpeed); break; case "DisplayRefreshRate": int.TryParse(value, out newConf.RefreshRates.DisplayRefreshRate); break; case "LEDRefreshRate": int.TryParse(value, out newConf.RefreshRates.LEDRefreshRate); break; case "UseCustomFuelCalculations": Boolean.TryParse(value, out newConf.OtherSettings.UseCustomFuelCalculationOptions); break; case "UseWeightedFuelCalculation": Boolean.TryParse(value, out newConf.OtherSettings.UseWeightedFuelCalculations); break; case "CustomFuelLaps": int.TryParse(value, out newConf.OtherSettings.FuelCalculationLaps); break; case "ButtonFunction1": if (Enum.TryParse(value, out temp)) { newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[0] = temp; } break; case "ButtonFunction2": if (Enum.TryParse(value, out temp)) { newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[1] = temp; } break; case "ButtonFunction3": if (Enum.TryParse(value, out temp)) { newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[2] = temp; } break; case "ButtonFunction4": if (Enum.TryParse(value, out temp)) { newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[3] = temp; } break; case "ButtonFunction5": if (Enum.TryParse(value, out temp)) { newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[4] = temp; } break; case "ButtonFunction6": if (Enum.TryParse(value, out temp)) { newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[5] = temp; } break; case "ButtonFunction7": if (Enum.TryParse(value, out temp)) { newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[6] = temp; } break; case "ButtonFunction8": if (Enum.TryParse(value, out temp)) { newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[7] = temp; } break; case "ButtonOption1": newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[0] = value; break; case "ButtonOption2": newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[1] = value; break; case "ButtonOption3": newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[2] = value; break; case "ButtonOption4": newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[3] = value; break; case "ButtonOption5": newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[4] = value; break; case "ButtonOption6": newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[5] = value; break; case "ButtonOption7": newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[6] = value; break; case "ButtonOption8": newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[7] = value; break; /////// case "ButtonOptionScreens1": int buttonOptionScreenInt1; int.TryParse(value, out buttonOptionScreenInt1); newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[0] = buttonOptionScreenInt1; break; case "ButtonOptionScreens2": int buttonOptionScreenInt2; int.TryParse(value, out buttonOptionScreenInt2); newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[1] = buttonOptionScreenInt2; break; case "ButtonOptionScreens3": int buttonOptionScreenInt3; int.TryParse(value, out buttonOptionScreenInt3); newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[2] = buttonOptionScreenInt3; break; case "ButtonOptionScreens4": int buttonOptionScreenInt4; int.TryParse(value, out buttonOptionScreenInt4); newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[3] = buttonOptionScreenInt4; break; case "ButtonOptionScreens5": int buttonOptionScreenInt5; int.TryParse(value, out buttonOptionScreenInt5); newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[4] = buttonOptionScreenInt5; break; case "ButtonOptionScreens6": int buttonOptionScreenInt6; int.TryParse(value, out buttonOptionScreenInt6); newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[5] = buttonOptionScreenInt6; break; case "ButtonOptionScreens7": int buttonOptionScreenInt7; int.TryParse(value, out buttonOptionScreenInt7); newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[6] = buttonOptionScreenInt7; break; case "ButtonOptionScreens8": int buttonOptionScreenInt8; int.TryParse(value, out buttonOptionScreenInt8); newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[7] = buttonOptionScreenInt8; break; case "FFBClipLights": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].FFBClippingLights); break; case "FFBClipScreen": Int32.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].FFBClippingScreen); break; case "HeaderDisplayTime": Int32.TryParse(value, out newConf.TMDisplaySettings.HeaderDisplayTime); break; case "LapDisplayTime": Int32.TryParse(value, out newConf.TMDisplaySettings.LapDisplayTime); break; case "ShowEngineWarnings": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].ShowEngineWarnings); break; case "WarningType": Enum.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].WarningType); break; case "LapStyle": Enum.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].LapStyle); break; case "PitLights": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].PitLights); break; case "ShiftClumps": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].ShiftClumps); break; case "PitLimiterSpeed": Enum.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].PitLimiterSpeed); break; case "PitLimiterStyle": Enum.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].PitLimiterStyle); break; case "QuickInfoDisplayTime": Int32.TryParse(value, out newConf.TMDisplaySettings.QuickInfoDisplayTime); break; case "RevLimiterLights": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].RevLimiterLights); break; case "RevLimiterStyle": Enum.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].RevLimiterStyle); break; case "ShiftLightStyle": Enum.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].ShiftLightStyle); break; case "MatchCarShiftStyle": Boolean.TryParse( value, out newConf.DisplayConfigurations[currentDisplayUnit].MatchCarShiftStyle); break; case "MatchCarShiftConfiguration": Enum.TryParse( value, out newConf.DisplayConfigurations[currentDisplayUnit].MatchCarShiftStyleOption); break; case "MatchRedShift": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].MatchRedShift); break; case "ShowHeaders": Boolean.TryParse(value, out newConf.TMDisplaySettings.ShowHeaders); break; case "ColourDeltaByDD": Boolean.TryParse(value, out newConf.TMDisplaySettings.ColourDeltaByDD); break; case "DeltaLightsOnDefault": Boolean.TryParse(value, out newConf.TMDisplaySettings.DeltaLightsOnDefault); break; case "DeltamessageScreen": Int32.TryParse(value, out newConf.TMDisplaySettings.DeltaMessageScreen); break; case "DeltaRange": Int32.TryParse(value, out newConf.TMDisplaySettings.DeltaRange); break; case "ShowLap": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].ShowLap); break; case "Inverted": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].Inverted); break; case "TM1640": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].IsTM1640); break; case "DeltaLightsPosition": Enum.TryParse( value, out newConf.DisplayConfigurations[currentDisplayUnit].DeltaLightsPosition); break; case "DeltaLightsShow": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].DeltaLightsShow); break; case "SwitchLEDs": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].SwitchLEDs); break; case "ShowDC": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].ShowDC); break; case "DCDisplayTime": Int32.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].DCDisplayTime); break; case "ShowShiftLights": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].ShowShiftLights); break; case "NumScreens": Int32.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].NumScreens); break; case "Intensity": Int32.TryParse(value, out newConf.TMDisplaySettings.Intensity); break; case "ShiftIntensity": Boolean.TryParse(value, out newConf.TMDisplaySettings.ShiftIntensity); break; case "ShiftIntensityType": Boolean.TryParse(value, out newConf.TMDisplaySettings.ShiftIntensityType); break; case "WarningTextDisplayTime": Int32.TryParse(value, out newConf.TMDisplaySettings.WarningTextDisplayTime); break; case "QuickInfoLightsColour": Boolean.TryParse(value, out newConf.TMDisplaySettings.QuickInfoLightsColour); break; case "ShiftIntensityAmount": Int32.TryParse(value, out newConf.TMDisplaySettings.ShiftIntensityAmount); break; case "ScreenNumber": Int32.TryParse(value, out currentScreen); if (newConf.DisplayConfigurations[currentDisplayUnit].Screens.Count <= currentScreen) { var tempScreen = new Screen(); tempScreen.Variables.Clear(); newConf.DisplayConfigurations[currentDisplayUnit].Screens.Add(tempScreen); } break; case "DisplayUnit": Int32.TryParse(value, out currentDisplayUnit); if (newConf.DisplayConfigurations.Count <= currentDisplayUnit) { var unitTemp = new DisplayConfiguration(true); unitTemp.Screens.Clear(); newConf.DisplayConfigurations.Add(unitTemp); } currentScreen = 0; break; case "UseCustomHeader": bool tempUch; Boolean.TryParse(value, out tempUch); newConf.DisplayConfigurations[currentDisplayUnit].Screens[currentScreen].UseCustomHeader = tempUch; break; case "CustomHeader": newConf.DisplayConfigurations[currentDisplayUnit].Screens[currentScreen].CustomHeader = value; break; case "Variable": newConf.DisplayConfigurations[currentDisplayUnit].Screens[currentScreen].Variables.Add( value); break; case "ControllerNumber": currentButton = -1; Int32.TryParse(value, out currentController); if (newConf.ControllerConfigurations.Count <= currentController) { var controllerTemp = new ControllerConfiguration(); newConf.ControllerConfigurations.Add(controllerTemp); } break; case "DeviceGuid": Guid.TryParse(value, out newConf.ControllerConfigurations[currentController].DeviceGuid); break; case "ConButtonFunction": currentButton++; if (Enum.TryParse(value, out temp)) { newConf.ControllerConfigurations[currentController].ButtonFunctions[currentButton] = temp; } break; case "ConButtonOption": newConf.ControllerConfigurations[currentController].ButtonOptions[currentButton] = value; break; case "ConButtonOptionScreens": int conButtonOptionScreenInt1; int.TryParse(value, out conButtonOptionScreenInt1); newConf.ControllerConfigurations[currentController].ButtonOptionsScreens[currentButton] = conButtonOptionScreenInt1; break; case "ConButtonNumber": int conButtonNumberInt1; int.TryParse(value, out conButtonNumberInt1); newConf.ControllerConfigurations[currentController].ButtonNumbers[currentButton] = conButtonNumberInt1; break; case "ContSelected": Boolean.TryParse(value, out newConf.ControllerConfigurations[currentController].Selected); break; case "END": fileEnded = true; break; } } } } catch (Exception e) { MessageBox.Show(String.Format("The file could not be read: {0}", e.Message), "File Read Error"); fileReadOk = false; } loaded = fileReadOk ? newConf : null; return(fileReadOk); }
public void LoadConfiguration(Configuration configuration, Dictionarys dicts) { Name = configuration.Name; FileLocation = configuration.FileLocation; Intensity = configuration.TMDisplaySettings.Intensity; ShiftIntensity = configuration.TMDisplaySettings.ShiftIntensity; ShiftIntensityType = configuration.TMDisplaySettings.ShiftIntensityType; ShiftIntensityAmount = configuration.TMDisplaySettings.ShiftIntensityAmount; ShowHeader = configuration.TMDisplaySettings.ShowHeaders; HeaderDisplayTime = configuration.TMDisplaySettings.HeaderDisplayTime - 1; QuickInfoDisplayTime = configuration.TMDisplaySettings.QuickInfoDisplayTime - 1; LapTimeDisplayTime = configuration.TMDisplaySettings.LapDisplayTime - 1; PreferredComPort = configuration.SerialPortSettings.PreferredComPort; LogArduinoMessages = configuration.AdvancedSettings.LogArduinoMessages; SerialPortSpeed = configuration.SerialPortSettings.SerialPortSpeed.ToString(CultureInfo.InvariantCulture); DisplayRefreshRate = configuration.RefreshRates.DisplayRefreshRate.ToString(CultureInfo.InvariantCulture); LEDRefreshRate = configuration.RefreshRates.LEDRefreshRate.ToString(CultureInfo.InvariantCulture); UseCustomSerialSpeed = configuration.SerialPortSettings.UseCustomSerialSpeed; ColourDeltaByDD = configuration.TMDisplaySettings.ColourDeltaByDD; DeltaLightsOnDefault = configuration.TMDisplaySettings.DeltaLightsOnDefault; DeltaMessageScreen = configuration.TMDisplaySettings.DeltaMessageScreen; DeltaRange = configuration.TMDisplaySettings.DeltaRange - 1; UseCustomFuelCalculationOptions = configuration.OtherSettings.UseCustomFuelCalculationOptions; FuelCalculationLaps = configuration.OtherSettings.FuelCalculationLaps - 2; UseWeightedFuelCalculations = configuration.OtherSettings.UseWeightedFuelCalculations; WarningTextDisplayTime = configuration.TMDisplaySettings.WarningTextDisplayTime - 1; QuickInfoLightsColour = configuration.TMDisplaySettings.QuickInfoLightsColour; ControllerConfigurations = new List <ControllerButtonConfiguration>(); foreach (ControllerConfiguration item in configuration.ControllerConfigurations) { var temp = new ControllerButtonConfiguration { DeviceGuid = item.DeviceGuid, ButtonNumbers = item.ButtonNumbers, ButtonOptions = item.ButtonOptions, ButtonOptionsScreens = item.ButtonOptionsScreens, Selected = item.Selected }; for (int k = 0; k < Constants.MaxNumberJoystickButtons; k++) { temp.ButtonFunctions[k] = dicts.ButtonFunctions[item.ButtonFunctions[k]].Name; } ControllerConfigurations.Add(temp); } NumberControllers = configuration.ControllerConfigurations.Count; DisplayUnitConfigurations = new List <DisplayUnitConfiguration>(); int unitCount = 0; foreach (DisplayConfiguration displayConf in configuration.DisplayConfigurations) { unitCount++; var temp = new DisplayUnitConfiguration { NumScreens = displayConf.NumScreens - 1, Inverted = displayConf.Inverted, IsTM1640 = displayConf.IsTM1640, SwitchLEDs = displayConf.SwitchLEDs, ShowDC = displayConf.ShowDC, DCDisplayTime = displayConf.DCDisplayTime, ShowLap = displayConf.ShowLap, ButtonConfigurations = new ButtonConfiguration(), UnitNumber = unitCount, ShowEngineWarnings = displayConf.ShowEngineWarnings }; DisplayConfiguration conf = displayConf; foreach (var lstyle in dicts.LapDisplayStyles.Where(lstyle => conf.LapStyle == lstyle.Value)) { temp.LapStyle = lstyle.Key; } foreach (var wtype in dicts.WarningTypes.Where(wtype => conf.WarningType == wtype.Value)) { temp.WarningType = wtype.Key; } for (int n = 0; n < Constants.NumberButtonsOnTm1638; n++) { temp.ButtonConfigurations.ButtonFunctions[n] = dicts.ButtonFunctions[displayConf.ButtonFunctions[n]].Name; temp.ButtonConfigurations.ButtonOptions[n] = displayConf.ButtonOptions[n]; temp.ButtonConfigurations.ButtonOptionsScreens[n] = displayConf.ButtonOptionsScreens[n]; } temp.LEDsConfigurations = new LEDsConfiguration { FFBClippingLights = displayConf.FFBClippingLights, FFBClippingScreen = displayConf.FFBClippingScreen - 1, PitLights = displayConf.PitLights, RevLimiterLights = displayConf.RevLimiterLights, ShowShiftLights = displayConf.ShowShiftLights, ShiftClumps = displayConf.ShiftClumps, MatchCarShiftLights = displayConf.MatchCarShiftStyle, MatchRedShift = displayConf.MatchRedShift, DeltaLightsShow = displayConf.DeltaLightsShow, MatchCarShiftOptions = "", }; foreach (var opt in dicts.MatchCarShiftOptions) { if (opt.Value == displayConf.MatchCarShiftStyleOption) { temp.LEDsConfigurations.MatchCarShiftOptions = opt.Key; } } temp.LEDsConfigurations.DeltaLightsPosition = ""; foreach (var opt in dicts.DeltaLightsPositionOptions) { if (opt.Value == displayConf.DeltaLightsPosition) { temp.LEDsConfigurations.DeltaLightsPosition = opt.Key; } } foreach (var plspeed in dicts.PitFlashSpeeds) { if (plspeed.Value == displayConf.PitLimiterSpeed) { temp.LEDsConfigurations.PitLimiterSpeed = plspeed.Key; } } foreach (var plstyle in dicts.PitFlashStyles) { if (plstyle.Value == displayConf.PitLimiterStyle) { temp.LEDsConfigurations.PitLimiterStyle = plstyle.Key; } } foreach (var revlstyle in dicts.RevFlashStyles) { if (revlstyle.Value == displayConf.RevLimiterStyle) { temp.LEDsConfigurations.RevLimiterStyle = revlstyle.Key; } } foreach (var shiftstyle in dicts.ShiftStyles) { if (shiftstyle.Value == displayConf.ShiftLightStyle) { temp.LEDsConfigurations.ShiftLightStyle = shiftstyle.Key; } } temp.Screens = displayConf.Screens; DisplayUnitConfigurations.Add(temp); } }
public static bool LoadConfigurationFromFile(string fileLocation, out Configuration loaded) { var newConf = new Configuration { FileLocation = fileLocation }; bool fileReadOk = true; int currentDisplayUnit = 0; int currentController = 0; int currentButton = 0; int currentScreen = 0; try { using (var sr = new StreamReader(fileLocation)) { bool fileEnded = false; while (sr.EndOfStream == false && !fileEnded) { string line = sr.ReadLine(); // ReSharper disable StringIndexOfIsCultureSpecific.1 if (line == null) continue; int commaLoc = line.IndexOf(","); // ReSharper restore StringIndexOfIsCultureSpecific.1 if (commaLoc <= 0) continue; string parameter = line.Substring(0, commaLoc); string value = line.Substring(commaLoc + 1); ButtonFunctionsEnum temp; switch (parameter) { //ButtonOptionsScreens case "ConfName": newConf.Name = value; break; case "ComPort": int.TryParse(value, out newConf.SerialPortSettings.PreferredComPort); break; case "SerialSpeed": int.TryParse(value, out newConf.SerialPortSettings.SerialPortSpeed); break; case "LogArduinoMessages": Boolean.TryParse(value, out newConf.AdvancedSettings.LogArduinoMessages); break; case "UseCustomSerialSpeed": Boolean.TryParse(value, out newConf.SerialPortSettings.UseCustomSerialSpeed); break; case "DisplayRefreshRate": int.TryParse(value, out newConf.RefreshRates.DisplayRefreshRate); break; case "LEDRefreshRate": int.TryParse(value, out newConf.RefreshRates.LEDRefreshRate); break; case "UseCustomFuelCalculations": Boolean.TryParse(value, out newConf.OtherSettings.UseCustomFuelCalculationOptions); break; case "UseWeightedFuelCalculation": Boolean.TryParse(value, out newConf.OtherSettings.UseWeightedFuelCalculations); break; case "CustomFuelLaps": int.TryParse(value, out newConf.OtherSettings.FuelCalculationLaps); break; case "ButtonFunction1": if (Enum.TryParse(value, out temp)) { newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[0] = temp; } break; case "ButtonFunction2": if (Enum.TryParse(value, out temp)) { newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[1] = temp; } break; case "ButtonFunction3": if (Enum.TryParse(value, out temp)) { newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[2] = temp; } break; case "ButtonFunction4": if (Enum.TryParse(value, out temp)) { newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[3] = temp; } break; case "ButtonFunction5": if (Enum.TryParse(value, out temp)) { newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[4] = temp; } break; case "ButtonFunction6": if (Enum.TryParse(value, out temp)) { newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[5] = temp; } break; case "ButtonFunction7": if (Enum.TryParse(value, out temp)) { newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[6] = temp; } break; case "ButtonFunction8": if (Enum.TryParse(value, out temp)) { newConf.DisplayConfigurations[currentDisplayUnit].ButtonFunctions[7] = temp; } break; case "ButtonOption1": newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[0] = value; break; case "ButtonOption2": newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[1] = value; break; case "ButtonOption3": newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[2] = value; break; case "ButtonOption4": newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[3] = value; break; case "ButtonOption5": newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[4] = value; break; case "ButtonOption6": newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[5] = value; break; case "ButtonOption7": newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[6] = value; break; case "ButtonOption8": newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptions[7] = value; break; /////// case "ButtonOptionScreens1": int buttonOptionScreenInt1; int.TryParse(value, out buttonOptionScreenInt1); newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[0] = buttonOptionScreenInt1; break; case "ButtonOptionScreens2": int buttonOptionScreenInt2; int.TryParse(value, out buttonOptionScreenInt2); newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[1] = buttonOptionScreenInt2; break; case "ButtonOptionScreens3": int buttonOptionScreenInt3; int.TryParse(value, out buttonOptionScreenInt3); newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[2] = buttonOptionScreenInt3; break; case "ButtonOptionScreens4": int buttonOptionScreenInt4; int.TryParse(value, out buttonOptionScreenInt4); newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[3] = buttonOptionScreenInt4; break; case "ButtonOptionScreens5": int buttonOptionScreenInt5; int.TryParse(value, out buttonOptionScreenInt5); newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[4] = buttonOptionScreenInt5; break; case "ButtonOptionScreens6": int buttonOptionScreenInt6; int.TryParse(value, out buttonOptionScreenInt6); newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[5] = buttonOptionScreenInt6; break; case "ButtonOptionScreens7": int buttonOptionScreenInt7; int.TryParse(value, out buttonOptionScreenInt7); newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[6] = buttonOptionScreenInt7; break; case "ButtonOptionScreens8": int buttonOptionScreenInt8; int.TryParse(value, out buttonOptionScreenInt8); newConf.DisplayConfigurations[currentDisplayUnit].ButtonOptionsScreens[7] = buttonOptionScreenInt8; break; case "FFBClipLights": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].FFBClippingLights); break; case "FFBClipScreen": Int32.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].FFBClippingScreen); break; case "HeaderDisplayTime": Int32.TryParse(value, out newConf.TMDisplaySettings.HeaderDisplayTime); break; case "LapDisplayTime": Int32.TryParse(value, out newConf.TMDisplaySettings.LapDisplayTime); break; case "ShowEngineWarnings": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].ShowEngineWarnings); break; case "WarningType": Enum.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].WarningType); break; case "LapStyle": Enum.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].LapStyle); break; case "PitLights": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].PitLights); break; case "ShiftClumps": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].ShiftClumps); break; case "PitLimiterSpeed": Enum.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].PitLimiterSpeed); break; case "PitLimiterStyle": Enum.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].PitLimiterStyle); break; case "QuickInfoDisplayTime": Int32.TryParse(value, out newConf.TMDisplaySettings.QuickInfoDisplayTime); break; case "RevLimiterLights": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].RevLimiterLights); break; case "RevLimiterStyle": Enum.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].RevLimiterStyle); break; case "ShiftLightStyle": Enum.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].ShiftLightStyle); break; case "MatchCarShiftStyle": Boolean.TryParse( value, out newConf.DisplayConfigurations[currentDisplayUnit].MatchCarShiftStyle); break; case "MatchCarShiftConfiguration": Enum.TryParse( value, out newConf.DisplayConfigurations[currentDisplayUnit].MatchCarShiftStyleOption); break; case "MatchRedShift": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].MatchRedShift); break; case "ShowHeaders": Boolean.TryParse(value, out newConf.TMDisplaySettings.ShowHeaders); break; case "ColourDeltaByDD": Boolean.TryParse(value, out newConf.TMDisplaySettings.ColourDeltaByDD); break; case "DeltaLightsOnDefault": Boolean.TryParse(value, out newConf.TMDisplaySettings.DeltaLightsOnDefault); break; case "DeltamessageScreen": Int32.TryParse(value, out newConf.TMDisplaySettings.DeltaMessageScreen); break; case "DeltaRange": Int32.TryParse(value, out newConf.TMDisplaySettings.DeltaRange); break; case "ShowLap": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].ShowLap); break; case "Inverted": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].Inverted); break; case "TM1640": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].IsTM1640); break; case "DeltaLightsPosition": Enum.TryParse( value, out newConf.DisplayConfigurations[currentDisplayUnit].DeltaLightsPosition); break; case "DeltaLightsShow": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].DeltaLightsShow); break; case "SwitchLEDs": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].SwitchLEDs); break; case "ShowDC": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].ShowDC); break; case "DCDisplayTime": Int32.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].DCDisplayTime); break; case "ShowShiftLights": Boolean.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].ShowShiftLights); break; case "NumScreens": Int32.TryParse(value, out newConf.DisplayConfigurations[currentDisplayUnit].NumScreens); break; case "Intensity": Int32.TryParse(value, out newConf.TMDisplaySettings.Intensity); break; case "ShiftIntensity": Boolean.TryParse(value, out newConf.TMDisplaySettings.ShiftIntensity); break; case "ShiftIntensityType": Boolean.TryParse(value, out newConf.TMDisplaySettings.ShiftIntensityType); break; case "WarningTextDisplayTime": Int32.TryParse(value, out newConf.TMDisplaySettings.WarningTextDisplayTime); break; case "QuickInfoLightsColour": Boolean.TryParse(value, out newConf.TMDisplaySettings.QuickInfoLightsColour); break; case "ShiftIntensityAmount": Int32.TryParse(value, out newConf.TMDisplaySettings.ShiftIntensityAmount); break; case "ScreenNumber": Int32.TryParse(value, out currentScreen); if (newConf.DisplayConfigurations[currentDisplayUnit].Screens.Count <= currentScreen) { var tempScreen = new Screen(); tempScreen.Variables.Clear(); newConf.DisplayConfigurations[currentDisplayUnit].Screens.Add(tempScreen); } break; case "DisplayUnit": Int32.TryParse(value, out currentDisplayUnit); if (newConf.DisplayConfigurations.Count <= currentDisplayUnit) { var unitTemp = new DisplayConfiguration(true); unitTemp.Screens.Clear(); newConf.DisplayConfigurations.Add(unitTemp); } currentScreen = 0; break; case "UseCustomHeader": bool tempUch; Boolean.TryParse(value, out tempUch); newConf.DisplayConfigurations[currentDisplayUnit].Screens[currentScreen].UseCustomHeader = tempUch; break; case "CustomHeader": newConf.DisplayConfigurations[currentDisplayUnit].Screens[currentScreen].CustomHeader = value; break; case "Variable": newConf.DisplayConfigurations[currentDisplayUnit].Screens[currentScreen].Variables.Add( value); break; case "ControllerNumber": currentButton = -1; Int32.TryParse(value, out currentController); if (newConf.ControllerConfigurations.Count <= currentController) { var controllerTemp = new ControllerConfiguration(); newConf.ControllerConfigurations.Add(controllerTemp); } break; case "DeviceGuid": Guid.TryParse(value, out newConf.ControllerConfigurations[currentController].DeviceGuid); break; case "ConButtonFunction": currentButton++; if (Enum.TryParse(value, out temp)) { newConf.ControllerConfigurations[currentController].ButtonFunctions[currentButton] = temp; } break; case "ConButtonOption": newConf.ControllerConfigurations[currentController].ButtonOptions[currentButton] = value; break; case "ConButtonOptionScreens": int conButtonOptionScreenInt1; int.TryParse(value, out conButtonOptionScreenInt1); newConf.ControllerConfigurations[currentController].ButtonOptionsScreens[currentButton] = conButtonOptionScreenInt1; break; case "ConButtonNumber": int conButtonNumberInt1; int.TryParse(value, out conButtonNumberInt1); newConf.ControllerConfigurations[currentController].ButtonNumbers[currentButton] = conButtonNumberInt1; break; case "ContSelected": Boolean.TryParse(value, out newConf.ControllerConfigurations[currentController].Selected); break; case "END": fileEnded = true; break; } } } } catch (Exception e) { MessageBox.Show(String.Format("The file could not be read: {0}", e.Message), "File Read Error"); fileReadOk = false; } loaded = fileReadOk ? newConf : null; return fileReadOk; }