private void SaveConfig() { using (FileStream outputStream = new FileStream(ViewerConfigPath, FileMode.Create)) { AppVM.ViewerConfig.InternalGameEngineConfig.CopyOptionsFrom(InternalGameEngineConfig.GetOptionsClone()); // Repopulate with current engine values AppVM.ViewerConfig.SaveConfig(outputStream); } }
private ViewerConfig LoadConfig() { using (FileStream inputStream = new FileStream(ViewerConfigPath, FileMode.OpenOrCreate)) { ViewerConfig viewerConfig = new ViewerConfig(); viewerConfig.InternalGameEngineConfig = InternalGameEngineConfig.GetOptionsClone(); // Create clone to store user values try { viewerConfig.LoadConfig(inputStream); } catch (Exception) { } return(viewerConfig); } }
private AppViewModel(AppViewModelParameters parameters) { if (null == parameters) { throw new ArgumentNullException(nameof(parameters)); } ProgramTitle = parameters.ProgramTitle; FullVersion = parameters.FullVersion; ViewerConfig = parameters.ViewerConfig ?? throw new ArgumentNullException(nameof(parameters.ViewerConfig)); DoOnUIThread = parameters.DoOnUIThread ?? throw new ArgumentNullException(nameof(parameters.DoOnUIThread)); TextToClipboard = parameters.TextToClipboard ?? throw new ArgumentNullException(nameof(parameters.TextToClipboard)); EngineWrapper = parameters.EngineWrapper; InternalGameEngineConfig = parameters.InternalGameEngineConfig; try { EngineWrapper?.StartEngine(); } catch (Exception ex) { EngineWrapper?.StopEngine(); EngineWrapper = null; EngineExceptionOnStart = ex; } if (null == EngineWrapper) { // No engine started, use an internal one EngineWrapper = new InternalEngineWrapper($"{ProgramTitle} v{FullVersion}", InternalGameEngineConfig); EngineWrapper.StartEngine(); } // Now that the engine is started, load user options from viewer config InternalGameEngineConfig.CopyOptionsFrom(ViewerConfig.InternalGameEngineConfig); }