static void PrintDuplicateControlIdentifiers(List <DCSBIOSControl> dcsbiosControls, bool printAll = false) { var result = new List <string>(); var dupes = new List <string>(); foreach (var dcsbiosControl in dcsbiosControls) { if (printAll) { result.Add(dcsbiosControl.identifier); } //Debug.Print(dcsbiosControl.identifier); var found = false; foreach (var str in result) { if (str.Trim() == dcsbiosControl.identifier.Trim()) { found = true; } } if (!found) { result.Add(dcsbiosControl.identifier); } if (found) { dupes.Add(dcsbiosControl.identifier); } } if (dupes.Count > 0) { var message = "Below is a list of duplicate identifiers found in the " + Airframe.GetDescription() + ".json profile (DCS-BIOS)\n"; message = message + "The identifier must be unique, please correct the profile " + Airframe.GetDescription() + ".lua in the DCS-BIOS lib folder\n"; message = message + "---------------------------------------------\n"; foreach (var dupe in dupes) { message = message + dupe + "\n"; } message = message + "---------------------------------------------\n"; Common.LogError(2000, message); } }
public static DCSBIOSControl GetControl(string controlId) { lock (LockObject) { if (Common.IsOperationModeFlagSet(OperationFlag.KeyboardEmulationOnly)) { return(null); } try { LoadControls(); if (_listOnce) { /*_listOnce = false; * foreach (var dcsbiosControl in _dcsbiosControls) * { * if (dcsbiosControl.outputs.Count > 0) * { * Console.WriteLine(dcsbiosControl.identifier + " " + dcsbiosControl.outputs[0].address); * } * else * { * Console.WriteLine(dcsbiosControl.identifier); * } * }*/ } //PrintDuplicateControlIdentifiers(_dcsbiosControls, true); if (!_dcsbiosControls.Exists(controlObject => controlObject.identifier.Equals(controlId))) { throw new Exception("Error, control " + controlId + " does not exist. (" + Airframe.GetDescription() + ".json"); } return(_dcsbiosControls.Single(controlObject => controlObject.identifier.Equals(controlId))); } catch (InvalidOperationException ioe) { throw new Exception("Check DCS-BIOS version. Failed to find control " + controlId + " for airframe " + Airframe.GetDescription() + " (" + Airframe.GetDescription() + ".json). Did you switch airframe type for the profile and have existing control(s) for the previous type saved?" + Environment.NewLine + ioe.Message); } } }
public static DCSBIOSOutput GetDCSBIOSOutput(string controlId) { lock (_lockObject) { if (_airframe == DCSAirframe.NONE) { return(null); } try { var control = GetControl(controlId); var dcsBIOSOutput = new DCSBIOSOutput(); dcsBIOSOutput.Consume(control); return(dcsBIOSOutput); } catch (InvalidOperationException ioe) { throw new Exception("Failed to create DCSBIOSOutput based on control " + controlId + " for airframe " + Airframe.GetDescription() + "." + Environment.NewLine + ioe.Message); } } }
public static DCSBIOSOutput GetDCSBIOSOutput(string controlId) { lock (LockObject) { if (Common.IsOperationModeFlagSet(OperationFlag.KeyboardEmulationOnly)) { throw new Exception("DCSBIOSControlLocator.GetDCSBIOSOutput() Should not be called when only key emulator is active"); } try { var control = GetControl(controlId); var dcsBIOSOutput = new DCSBIOSOutput(); dcsBIOSOutput.Consume(control); return(dcsBIOSOutput); } catch (InvalidOperationException ioe) { throw new Exception("Check DCS-BIOS version. Failed to create DCSBIOSOutput based on control " + controlId + " for airframe " + Airframe.GetDescription() + " ( " + Airframe.GetDescription() + ".json)." + Environment.NewLine + ioe.Message); } } }
public static DCSBIOSControl GetControl(string controlId) { lock (_lockObject) { if (_airframe == DCSAirframe.NONE) { return(null); } try { LoadControls(); return(_dcsbiosControls.Single(controlObject => controlObject.identifier.Equals(controlId))); } catch (InvalidOperationException ioe) { throw new Exception("Failed to find control " + controlId + " for airframe " + Airframe.GetDescription() + ". Did you switch airframe type for the profile and have existing control(s) for the previous type saved?" + Environment.NewLine + ioe.Message); } } }