diff --git a/OpenRA.Editor/Form1.cs b/OpenRA.Editor/Form1.cs index 35c455aec4..f4257b0e6b 100644 --- a/OpenRA.Editor/Form1.cs +++ b/OpenRA.Editor/Form1.cs @@ -393,7 +393,8 @@ namespace OpenRA.Editor if (DialogResult.OK == nmd.ShowDialog()) { - var map = Map.FromTileset(nmd.TheaterBox.SelectedItem as string); + var tileset = OpenRA.Rules.TileSets[nmd.TheaterBox.SelectedItem as string]; + var map = Map.FromTileset(tileset); map.Resize((int)nmd.MapWidth.Value, (int)nmd.MapHeight.Value); map.ResizeCordon((int)nmd.CordonLeft.Value, (int)nmd.CordonTop.Value, diff --git a/OpenRA.Game/Map.cs b/OpenRA.Game/Map.cs index 8399e50a34..75c997da1c 100644 --- a/OpenRA.Game/Map.cs +++ b/OpenRA.Game/Map.cs @@ -109,9 +109,9 @@ namespace OpenRA [FieldLoader.Ignore] public Lazy[,]> MapResources; [FieldLoader.Ignore] public string[,] CustomTerrain; - public static Map FromTileset(string tileset) + public static Map FromTileset(TileSet tileset) { - var tile = OpenRA.Rules.TileSets[tileset].Templates.First(); + var tile = tileset.Templates.First(); var tileRef = new TileReference { Type = tile.Key, Index = (byte)0 }; Map map = new Map() @@ -120,7 +120,7 @@ namespace OpenRA Description = "Describe your map here", Author = "Your name here", MapSize = new int2(1, 1), - Tileset = tileset, + Tileset = tileset.Id, MapResources = Lazy.New(() => new TileReference[1, 1]), MapTiles = Lazy.New(() => new TileReference[1, 1] { { tileRef } }), Actors = Lazy.New(() => new Dictionary()), @@ -149,7 +149,6 @@ namespace OpenRA var yaml = new MiniYaml(null, MiniYaml.FromStream(Container.GetContent("map.yaml"))); FieldLoader.Load(this, yaml); - Uid = ComputeHash(); // Support for formats 1-3 dropped 2011-02-11. // Use release-20110207 to convert older maps to format 4 @@ -198,6 +197,8 @@ namespace OpenRA MapTiles = Lazy.New(() => LoadMapTiles()); MapResources = Lazy.New(() => LoadResourceTiles()); + + Uid = ComputeHash(); } public int2[] GetSpawnPoints() @@ -343,18 +344,12 @@ namespace OpenRA writer.Write((ushort)MapSize.X); writer.Write((ushort)MapSize.Y); - if (!OpenRA.Rules.TileSets.ContainsKey(Tileset)) - throw new InvalidOperationException( - "Tileset used by the map ({0}) does not exist in this mod. Valid tilesets are: {1}" - .F(Tileset, OpenRA.Rules.TileSets.Keys.JoinWith(","))); - // Tile data for (var i = 0; i < MapSize.X; i++) for (var j = 0; j < MapSize.Y; j++) { writer.Write(MapTiles.Value[i, j].Type); - var pickAny = OpenRA.Rules.TileSets[Tileset].Templates[MapTiles.Value[i, j].Type].PickAny; - writer.Write(pickAny ? (byte)(i % 4 + (j % 4) * 4) : MapTiles.Value[i, j].Index); + writer.Write(MapTiles.Value[i, j].Index); } // Resource data diff --git a/OpenRA.Game/ModData.cs b/OpenRA.Game/ModData.cs index 48ae466e28..abbb21f526 100755 --- a/OpenRA.Game/ModData.cs +++ b/OpenRA.Game/ModData.cs @@ -60,8 +60,6 @@ namespace OpenRA LoadScreen.Display(); WidgetLoader = new WidgetLoader(this); - AvailableMaps = FindMaps(); - // HACK: Mount only local folders so we have a half-working environment for the asset installer FileSystem.UnmountAll(); foreach (var dir in Manifest.Folders) @@ -78,6 +76,8 @@ namespace OpenRA SpriteLoader = new SpriteLoader(new string[0], SheetBuilder); VoxelLoader = new VoxelLoader(); CursorProvider.Initialize(Manifest.Cursors); + + AvailableMaps = FindMaps(); } public IEnumerable Languages { get; private set; }