private List <ManifestDefaultBinding> CombineAndWriteBindings(int manifestVersion) { string bindingsFolder = Path.Combine(Directory.GetCurrentDirectory(), "DynamicOpenVR", "Bindings"); if (!Directory.Exists(bindingsFolder)) { Logger.Warn("Bindings folder does not exist!"); return(new List <ManifestDefaultBinding>()); } Logger.Trace($"Reading default bindings from '{bindingsFolder}'"); string[] bindingFiles = Directory.GetFiles(bindingsFolder); var defaultBindings = new List <DefaultBinding>(); foreach (string bindingFile in bindingFiles) { try { Logger.Trace($"Reading '{bindingFile}'"); using (var reader = new StreamReader(bindingFile)) { defaultBindings.Add(JsonConvert.DeserializeObject <DefaultBinding>(reader.ReadToEnd())); } } catch (Exception ex) { Logger.Error($"An error of type {ex.GetType().FullName} occured when trying to parse '{bindingFile}': {ex.Message}"); } } var combinedBindings = new List <ManifestDefaultBinding>(); foreach (string controllerType in defaultBindings.Select(b => b.controllerType).Distinct()) { var defaultBinding = new DefaultBinding { actionManifestVersion = manifestVersion, name = "Default Beat Saber Bindings", description = "Action bindings for Beat Saber.", controllerType = controllerType, category = "steamvr_input", bindings = MergeBindings(defaultBindings.Where(b => b.controllerType == controllerType)) }; string fileName = $"default_bindings_{defaultBinding.controllerType}.json"; combinedBindings.Add(new ManifestDefaultBinding { ControllerType = controllerType, BindingUrl = fileName }); using (StreamWriter writer = new StreamWriter(Path.Combine("DynamicOpenVR", fileName))) { writer.WriteLine(JsonConvert.SerializeObject(defaultBinding, Formatting.Indented)); } } return(combinedBindings); }
private List <ManifestDefaultBinding> CombineAndWriteBindings() { string[] bindingFiles = Directory.GetFiles("DynamicOpenVR/Bindings"); var defaultBindings = new List <DefaultBinding>(); foreach (string bindingFile in bindingFiles) { try { using (var reader = new StreamReader(bindingFile)) { defaultBindings.Add(JsonConvert.DeserializeObject <DefaultBinding>(reader.ReadToEnd())); } } catch (Exception ex) { Debug.LogError($"An error of type {ex.GetType().FullName} occured when trying to parse {bindingFile}: {ex.Message}"); } } var combinedBindings = new List <ManifestDefaultBinding>(); foreach (string controllerType in defaultBindings.Select(b => b.controllerType).Distinct()) { var defaultBinding = new DefaultBinding { name = "Default Beat Saber Bindings", description = "Action bindings for Beat Saber.", controllerType = controllerType, category = "steamvr_input", bindings = MergeBindings(defaultBindings.Where(b => b.controllerType == controllerType)) }; string fileName = $"default_bindings_{defaultBinding.controllerType}.json"; combinedBindings.Add(new ManifestDefaultBinding { ControllerType = controllerType, BindingUrl = fileName }); using (StreamWriter writer = new StreamWriter(Path.Combine("DynamicOpenVR", fileName))) { writer.WriteLine(JsonConvert.SerializeObject(defaultBinding, Formatting.Indented)); } } return(combinedBindings); }