From a55b8659c7187619ee6963f6bcb8c60fcaffda96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20Mail=C3=A4nder?= Date: Sat, 25 Jun 2016 09:41:57 +0200 Subject: [PATCH] Avoid importing spawn points with the same location. --- OpenRA.Mods.Common/UtilityCommands/Extensions.cs | 12 ++++++++++++ .../UtilityCommands/ImportLegacyMapCommand.cs | 4 ++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/OpenRA.Mods.Common/UtilityCommands/Extensions.cs b/OpenRA.Mods.Common/UtilityCommands/Extensions.cs index f8e3a48b26..af74146459 100644 --- a/OpenRA.Mods.Common/UtilityCommands/Extensions.cs +++ b/OpenRA.Mods.Common/UtilityCommands/Extensions.cs @@ -9,6 +9,8 @@ */ #endregion +using System; +using System.Collections.Generic; using System.Data; using System.Text; @@ -50,5 +52,15 @@ namespace OpenRA.Mods.Common.UtilityCommands return result.ToString(); } + + public static IEnumerable DistinctBy(this IEnumerable source, Func keySelector) + { + var knownKeys = new HashSet(); + foreach (TSource element in source) + { + if (knownKeys.Add(keySelector(element))) + yield return element; + } + } } } \ No newline at end of file diff --git a/OpenRA.Mods.Common/UtilityCommands/ImportLegacyMapCommand.cs b/OpenRA.Mods.Common/UtilityCommands/ImportLegacyMapCommand.cs index 87bb41bf72..322b5ed2a6 100644 --- a/OpenRA.Mods.Common/UtilityCommands/ImportLegacyMapCommand.cs +++ b/OpenRA.Mods.Common/UtilityCommands/ImportLegacyMapCommand.cs @@ -255,8 +255,8 @@ namespace OpenRA.Mods.Common.UtilityCommands .Select(kv => Pair.New(Exts.ParseIntegerInvariant(kv.Key), LocationFromMapOffset(Exts.ParseIntegerInvariant(kv.Value), MapSize))); - // Add waypoint actors - foreach (var kv in wps) + // Add waypoint actors skipping duplicate entries + foreach (var kv in wps.DistinctBy(location => location.Second)) { if (!singlePlayer && kv.First <= 7) {