DCS Interface Creation Example OH6A - HeliosVirtualCockpit/Helios GitHub Wiki

Parsing Devices (device.Lua)

Regex for Devices

``

List to create the contents of the c# enumeration

``

Regex for Commands (command.lua)

\s*(?<command>[a-zA-Z0-9_]*)\s*\=\s*((?<commandNumber>\d*)|counter\(\))\s*,

List to create the contents of the c# enumeration

${command} = ${commandNumber},\n

Parsing FlagValues (MainPanel.Lua)

Regex for Flag Values

.*CreateGauge\(.*\).*\n.*\.arg_number.*= (?<argID>\d{1,3}).*\n.*\.input.*= \{(?<input>(0, 1)|(0.0, 1.0))\}.*\n.*\.output.*\= \{(?<output>(0, 1)|(0.0, 1.0))\}.*\n.*parameter_name.*\= ""Warning_(?<name>.*)""

List

\t\tAddFunction(new FlagValue(this,"${argID}","Warning Lights","${name}","On when indicator lit"));\n

Parsing Network values between 0 & 1 and -1 & 1 (MainPanel.Lua)

Regex for Network Values

.*CreateGauge\(.*\).*\n.*\.arg_number.*=\s*(?<argID>\d{1,3}).*\n.*\.input.*=\s*\{(?<input>(0, 1)|(0.0, 1.0)|(-1.0, 1.0))\}.*\n.*\.output.*\=\s*\{(?<output>(0, 1)|(0.0, 1.0)|(-1.0, 1.0))\}.*\n.*parameter_name.*\=\s*""(?!Warning_)(?<name>.*)""

List

\t\tAddFunction(new NetworkValue(this,"${argID}","Network Values","${name}", "", "from ${input}", BindingValueUnits.Numeric));\n

Parsing Scaled Network values (MainPanel.Lua)

Regex for Network Values

.*CreateGauge\(.*\).*\n.*\.arg_number.*=\s*(?<argID>\d{1,3}).*\n.*\.input.*=\s*\{(?<input>(?<input1>.*),\s*(?<input2>.*))\}.*\n.*\.output.*\=\s*\{(?<output>(?<output1>.*),\s*(?<output2>.*))\}.*\n.*parameter_name.*\=\s*""(?!Warning_)(?<name>[a-zA-Z0-9_]*)""

List

\t\tCalibrationPointCollectionDouble ${name}Scale = new CalibrationPointCollectionDouble(${output1}d, ${input1}d, ${output2}d, ${input2}d){\n\t// output ${input}\n\t// input ${output}\n\t//new CalibrationPointDouble(-1.0d, -1d)\n};\nAddFunction(new ScaledNetworkValue(this,"${argID}", ${name}Scale, "Scaled Network Values","${name}", "", "from ${input}", BindingValueUnits.Numeric));\n

Parsing Clickables (clickable_data.Lua)

General Regex for Clickables

\s*elements\[""(?<element>[aa-zA-Z0-9_]*)""\]\s*=\s*(?<function>[a-zA-Z0-9_]*)\(_\(.*""(?<functionName>[a-zA-Z0-9_ \-\.\/,]*)""\)\s*,.*devices\.(?<device>[a-zA-Z0-9_]*)\s*,\s*\n*\s*(?<commandDevice>.*)_commands\.(?<deviceCommand>[a-zA-Z0-9_ \-\.\/]*)\s*,\s*\n*\s*(?<argId>\d+)\s*,\s*(((?<val1>[a-zA-Z0-9.\-\/\(\)\{\} \*]+)\s*,\s*(?<val2>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+)\s*,\s*(?<val3>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+)\s*,\s*(?<val4>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+)\s*,\s*(?<val5>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+)\s*,\s*(?<val6>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+))|((?<val1>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+)\s*,\s*(?<val2>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+)\s*,\s*(?<val3>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+)\s*,\s*(?<val4>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+)\s*,\s*(?<val5>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+))|((?<val1>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+)\s*,\s*(?<val2>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+)\s*,\s*(?<val3>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+)\s*,\s*(?<val4>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+))|((?<val1>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+)\s*,\s*(?<val2>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+)\s*,\s*(?<val3>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+))|((?<val1>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+)\s*,\s*(?<val2>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+))|((?<val1>[a-zA-Z0-9.\-\/\(\)\{\}\, \*]+)))\).*

List default_axis & default_axis_limited

\t\tAddFunction(new Axis(this, devices.${device}.ToString("d"), ${commandDevice}_commands.${deviceCommand}.ToString("d"), "${argId}", ${val2}d, ${val1}d, 1.0d, "${device}", "${functionName}"));\t\t// ${val3} ${val4} ${val5}, ${val6}\n

List default_button

\t\tAddFunction(new PushButton(this, devices.${device}.ToString("d"), ${commandDevice}_commands.${deviceCommand}.ToString("d"), "${argId}", "${device}", "${functionName}", "%.1f"));\t\t// ${val1} ${val4} ${val5}, ${val6}\n

List default_red_cover

\t\tAddFunction(Switch.CreateToggleSwitch(this, devices.${device}.ToString("d"), ${commandDevice}_commands.${deviceCommand}.ToString("d"), "${argId}", "1.0", "Open", "0.0", "Closed", "${device}", "${functionName}", "%.1f"));\t\t// ${val1} ${val4} ${val5}, ${val6}\n

List multiposition_switch

\t\tAddFunction(new Switch(this, devices.${device}.ToString("d"), "${argId}", SwitchPositions.Create(${val1}, 0.0d, ${val2}d, ${commandDevice}_commands.${deviceCommand}.ToString("d"), "Position", "%0.3f"), "${device}", "${functionName}", "%.3f"));\t\t// ${val1}, ${val2}, ${val3}, ${val4}, ${val5}, ${val6}\n

⚠️ **GitHub.com Fallback** ⚠️