diff options
| -rw-r--r-- | DTUtility.c | 23 |
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;
}
|
