diff --git a/OpenRA.Game/ModData.cs b/OpenRA.Game/ModData.cs index 138d75978d..917e5de733 100755 --- a/OpenRA.Game/ModData.cs +++ b/OpenRA.Game/ModData.cs @@ -37,9 +37,10 @@ namespace OpenRA if (!Directory.Exists(dir)) return noMaps; - return Directory.GetDirectories(dir) - .Concat(Directory.GetFiles(dir, "*.zip")) - .Concat(Directory.GetFiles(dir, "*.oramap")); + var dirsWithMaps = Directory.GetDirectories(dir) + .Where(d => Directory.GetFiles(d, "map.yaml").Any() && Directory.GetFiles(d, "map.bin").Any()); + + return dirsWithMaps.Concat(Directory.GetFiles(dir, "*.oramap")); } public ModData(params string[] mods) @@ -52,7 +53,7 @@ namespace OpenRA LoadScreen.Display(); WidgetLoader = new WidgetLoader(this); - AvailableMaps = FindMaps(Manifest.Mods); + AvailableMaps = FindMaps(); // HACK: Mount only local folders so we have a half-working environment for the asset installer FileSystem.UnmountAll(); @@ -138,10 +139,9 @@ namespace OpenRA return map; } - Dictionary FindMaps(string[] mods) + Dictionary FindMaps() { - var paths = mods.SelectMany(p => FindMapsIn("mods{0}{1}{0}maps{0}".F(Path.DirectorySeparatorChar, p))) - .Concat(mods.SelectMany(p => FindMapsIn("{1}maps{0}{2}{0}".F(Path.DirectorySeparatorChar, Platform.SupportDir, p)))); + var paths = Manifest.Folders.SelectMany(f => FindMapsIn(f)); var ret = new Dictionary(); diff --git a/mods/cnc/mod.yaml b/mods/cnc/mod.yaml index acc99f5a70..721bfc229d 100644 --- a/mods/cnc/mod.yaml +++ b/mods/cnc/mod.yaml @@ -8,8 +8,10 @@ Folders: . ./mods/cnc ./mods/cnc/bits + ./mods/cnc/maps ./mods/cnc/uibits ~^/Content/cnc + ~^/maps/cnc Packages: overrides.mix diff --git a/mods/d2k/mod.yaml b/mods/d2k/mod.yaml index 15b269af13..4dfc9d9b6f 100644 --- a/mods/d2k/mod.yaml +++ b/mods/d2k/mod.yaml @@ -8,11 +8,13 @@ Folders: . ./mods/d2k ./mods/d2k/bits + ./mods/d2k/maps ./mods/d2k/uibits ./mods/ra/uibits ~^/Content/d2k ~^/Content/d2k/GAMESFX ~^/Content/d2k/Music + ~^/maps/d2k Packages: SOUND.RS diff --git a/mods/d2k/sequences/map.yaml b/mods/d2k/sequences/map.yaml deleted file mode 100644 index f2e820645a..0000000000 --- a/mods/d2k/sequences/map.yaml +++ /dev/null @@ -1,24 +0,0 @@ -crate: - idle: DATA.R8 - Start: 102 - ZOffset: -511 - Offset: -16,-16 - land: DATA.R8 - Start: 102 - ZOffset: -511 - Offset: -16,-16 - -spicebloom: - make: DATA.R8 - Start: 107 - Length: 3 - Offset: -16,-16 - active: DATA.R8 - Start: 109 - Length: 1 - ZOffset: -511 - Offset: -16,-16 - idle: DATA.R8 - Start: 109 - ZOffset: -511 - Offset: -16,-16 \ No newline at end of file diff --git a/mods/ra/mod.yaml b/mods/ra/mod.yaml index 085986af9a..e85e5c2f53 100644 --- a/mods/ra/mod.yaml +++ b/mods/ra/mod.yaml @@ -9,8 +9,10 @@ Folders: ./mods/ra ./mods/ra/bits ./mods/ra/bits/desert + ./mods/ra/maps ./mods/ra/uibits ~^/Content/ra + ~^/maps/ra Packages: ~main.mix diff --git a/mods/ts/mod.yaml b/mods/ts/mod.yaml index e9f041a190..81bb6d7c5b 100644 --- a/mods/ts/mod.yaml +++ b/mods/ts/mod.yaml @@ -9,8 +9,10 @@ Folders: # Tiberian Sun ./mods/ts ./mods/ts/bits + ./mods/ts/maps ./mods/ts/uibits ~^/Content/ts + ~^/maps/ts # Red Alert ./mods/ra/uibits