public static Map MergeMaps(Map baseMap, string assetName) { // If there's no maps to inject, we can just skip all this if (!RegisteredMaps.ContainsKey(assetName) || RegisteredMaps[assetName].Count == 0) { return(baseMap); } // If we've already merged this map, just return that if (MergedMaps.ContainsKey(assetName)) { return(MergedMaps[assetName]); } // An array of the maps that need to be injected into the base map MapInformation[] injectedMaps = RegisteredMaps[assetName].ToArray(); // Merge the maps Map mergedMap = MergeMaps(baseMap, injectedMaps); // Store the merged map if (!MergedMaps.ContainsKey(assetName)) { MergedMaps.Add(assetName, mergedMap); } else { MergedMaps[assetName] = mergedMap; } return(mergedMap); }
public static void RegisterMap(Mod owner, string assetName, MapInformation mapInformation) { if (!RegisteredMaps.ContainsKey(assetName)) { RegisteredMaps[assetName] = new List <MapInformation>(); } RegisteredMaps[assetName].Add(mapInformation); }