summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2019-08-01 01:20:24 +0200
committerMarkus Mittendrein <git@maxmitti.tk>2019-08-01 01:20:24 +0200
commit446f7d337e59370056bd2ae66dfe4f9d1e117e9d (patch)
tree6fefc7563aaf1ff39c43c8842bee29bd6141bdcc
parent2325b3df8c5c343ec59f7faf909f890e32ace35e (diff)
downloadSystem.c4g-446f7d337e59370056bd2ae66dfe4f9d1e117e9d.tar.gz
System.c4g-446f7d337e59370056bd2ae66dfe4f9d1e117e9d.zip
DTUtility: Add recursive option to Extend
-rw-r--r--DTUtility.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/DTUtility.c b/DTUtility.c
index 7312ee9..5d09614 100644
--- a/DTUtility.c
+++ b/DTUtility.c
@@ -850,11 +850,28 @@ global func GetPlayerByID(int id)
return NO_OWNER;
}
-global func Extend(map base, map extension)
+global func Extend(map base, map extension, bool recursive)
{
- for(var key, value in extension)
+ if(recursive)
{
- base[key] = value;
+ for(var key, value in extension)
+ {
+ if(GetType(base[key]) == C4V_Map && GetType(value) == C4V_Map)
+ {
+ base[key] = Extend(base[key], value, true);
+ }
+ else
+ {
+ base[key] = value;
+ }
+ }
+ }
+ else
+ {
+ for(var key, value in extension)
+ {
+ base[key] = value;
+ }
}
return base;
}