Advertisement
Whiplash141

Custom Data Parser v1

May 30th, 2017
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.15 KB | None | 0 0
  1. Program()
  2. {
  3.     BuildConfig(Me);
  4. }
  5.  
  6. void Main(string argument)
  7. {
  8.     UpdateConfig(Me);
  9.    
  10.  
  11.     Echo($"canSing: {canSing}\nmyAge: {myAge}\nmissileName: {missileName}");
  12. }
  13.  
  14. #region VARIABLE CONFIG
  15. Dictionary<string, string> configDict = new Dictionary<string, string>();
  16.  
  17. void BuildConfig(IMyTerminalBlock block)
  18. {
  19.     configDict.Clear();
  20.     configDict.Add("missileGroupNameTag", missileGroupNameTag.ToString());
  21.     configDict.Add("broadcastAntennaName", broadcastAntennaName.ToString());
  22.     configDict.Add("detachThrustTag", detachThrustTag.ToString());
  23.     configDict.Add("shouldStealth", shouldStealth.ToString());
  24.     configDict.Add("updatesPerSecond", updatesPerSecond.ToString());
  25.     configDict.Add("disconnectDelay", disconnectDelay.ToString());
  26.     configDict.Add("guidanceDelay", guidanceDelay.ToString());
  27.     configDict.Add("detachDuration", detachDuration.ToString());
  28.     configDict.Add("mainIgnitionDelay", mainIgnitionDelay.ToString());
  29.     configDict.Add("driftCompensation", driftCompensation.ToString());
  30.     configDict.Add("enableSpiralTrajectory", enableSpiralTrajectory.ToString());
  31.     configDict.Add("spiralRadius", spiralRadius.ToString());
  32.     configDict.Add("timeMaxSpiral", timeMaxSpiral.ToString());
  33.     configDict.Add("proportionalConstant", proportionalConstant.ToString());
  34.     configDict.Add("derivativeConstant", derivativeConstant.ToString());
  35.     configDict.Add("offsetUp", offsetUp.ToString());
  36.     configDict.Add("offsetLeft", offsetLeft.ToString());
  37.     configDict.Add("missileSpinRPM", missileSpinRPM.ToString());
  38.  
  39.     UpdateConfig(block);
  40. }
  41.  
  42. void UpdateConfig(IMyTerminalBlock block)
  43. {
  44.     string customData = block.CustomData;
  45.     var lines = customData.Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
  46.  
  47.     foreach (var thisLine in lines)
  48.     {
  49.         var words = thisLine.Split('=');
  50.         if (words.Length == 2)
  51.         {
  52.             var variableName = words[0].Trim();
  53.             var variableValue = words[1].Trim();
  54.             string dictValue;
  55.             if (configDict.TryGetValue(variableName, out dictValue))
  56.             {
  57.                 configDict[variableName] = variableValue;
  58.             }
  59.         }
  60.     }
  61.  
  62.     GetVariableFromConfig("missileGroupNameTag", ref missileGroupNameTag);
  63.     GetVariableFromConfig("broadcastAntennaName", ref broadcastAntennaName);
  64.     GetVariableFromConfig("detachThrustTag", ref detachThrustTag);
  65.     GetVariableFromConfig("shouldStealth", ref shouldStealth);
  66.     GetVariableFromConfig("updatesPerSecond", ref updatesPerSecond);
  67.     GetVariableFromConfig("disconnectDelay", ref disconnectDelay);
  68.     GetVariableFromConfig("guidanceDelay", ref guidanceDelay);
  69.     GetVariableFromConfig("detachDuration", ref detachDuration);
  70.     GetVariableFromConfig("mainIgnitionDelay", ref mainIgnitionDelay);
  71.     GetVariableFromConfig("driftCompensation", ref driftCompensation);
  72.     GetVariableFromConfig("enableSpiralTrajectory", ref enableSpiralTrajectory);
  73.     GetVariableFromConfig("spiralRadius", ref spiralRadius);
  74.     GetVariableFromConfig("timeMaxSpiral", ref timeMaxSpiral);
  75.     GetVariableFromConfig("proportionalConstant", ref proportionalConstant);
  76.     GetVariableFromConfig("derivativeConstant", ref derivativeConstant);
  77.     GetVariableFromConfig("offsetUp", ref offsetUp);
  78.     GetVariableFromConfig("offsetLeft", ref offsetLeft);
  79.     GetVariableFromConfig("missileSpinRPM", ref missileSpinRPM);
  80.    
  81.     WriteConfig(block);
  82. }
  83.  
  84. StringBuilder configSB = new StringBuilder();
  85. void WriteConfig(IMyTerminalBlock block)
  86. {
  87.     configSB.Clear();
  88.     foreach (var keyValue in configDict)
  89.     {
  90.         configSB.AppendLine($"{keyValue.Key} = {keyValue.Value}");
  91.     }
  92.  
  93.     block.CustomData = configSB.ToString();
  94. }
  95.  
  96. void GetVariableFromConfig(string name, ref bool variableToUpdate)
  97. {
  98.     string valueStr;
  99.     if (configDict.TryGetValue(name, out valueStr))
  100.     {
  101.         bool thisValue;
  102.         if (bool.TryParse(valueStr, out thisValue))
  103.         {
  104.             variableToUpdate = thisValue;
  105.         }
  106.     }
  107. }
  108.  
  109. void GetVariableFromConfig(string name, ref int variableToUpdate)
  110. {
  111.     string valueStr;
  112.     if (configDict.TryGetValue(name, out valueStr))
  113.     {
  114.         int thisValue;
  115.         if (int.TryParse(valueStr, out thisValue))
  116.         {
  117.             variableToUpdate = thisValue;
  118.         }
  119.     }
  120. }
  121.  
  122. void GetVariableFromConfig(string name, ref float variableToUpdate)
  123. {
  124.     string valueStr;
  125.     if (configDict.TryGetValue(name, out valueStr))
  126.     {
  127.         float thisValue;
  128.         if (float.TryParse(valueStr, out thisValue))
  129.         {
  130.             variableToUpdate = thisValue;
  131.         }
  132.     }
  133. }
  134.  
  135. void GetVariableFromConfig(string name, ref double variableToUpdate)
  136. {
  137.     string valueStr;
  138.     if (configDict.TryGetValue(name, out valueStr))
  139.     {
  140.         double thisValue;
  141.         if (double.TryParse(valueStr, out thisValue))
  142.         {
  143.             variableToUpdate = thisValue;
  144.         }
  145.     }
  146. }
  147.  
  148. void GetVariableFromConfig(string name, ref string variableToUpdate)
  149. {
  150.     string valueStr;
  151.     if (configDict.TryGetValue(name, out valueStr))
  152.     {
  153.         variableToUpdate = valueStr;
  154.     }
  155. }
  156. #endregion
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement