diff --git a/OpenRA.FileFormats/Map/Map.cs b/OpenRA.FileFormats/Map/Map.cs index e2f1ed6a07..5f351376e1 100644 --- a/OpenRA.FileFormats/Map/Map.cs +++ b/OpenRA.FileFormats/Map/Map.cs @@ -30,7 +30,8 @@ namespace OpenRA.FileFormats public class Map { public IFolder Package; - + public string Uid; + // Yaml map data public int MapFormat = 1; public string Title; @@ -63,7 +64,7 @@ namespace OpenRA.FileFormats public IEnumerable SpawnPoints {get {return Waypoints.Select(kv => kv.Value);}} static List SimpleFields = new List() { - "MapFormat", "Title", "Description", "Author", "PlayerCount", "Tileset", "MapSize", "TopLeft", "BottomRight" + "Uid", "MapFormat", "Title", "Description", "Author", "PlayerCount", "Tileset", "MapSize", "TopLeft", "BottomRight" }; public Map() {} diff --git a/OpenRA.FileFormats/Map/MapStub.cs b/OpenRA.FileFormats/Map/MapStub.cs new file mode 100644 index 0000000000..ceb648331a --- /dev/null +++ b/OpenRA.FileFormats/Map/MapStub.cs @@ -0,0 +1,62 @@ +#region Copyright & License Information +/* + * Copyright 2007,2009,2010 Chris Forbes, Robert Pepperell, Matthew Bowra-Dean, Paul Chote, Alli Witheford. + * This file is part of OpenRA. + * + * OpenRA is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenRA is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenRA. If not, see . + */ +#endregion + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Reflection; + +namespace OpenRA.FileFormats +{ + public class MapStub + { + public IFolder Package; + + // Yaml map data + public string Uid; + public string Title; + public string Description; + public string Author; + public int PlayerCount; + public string Preview; + public string Tileset; + + public int2 TopLeft; + public int2 BottomRight; + public int Width {get {return BottomRight.X - TopLeft.X;}} + public int Height {get {return BottomRight.Y - TopLeft.Y;}} + + static List Fields = new List() { + "Uid", "Title", "Description", "Author", "PlayerCount", "Tileset", "Preview", "TopLeft", "BottomRight" + }; + + public MapStub() {} + + public MapStub(IFolder package) + { + Package = package; + var yaml = MiniYaml.FromStream(Package.GetContent("map.yaml")); + + FieldLoader.LoadFields(this,yaml,Fields); + } + } +} diff --git a/OpenRA.FileFormats/OpenRA.FileFormats.csproj b/OpenRA.FileFormats/OpenRA.FileFormats.csproj index b1d9e1ab9e..22726b9a1d 100644 --- a/OpenRA.FileFormats/OpenRA.FileFormats.csproj +++ b/OpenRA.FileFormats/OpenRA.FileFormats.csproj @@ -101,6 +101,7 @@ +