diff --git a/OpenRA.Game/Map.cs b/OpenRA.Game/Map.cs index 1a9fbee044..bf1f26d78a 100644 --- a/OpenRA.Game/Map.cs +++ b/OpenRA.Game/Map.cs @@ -70,6 +70,7 @@ namespace OpenRA public string Author; public string Tileset; public bool AllowStartUnitConfig = true; + public Bitmap CustomPreview; [FieldLoader.LoadUsing("LoadOptions")] public MapOptions Options; @@ -226,6 +227,9 @@ namespace OpenRA Save(path); Uid = ComputeHash(); + + if (Container.Exists("map.png")) + CustomPreview = new Bitmap(Container.GetContent("map.png")); } public CPos[] GetSpawnPoints() diff --git a/OpenRA.Game/MapCache.cs b/OpenRA.Game/MapCache.cs index fa751824f1..2bc12027e5 100755 --- a/OpenRA.Game/MapCache.cs +++ b/OpenRA.Game/MapCache.cs @@ -107,7 +107,7 @@ namespace OpenRA // the next render cycle. // (d) Any partially written bytes from the next minimap is in an // unallocated area, and will be committed in the next cycle. - var bitmap = Minimap.RenderMapPreview(p.Map, true); + var bitmap = p.CustomPreview ?? Minimap.RenderMapPreview(p.Map, true); p.Minimap = sheetBuilder.Add(bitmap); lock (syncRoot) diff --git a/OpenRA.Game/MapPreview.cs b/OpenRA.Game/MapPreview.cs index 1bb8352d89..de0e3d1425 100755 --- a/OpenRA.Game/MapPreview.cs +++ b/OpenRA.Game/MapPreview.cs @@ -33,6 +33,7 @@ namespace OpenRA public int PlayerCount { get; private set; } public List SpawnPoints { get; private set; } public Rectangle Bounds { get; private set; } + public Bitmap CustomPreview { get; private set; } public Map Map { get; private set; } public MapStatus Status { get; private set; } @@ -85,6 +86,7 @@ namespace OpenRA PlayerCount = m.Players.Count(x => x.Value.Playable); Bounds = m.Bounds; SpawnPoints = m.GetSpawnPoints().ToList(); + CustomPreview = m.CustomPreview; Status = MapStatus.Available; } }