Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 107 additions & 27 deletions CPU.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
Expand Down Expand Up @@ -345,45 +345,125 @@ internal void UpdateVolumeMounts(List<Volume> attachedVolumes)

public override void OnSave(ConfigNode node)
{
ConfigNode contextNode = new ConfigNode("context");

// Save variables
if (Variables.Count > 0)
ConfigNode contextNode = new ConfigNode("context");

// Save variables
if (Variables.Count > 0)
{
ConfigNode varNode = new ConfigNode("variables");
ConfigNode dblNode = new ConfigNode("vardouble");
ConfigNode intNode = new ConfigNode("varint");
ConfigNode fltNode = new ConfigNode("varfloat");
ConfigNode strNode = new ConfigNode("varstrings");
ConfigNode kostypesNode = new ConfigNode("varkostypes");
ConfigNode boolNode = new ConfigNode("varbool");

foreach (var kvp in Variables)
{
ConfigNode varNode = new ConfigNode("variables");

foreach (var kvp in Variables)
if (!(kvp.Value is BoundVariable))
{
if (kvp.Value.Value is Double)
{
if (!(kvp.Value is BoundVariable))
{
varNode.AddValue(kvp.Key, File.EncodeLine(kvp.Value.Value.ToString()));
}
dblNode.AddValue(kvp.Key, File.EncodeLine(kvp.Value.Value.ToString()));
}

contextNode.AddNode(varNode);
else if (kvp.Value.Value is int)
{
intNode.AddValue(kvp.Key, File.EncodeLine(kvp.Value.Value.ToString()));
}
else if (kvp.Value.Value is float)
{
fltNode.AddValue(kvp.Key, File.EncodeLine(kvp.Value.Value.ToString()));
}
else if (kvp.Value.Value is String)
{
strNode.AddValue(kvp.Key, File.EncodeLine(kvp.Value.Value.ToString()));
}
else if (kvp.Value.Value is kOS.SpecialValue)
{
kostypesNode.AddValue(kvp.Key, File.EncodeLine(kvp.Value.Value.ToString()));
}
else if (kvp.Value.Value is Boolean)
{
boolNode.AddValue(kvp.Key, File.EncodeLine(kvp.Value.Value.ToString()));
}
else
varNode.AddValue(kvp.Key, File.EncodeLine(kvp.Value.Value.ToString()));
}
}
contextNode.AddNode(strNode);
contextNode.AddNode(kostypesNode);
contextNode.AddNode(dblNode);
contextNode.AddNode(fltNode);
contextNode.AddNode(intNode);
contextNode.AddNode(boolNode);
contextNode.AddNode(varNode);
}

if (ChildContext != null)
{
ChildContext.OnSave(contextNode);
}

node.AddNode(contextNode);
}

if (ChildContext != null)
public override void OnLoad(ConfigNode node)
{
foreach (ConfigNode contextNode in node.GetNodes("context"))
{
foreach (ConfigNode varNode in contextNode.GetNodes("varstrings"))
{
ChildContext.OnSave(contextNode);
foreach (ConfigNode.Value value in varNode.values)
{
var newVar = CreateVariable(value.name);
newVar.Value = (string)File.DecodeLine(value.value);
}
}
foreach (ConfigNode varNode in contextNode.GetNodes("vardouble"))
{
foreach (ConfigNode.Value value in varNode.values)
{
var newVar = CreateVariable(value.name);
newVar.Value = Convert.ToDouble(File.DecodeLine(value.value));
}

node.AddNode(contextNode);
}
}
foreach (ConfigNode varNode in contextNode.GetNodes("varint"))
{
foreach (ConfigNode.Value value in varNode.values)
{
var newVar = CreateVariable(value.name);
newVar.Value = (int)Convert.ToInt32(File.DecodeLine(value.value));
}

public override void OnLoad(ConfigNode node)
{
foreach (ConfigNode contextNode in node.GetNodes("context"))
}
foreach (ConfigNode varNode in contextNode.GetNodes("varfloat"))
{
foreach (ConfigNode varNode in contextNode.GetNodes("variables"))
foreach (ConfigNode.Value value in varNode.values)
{
foreach (ConfigNode.Value value in varNode.values)
{
var newVar = CreateVariable(value.name);
newVar.Value = new Expression(File.DecodeLine(value.value), this).GetValue();
}
var newVar = CreateVariable(value.name);
newVar.Value = (float)Convert.ToSingle(File.DecodeLine(value.value));
}

}
foreach (ConfigNode varNode in contextNode.GetNodes("varbool"))
{
foreach (ConfigNode.Value value in varNode.values)
{
var newVar = CreateVariable(value.name);
newVar.Value = Convert.ToBoolean(File.DecodeLine(value.value));
}
}
foreach (ConfigNode varNode in contextNode.GetNodes("varkostypes"))
{
foreach (ConfigNode.Value value in varNode.values)
{
var newVar = CreateVariable(value.name);
newVar.Value = new Expression(File.DecodeLine(value.value), this).GetValue();
}

}
}
}

public override string GetVolumeBestIdentifier(Volume SelectedVolume)
Expand Down