Skip to content

Commit 22ccd1e

Browse files
author
Swamp Ig
committed
ValueDelete test and bugfix
1 parent 48bff40 commit 22ccd1e

File tree

2 files changed

+50
-5
lines changed

2 files changed

+50
-5
lines changed

Tests/ValueDelete.cfg

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
2+
MMTEST
3+
{
4+
name = valueDelete
5+
MODULE
6+
{
7+
name = module1
8+
multiVal = one
9+
multiVal = two
10+
multiVal2 = one
11+
multiVal2 = two
12+
numeric = 0
13+
}
14+
}
15+
16+
// Adds value to module2
17+
@MMTEST[valueDelete]
18+
{
19+
// Copy new module 2
20+
@MODULE[module1]
21+
{
22+
// Unindexed (remove all)
23+
-multiVal = dummy
24+
// Indexed
25+
-multiVal2,0 = dummy
26+
}
27+
}
28+
29+
MMTEST_EXPECT
30+
{
31+
MMTEST
32+
{
33+
name = valueDelete
34+
MODULE
35+
{
36+
name = module1
37+
multiVal2 = two
38+
numeric = 0
39+
}
40+
}
41+
}

moduleManager.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,8 @@ public void ApplyPatch(List<String> excludePaths, string Stage)
488488
public ConfigNode ModifyNode(ConfigNode original, ConfigNode mod)
489489
{
490490
ConfigNode newNode = DeepCopy(original);
491-
491+
492+
#region Values
492493
string vals = "[ModuleManager] modding values";
493494
foreach (ConfigNode.Value modVal in mod.values)
494495
{
@@ -586,7 +587,7 @@ public ConfigNode ModifyNode(ConfigNode original, ConfigNode mod)
586587
// If there is an index, use it.
587588
ConfigNode.Value v = FindValueIn(newNode, valName, index);
588589
if (v != null)
589-
newNode.values.Remove(modVal);
590+
newNode.values.Remove(v);
590591
}
591592
else
592593
{
@@ -597,7 +598,9 @@ public ConfigNode ModifyNode(ConfigNode original, ConfigNode mod)
597598
}
598599
}
599600
//print(vals);
601+
#endregion
600602

603+
#region Nodes
601604
foreach (ConfigNode subMod in mod.nodes)
602605
{
603606
subMod.name = RemoveWS(subMod.name);
@@ -751,6 +754,8 @@ public ConfigNode ModifyNode(ConfigNode original, ConfigNode mod)
751754
//print(msg);
752755
}
753756
}
757+
#endregion
758+
754759
return newNode;
755760
}
756761

@@ -1077,13 +1082,12 @@ public static ConfigNode FindConfigNodeIn(ConfigNode src, string nodeType,
10771082
private static ConfigNode.Value FindValueIn(ConfigNode newNode, string valName, int index)
10781083
{
10791084
ConfigNode.Value v = null;
1080-
int upto = 0;
10811085
for (int i = 0; i < newNode.values.Count; ++i)
10821086
if (WildcardMatch(newNode.values[i].name, valName))
10831087
{
10841088
v = newNode.values[i];
1085-
if (upto++ == index)
1086-
break;
1089+
if (--index < 0)
1090+
return v;
10871091
}
10881092
return v;
10891093
}

0 commit comments

Comments
 (0)