From 0d65325c959dc38ee47c9c0cb769b966fac93805 Mon Sep 17 00:00:00 2001 From: Eric Oden Date: Thu, 21 Nov 2013 17:09:04 -0600 Subject: [PATCH 1/5] Hopefully fix vessel loading issues. Will probably cause issues for old installs. --- CPU.cs | 88 +++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 63 insertions(+), 25 deletions(-) diff --git a/CPU.cs b/CPU.cs index 7f65b8a..c15a6a4 100644 --- a/CPU.cs +++ b/CPU.cs @@ -345,45 +345,83 @@ internal void UpdateVolumeMounts(List attachedVolumes) public override void OnSave(ConfigNode node) { - ConfigNode contextNode = new ConfigNode("context"); + ConfigNode contextNode = new ConfigNode("context"); - // Save variables - if (Variables.Count > 0) - { - ConfigNode varNode = new ConfigNode("variables"); + // Save variables + if (Variables.Count > 0) + { + ConfigNode varNode = new ConfigNode("variables"); + ConfigNode numNode = new ConfigNode("varnumbers"); + ConfigNode strNode = new ConfigNode("varstrings"); + ConfigNode kostypesNode = new ConfigNode("varkostypes"); - foreach (var kvp in 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())); - } + numNode.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 + varNode.AddValue(kvp.Key, File.EncodeLine(kvp.Value.Value.ToString())); - contextNode.AddNode(varNode); + } } + contextNode.AddNode(strNode); + contextNode.AddNode(kostypesNode); + contextNode.AddNode(numNode); - if (ChildContext != null) - { - ChildContext.OnSave(contextNode); - } + contextNode.AddNode(varNode); + } - node.AddNode(contextNode); + if (ChildContext != null) + { + ChildContext.OnSave(contextNode); + } + + node.AddNode(contextNode); } public override void OnLoad(ConfigNode node) { - foreach (ConfigNode contextNode in node.GetNodes("context")) + foreach (ConfigNode contextNode in node.GetNodes("context")) + { + foreach (ConfigNode varNode in contextNode.GetNodes("varstrings")) { - foreach (ConfigNode varNode in contextNode.GetNodes("variables")) - { - foreach (ConfigNode.Value value in varNode.values) - { - var newVar = CreateVariable(value.name); - newVar.Value = new Expression(File.DecodeLine(value.value), this).GetValue(); - } - } + 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("varnumbers")) + { + foreach (ConfigNode.Value value in varNode.values) + { + var newVar = CreateVariable(value.name); + newVar.Value = Convert.ToDouble(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) From 4d6aed691725fb868c82bca512e3f61699fefd71 Mon Sep 17 00:00:00 2001 From: Eric Oden Date: Thu, 21 Nov 2013 17:34:17 -0600 Subject: [PATCH 2/5] Forgot about booleans. --- CPU.cs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/CPU.cs b/CPU.cs index c15a6a4..0b0a8fd 100644 --- a/CPU.cs +++ b/CPU.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Reflection; @@ -354,6 +354,7 @@ public override void OnSave(ConfigNode node) ConfigNode numNode = new ConfigNode("varnumbers"); ConfigNode strNode = new ConfigNode("varstrings"); ConfigNode kostypesNode = new ConfigNode("varkostypes"); + ConfigNode boolNode = new ConfigNode("varbool"); foreach (var kvp in Variables) { @@ -371,6 +372,10 @@ public override void OnSave(ConfigNode node) { 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())); @@ -379,7 +384,7 @@ public override void OnSave(ConfigNode node) contextNode.AddNode(strNode); contextNode.AddNode(kostypesNode); contextNode.AddNode(numNode); - + contextNode.AddNode(boolNode); contextNode.AddNode(varNode); } @@ -412,6 +417,14 @@ public override void OnLoad(ConfigNode node) } } + 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) From fdd99fb1130b4a35677e0e3060032b02e52b299a Mon Sep 17 00:00:00 2001 From: Eric Oden Date: Sat, 23 Nov 2013 09:17:42 -0600 Subject: [PATCH 3/5] Added int and float nodes. float for legacy and int for time and maybe others. --- CPU.cs | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/CPU.cs b/CPU.cs index 0b0a8fd..fe99d65 100644 --- a/CPU.cs +++ b/CPU.cs @@ -351,7 +351,9 @@ public override void OnSave(ConfigNode node) if (Variables.Count > 0) { ConfigNode varNode = new ConfigNode("variables"); - ConfigNode numNode = new ConfigNode("varnumbers"); + 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"); @@ -362,7 +364,15 @@ public override void OnSave(ConfigNode node) { if (kvp.Value.Value is Double) { - numNode.AddValue(kvp.Key, File.EncodeLine(kvp.Value.Value.ToString())); + dblNode.AddValue(kvp.Key, File.EncodeLine(kvp.Value.Value.ToString())); + } + if (kvp.Value.Value is int) + { + intNode.AddValue(kvp.Key, File.EncodeLine(kvp.Value.Value.ToString())); + } + if (kvp.Value.Value is float) + { + fltNode.AddValue(kvp.Key, File.EncodeLine(kvp.Value.Value.ToString())); } else if (kvp.Value.Value is String) { @@ -383,8 +393,10 @@ public override void OnSave(ConfigNode node) } contextNode.AddNode(strNode); contextNode.AddNode(kostypesNode); - contextNode.AddNode(numNode); - contextNode.AddNode(boolNode); + contextNode.AddNode(dblNode); + contextNode.AddNode(fltNode); + contextNode.AddNode(intNode); + contextNode.AddNode(boolNode); contextNode.AddNode(varNode); } @@ -408,7 +420,7 @@ public override void OnLoad(ConfigNode node) newVar.Value = (string)File.DecodeLine(value.value); } } - foreach (ConfigNode varNode in contextNode.GetNodes("varnumbers")) + foreach (ConfigNode varNode in contextNode.GetNodes("vardouble")) { foreach (ConfigNode.Value value in varNode.values) { @@ -416,6 +428,24 @@ public override void OnLoad(ConfigNode node) newVar.Value = Convert.ToDouble(File.DecodeLine(value.value)); } + } + 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)); + } + + } + foreach (ConfigNode varNode in contextNode.GetNodes("varfloat")) + { + foreach (ConfigNode.Value value in varNode.values) + { + var newVar = CreateVariable(value.name); + newVar.Value = (float)Convert.ToSingle(File.DecodeLine(value.value)); + } + } foreach (ConfigNode varNode in contextNode.GetNodes("varbool")) { From 0629df5fb2105c78bc0a94be4db5dd6af016fbf4 Mon Sep 17 00:00:00 2001 From: Eric Oden Date: Sun, 24 Nov 2013 18:33:09 -0600 Subject: [PATCH 4/5] C# is odd about if/else it seems. Also small indent cleanup. --- CPU.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/CPU.cs b/CPU.cs index fe99d65..3f87664 100644 --- a/CPU.cs +++ b/CPU.cs @@ -360,37 +360,37 @@ public override void OnSave(ConfigNode node) foreach (var kvp in Variables) { + Debug.Log("NAME: " + kvp.Key.ToString()); if (!(kvp.Value is BoundVariable)) { if (kvp.Value.Value is Double) { - dblNode.AddValue(kvp.Key, File.EncodeLine(kvp.Value.Value.ToString())); + dblNode.AddValue(kvp.Key, File.EncodeLine(kvp.Value.Value.ToString())); } - if (kvp.Value.Value is int) + else if (kvp.Value.Value is int) { intNode.AddValue(kvp.Key, File.EncodeLine(kvp.Value.Value.ToString())); } - if (kvp.Value.Value is float) + 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())); + 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())); + 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())); - - } + varNode.AddValue(kvp.Key, File.EncodeLine(kvp.Value.Value.ToString())); } + } contextNode.AddNode(strNode); contextNode.AddNode(kostypesNode); contextNode.AddNode(dblNode); From f21d1be0113d0515a16f264596d99d5fcc6073bf Mon Sep 17 00:00:00 2001 From: Eric Oden Date: Sun, 24 Nov 2013 18:34:48 -0600 Subject: [PATCH 5/5] Removed debug line. --- CPU.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/CPU.cs b/CPU.cs index 3f87664..7594f7b 100644 --- a/CPU.cs +++ b/CPU.cs @@ -360,7 +360,6 @@ public override void OnSave(ConfigNode node) foreach (var kvp in Variables) { - Debug.Log("NAME: " + kvp.Key.ToString()); if (!(kvp.Value is BoundVariable)) { if (kvp.Value.Value is Double)