/// <summary> /// All static classes and singletons meant for global /// usage are activated here. Some areas depend on these classes having their /// data loaded before the program starts (e.g., OdometerTracker), so it /// is very important that they are called here. All static classes should at /// the bare minimum implement an empty Activate() method to ensure their /// constructors are called /// </summary> private void ActivateStaticClasses() { EventBridge.Initialize(); DiagnosticsParser.Initialize(); CanMessageHandler.Initialize(); ConfigManager.LoadConfiguration(); DiagnosticLogger.Initialize(); RawLogger.Initialize(); PIDValueStager.Initialize(); _EngineDataParser = new EngineDataParser(); _Acceleration = new Acceleration(); _Trackers = new Trackers(); ChassisParameters.Initialize(); var engineFilePointer = new FileOpener(ConfigManager.Settings.Contents.engineFilePath); if (engineFilePointer.Exists()) { EngineSpec.SetEngineFile(engineFilePointer.absoluteFilepath); } else { MessageBox.Show("No engine files can be found. Horsepower and Torque settings will be inaccurate"); } SPNDefinitions.Activate(); //in VMSpc/Parsers/J1939/SPNDefinitions.cs - Defines every SPN object //Odometer.Activate(); //ParamData.Activate(); TireManager.Initialize(); CommunicationManager.Initialize(); DayNightManager.Initialize(); }
private void ChangeEngine_Executed(object sender, ExecutedRoutedEventArgs e) { var dlg = new FileSelector("\\engines", ConfigManager.Settings.Contents.engineFilePath, "eng") { Owner = this, WindowStartupLocation = WindowStartupLocation.CenterOwner }; if ((bool)dlg.ShowDialog()) { ConfigManager.Settings.Contents.engineFilePath = dlg.ResultFilePath; EngineSpec.SetEngineFile(new FileOpener(ConfigManager.Settings.Contents.engineFilePath).absoluteFilepath); } }