Merge pull request #10898 from pchote/map-format-eleven

Add support for multiple map categories.
This commit is contained in:
Pavel Penev
2016-03-27 18:16:51 +03:00
191 changed files with 249 additions and 197 deletions

View File

@@ -153,7 +153,7 @@ namespace OpenRA
public class Map : IReadOnlyFileSystem public class Map : IReadOnlyFileSystem
{ {
public const int SupportedMapFormat = 10; public const int SupportedMapFormat = 11;
/// <summary>Defines the order of the fields in map.yaml</summary> /// <summary>Defines the order of the fields in map.yaml</summary>
static readonly MapField[] YamlFields = static readonly MapField[] YamlFields =
@@ -166,7 +166,7 @@ namespace OpenRA
new MapField("MapSize"), new MapField("MapSize"),
new MapField("Bounds"), new MapField("Bounds"),
new MapField("Visibility"), new MapField("Visibility"),
new MapField("Type"), new MapField("Categories"),
new MapField("LockPreview", required: false, ignoreIfValue: "False"), new MapField("LockPreview", required: false, ignoreIfValue: "False"),
new MapField("Players", "PlayerDefinitions"), new MapField("Players", "PlayerDefinitions"),
new MapField("Actors", "ActorDefinitions"), new MapField("Actors", "ActorDefinitions"),
@@ -192,7 +192,7 @@ namespace OpenRA
public bool LockPreview; public bool LockPreview;
public Rectangle Bounds; public Rectangle Bounds;
public MapVisibility Visibility = MapVisibility.Lobby; public MapVisibility Visibility = MapVisibility.Lobby;
public string Type = "Conquest"; public string[] Categories = { "Conquest" };
public int2 MapSize { get; private set; } public int2 MapSize { get; private set; }

View File

@@ -44,7 +44,7 @@ namespace OpenRA
{ {
public readonly string title; public readonly string title;
public readonly string author; public readonly string author;
public readonly string map_type; public readonly string[] categories;
public readonly int players; public readonly int players;
public readonly Rectangle bounds; public readonly Rectangle bounds;
public readonly int[] spawnpoints = { }; public readonly int[] spawnpoints = { };
@@ -64,7 +64,7 @@ namespace OpenRA
IReadOnlyPackage parentPackage; IReadOnlyPackage parentPackage;
public string Title { get; private set; } public string Title { get; private set; }
public string Type { get; private set; } public string[] Categories { get; private set; }
public string Author { get; private set; } public string Author { get; private set; }
public string TileSet { get; private set; } public string TileSet { get; private set; }
public MapPlayers Players { get; private set; } public MapPlayers Players { get; private set; }
@@ -116,7 +116,7 @@ namespace OpenRA
Uid = uid; Uid = uid;
Title = "Unknown Map"; Title = "Unknown Map";
Type = "Unknown"; Categories = new[] { "Unknown" };
Author = "Unknown Author"; Author = "Unknown Author";
PlayerCount = 0; PlayerCount = 0;
Bounds = Rectangle.Empty; Bounds = Rectangle.Empty;
@@ -153,8 +153,8 @@ namespace OpenRA
if (yaml.TryGetValue("Title", out temp)) if (yaml.TryGetValue("Title", out temp))
Title = temp.Value; Title = temp.Value;
if (yaml.TryGetValue("Type", out temp)) if (yaml.TryGetValue("Categories", out temp))
Type = temp.Value; Categories = FieldLoader.GetValue<string[]>("Categories", temp.Value);
if (yaml.TryGetValue("Tileset", out temp)) if (yaml.TryGetValue("Tileset", out temp))
TileSet = temp.Value; TileSet = temp.Value;
if (yaml.TryGetValue("Author", out temp)) if (yaml.TryGetValue("Author", out temp))
@@ -257,7 +257,7 @@ namespace OpenRA
return false; return false;
// Other map types may have confusing settings or gameplay // Other map types may have confusing settings or gameplay
if (Type != "Conquest") if (!Categories.Contains("Conquest"))
return false; return false;
// Maps with bots disabled confuse new players // Maps with bots disabled confuse new players
@@ -290,7 +290,7 @@ namespace OpenRA
} }
Title = r.title; Title = r.title;
Type = r.map_type; Categories = r.categories;
Author = r.author; Author = r.author;
PlayerCount = r.players; PlayerCount = r.players;
Bounds = r.bounds; Bounds = r.bounds;

View File

@@ -10,6 +10,7 @@
#endregion #endregion
using System; using System;
using System.Linq;
using OpenRA.Traits; using OpenRA.Traits;
namespace OpenRA.Mods.Common.Lint namespace OpenRA.Mods.Common.Lint
@@ -28,8 +29,8 @@ namespace OpenRA.Mods.Common.Lint
if (map.Title == null) if (map.Title == null)
emitError("Map does not define a valid title."); emitError("Map does not define a valid title.");
if (map.Type == null) if (!map.Categories.Any())
emitError("Map does not define a valid type."); emitError("Map does not define any categories.");
} }
} }
} }

View File

@@ -994,6 +994,14 @@ namespace OpenRA.Mods.Common.UtilityCommands
yaml.Nodes.Add(new MiniYamlNode("LockPreview", new MiniYaml("True"))); yaml.Nodes.Add(new MiniYamlNode("LockPreview", new MiniYaml("True")));
} }
// Format 10 -> 11 replaced the single map type field with a list of categories
if (mapFormat < 11)
{
var type = yaml.Nodes.First(n => n.Key == "Type");
yaml.Nodes.Add(new MiniYamlNode("Categories", type.Value));
yaml.Nodes.Remove(type);
}
if (mapFormat < Map.SupportedMapFormat) if (mapFormat < Map.SupportedMapFormat)
{ {
yaml.Nodes.First(n => n.Key == "MapFormat").Value = new MiniYaml(Map.SupportedMapFormat.ToString()); yaml.Nodes.First(n => n.Key == "MapFormat").Value = new MiniYaml(Map.SupportedMapFormat.ToString());

View File

@@ -98,12 +98,17 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var titleText = widget.Get<LabelWidget>("TITLE"); var titleText = widget.Get<LabelWidget>("TITLE");
var titleTextNoTabs = widget.GetOrNull<LabelWidget>("TITLE_NO_TABS"); var titleTextNoTabs = widget.GetOrNull<LabelWidget>("TITLE_NO_TABS");
var mapTitle = world.Map.Title;
var firstCategory = world.Map.Categories.FirstOrDefault();
if (firstCategory != null)
mapTitle = firstCategory + ": " + mapTitle;
titleText.IsVisible = () => numTabs > 1 || (numTabs == 1 && titleTextNoTabs == null); titleText.IsVisible = () => numTabs > 1 || (numTabs == 1 && titleTextNoTabs == null);
titleText.GetText = () => string.Concat(world.Map.Type, ": ", world.Map.Title); titleText.GetText = () => mapTitle;
if (titleTextNoTabs != null) if (titleTextNoTabs != null)
{ {
titleTextNoTabs.IsVisible = () => numTabs == 1; titleTextNoTabs.IsVisible = () => numTabs == 1;
titleTextNoTabs.GetText = () => string.Concat(world.Map.Type, ": ", world.Map.Title); titleTextNoTabs.GetText = () => mapTitle;
} }
var bg = widget.Get<BackgroundWidget>("BACKGROUND"); var bg = widget.Get<BackgroundWidget>("BACKGROUND");

View File

@@ -9,6 +9,7 @@
*/ */
#endregion #endregion
using System.Linq;
using OpenRA.Network; using OpenRA.Network;
using OpenRA.Widgets; using OpenRA.Widgets;
@@ -43,7 +44,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var typeLabel = available.GetOrNull<LabelWidget>("MAP_TYPE"); var typeLabel = available.GetOrNull<LabelWidget>("MAP_TYPE");
if (typeLabel != null) if (typeLabel != null)
typeLabel.GetText = () => lobby.Map.Type; {
var type = new CachedTransform<MapPreview, string>(m => lobby.Map.Categories.FirstOrDefault() ?? "");
typeLabel.GetText = () => type.Update(lobby.Map);
}
var authorLabel = available.GetOrNull<LabelWidget>("MAP_AUTHOR"); var authorLabel = available.GetOrNull<LabelWidget>("MAP_AUTHOR");
if (authorLabel != null) if (authorLabel != null)
@@ -65,13 +69,16 @@ namespace OpenRA.Mods.Common.Widgets.Logic
preview.OnMouseDown = mi => LobbyUtils.SelectSpawnPoint(orderManager, preview, lobby.Map, mi); preview.OnMouseDown = mi => LobbyUtils.SelectSpawnPoint(orderManager, preview, lobby.Map, mi);
preview.SpawnOccupants = () => LobbyUtils.GetSpawnOccupants(orderManager.LobbyInfo, lobby.Map); preview.SpawnOccupants = () => LobbyUtils.GetSpawnOccupants(orderManager.LobbyInfo, lobby.Map);
var title = invalid.GetOrNull<LabelWidget>("MAP_TITLE"); var titleLabel = invalid.GetOrNull<LabelWidget>("MAP_TITLE");
if (title != null) if (titleLabel != null)
title.GetText = () => lobby.Map.Title; titleLabel.GetText = () => lobby.Map.Title;
var type = invalid.GetOrNull<LabelWidget>("MAP_TYPE"); var typeLabel = invalid.GetOrNull<LabelWidget>("MAP_TYPE");
if (type != null) if (typeLabel != null)
type.GetText = () => lobby.Map.Type; {
var type = new CachedTransform<MapPreview, string>(m => lobby.Map.Categories.FirstOrDefault() ?? "");
typeLabel.GetText = () => type.Update(lobby.Map);
}
} }
var download = widget.GetOrNull("MAP_DOWNLOADABLE"); var download = widget.GetOrNull("MAP_DOWNLOADABLE");
@@ -84,17 +91,20 @@ namespace OpenRA.Mods.Common.Widgets.Logic
preview.OnMouseDown = mi => LobbyUtils.SelectSpawnPoint(orderManager, preview, lobby.Map, mi); preview.OnMouseDown = mi => LobbyUtils.SelectSpawnPoint(orderManager, preview, lobby.Map, mi);
preview.SpawnOccupants = () => LobbyUtils.GetSpawnOccupants(orderManager.LobbyInfo, lobby.Map); preview.SpawnOccupants = () => LobbyUtils.GetSpawnOccupants(orderManager.LobbyInfo, lobby.Map);
var title = download.GetOrNull<LabelWidget>("MAP_TITLE"); var titleLabel = download.GetOrNull<LabelWidget>("MAP_TITLE");
if (title != null) if (titleLabel != null)
title.GetText = () => lobby.Map.Title; titleLabel.GetText = () => lobby.Map.Title;
var type = download.GetOrNull<LabelWidget>("MAP_TYPE"); var typeLabel = download.GetOrNull<LabelWidget>("MAP_TYPE");
if (type != null) if (typeLabel != null)
type.GetText = () => lobby.Map.Type; {
var type = new CachedTransform<MapPreview, string>(m => lobby.Map.Categories.FirstOrDefault() ?? "");
typeLabel.GetText = () => type.Update(lobby.Map);
}
var author = download.GetOrNull<LabelWidget>("MAP_AUTHOR"); var authorLabel = download.GetOrNull<LabelWidget>("MAP_AUTHOR");
if (author != null) if (authorLabel != null)
author.GetText = () => "Created by {0}".F(lobby.Map.Author); authorLabel.GetText = () => "Created by {0}".F(lobby.Map.Author);
var install = download.GetOrNull<ButtonWidget>("MAP_INSTALL"); var install = download.GetOrNull<ButtonWidget>("MAP_INSTALL");
if (install != null) if (install != null)
@@ -116,13 +126,17 @@ namespace OpenRA.Mods.Common.Widgets.Logic
preview.OnMouseDown = mi => LobbyUtils.SelectSpawnPoint(orderManager, preview, lobby.Map, mi); preview.OnMouseDown = mi => LobbyUtils.SelectSpawnPoint(orderManager, preview, lobby.Map, mi);
preview.SpawnOccupants = () => LobbyUtils.GetSpawnOccupants(orderManager.LobbyInfo, lobby.Map); preview.SpawnOccupants = () => LobbyUtils.GetSpawnOccupants(orderManager.LobbyInfo, lobby.Map);
var title = progress.GetOrNull<LabelWidget>("MAP_TITLE"); var titleLabel = progress.GetOrNull<LabelWidget>("MAP_TITLE");
if (title != null) if (titleLabel != null)
title.GetText = () => lobby.Map.Title; titleLabel.GetText = () => lobby.Map.Title;
var type = progress.GetOrNull<LabelWidget>("MAP_TYPE"); var typeLabel = progress.GetOrNull<LabelWidget>("MAP_TYPE");
if (type != null) if (typeLabel != null)
type.GetText = () => lobby.Map.Type; if (typeLabel != null)
{
var type = new CachedTransform<MapPreview, string>(m => lobby.Map.Categories.FirstOrDefault() ?? "");
typeLabel.GetText = () => type.Update(lobby.Map);
}
var statusSearching = progress.GetOrNull("MAP_STATUS_SEARCHING"); var statusSearching = progress.GetOrNull("MAP_STATUS_SEARCHING");
if (statusSearching != null) if (statusSearching != null)

View File

@@ -35,7 +35,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
string selectedUid; string selectedUid;
Action<string> onSelect; Action<string> onSelect;
string gameMode; string category;
string mapFilter; string mapFilter;
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
@@ -170,30 +170,43 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{ {
if (gameModeDropdown != null) if (gameModeDropdown != null)
{ {
var gameModes = tabMaps[tab] var categoryDict = new Dictionary<string, int>();
.GroupBy(m => m.Type) foreach (var map in tabMaps[tab])
.Select(g => Pair.New(g.Key, g.Count())).ToList(); {
foreach (var category in map.Categories)
{
var count = 0;
categoryDict.TryGetValue(category, out count);
categoryDict[category] = count + 1;
}
}
// Order categories alphabetically
var categories = categoryDict
.Select(kv => Pair.New(kv.Key, kv.Value))
.OrderBy(p => p.First)
.ToList();
// 'all game types' extra item // 'all game types' extra item
gameModes.Insert(0, Pair.New(null as string, tabMaps[tab].Count())); categories.Insert(0, Pair.New(null as string, tabMaps[tab].Count()));
Func<Pair<string, int>, string> showItem = x => "{0} ({1})".F(x.First ?? "All Game Types", x.Second); Func<Pair<string, int>, string> showItem = x => "{0} ({1})".F(x.First ?? "All Maps", x.Second);
Func<Pair<string, int>, ScrollItemWidget, ScrollItemWidget> setupItem = (ii, template) => Func<Pair<string, int>, ScrollItemWidget, ScrollItemWidget> setupItem = (ii, template) =>
{ {
var item = ScrollItemWidget.Setup(template, var item = ScrollItemWidget.Setup(template,
() => gameMode == ii.First, () => category == ii.First,
() => { gameMode = ii.First; EnumerateMaps(tab, itemTemplate); }); () => { category = ii.First; EnumerateMaps(tab, itemTemplate); });
item.Get<LabelWidget>("LABEL").GetText = () => showItem(ii); item.Get<LabelWidget>("LABEL").GetText = () => showItem(ii);
return item; return item;
}; };
gameModeDropdown.OnClick = () => gameModeDropdown.OnClick = () =>
gameModeDropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 210, gameModes, setupItem); gameModeDropdown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 210, categories, setupItem);
gameModeDropdown.GetText = () => gameModeDropdown.GetText = () =>
{ {
var item = gameModes.FirstOrDefault(m => m.First == gameMode); var item = categories.FirstOrDefault(m => m.First == category);
if (item == default(Pair<string, int>)) if (item == default(Pair<string, int>))
item.First = "No matches"; item.First = "No matches";
@@ -209,7 +222,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
playerCountFilter = -1; playerCountFilter = -1;
var maps = tabMaps[tab] var maps = tabMaps[tab]
.Where(m => gameMode == null || m.Type == gameMode) .Where(m => category == null || m.Categories.Contains(category))
.Where(m => mapFilter == null || .Where(m => mapFilter == null ||
(m.Title != null && m.Title.IndexOf(mapFilter, StringComparison.OrdinalIgnoreCase) >= 0) || (m.Title != null && m.Title.IndexOf(mapFilter, StringComparison.OrdinalIgnoreCase) >= 0) ||
(m.Author != null && m.Author.IndexOf(mapFilter, StringComparison.OrdinalIgnoreCase) >= 0) || (m.Author != null && m.Author.IndexOf(mapFilter, StringComparison.OrdinalIgnoreCase) >= 0) ||
@@ -251,7 +264,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var detailsWidget = item.GetOrNull<LabelWidget>("DETAILS"); var detailsWidget = item.GetOrNull<LabelWidget>("DETAILS");
if (detailsWidget != null) if (detailsWidget != null)
detailsWidget.GetText = () => "{0} ({1} players)".F(preview.Type, preview.PlayerCount); {
var type = preview.Categories.FirstOrDefault();
var details = "";
if (type != null)
details = type + " ";
details += "({0} players)".F(preview.PlayerCount);
detailsWidget.GetText = () => details;
}
var authorWidget = item.GetOrNull<LabelWidget>("AUTHOR"); var authorWidget = item.GetOrNull<LabelWidget>("AUTHOR");
if (authorWidget != null) if (authorWidget != null)

View File

@@ -83,7 +83,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var type = panel.GetOrNull<LabelWidget>("MAP_TYPE"); var type = panel.GetOrNull<LabelWidget>("MAP_TYPE");
if (type != null) if (type != null)
type.GetText = () => selectedReplay.GameInfo.MapPreview.Type; {
var mapType = new CachedTransform<MapPreview, string>(m => m.Categories.FirstOrDefault() ?? "");
type.GetText = () => mapType.Update(selectedReplay.GameInfo.MapPreview);
}
panel.Get<LabelWidget>("DURATION").GetText = () => WidgetUtils.FormatTimeSeconds((int)selectedReplay.GameInfo.Duration.TotalSeconds); panel.Get<LabelWidget>("DURATION").GetText = () => WidgetUtils.FormatTimeSeconds((int)selectedReplay.GameInfo.Duration.TotalSeconds);

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 2,9,48,53
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 10,5,45,52
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

Binary file not shown.

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 35,39,27,23
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 31,31,31,31
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 1,25,45,37
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 7,24,51,36
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 5,11,50,38
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 14,14,48,44
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 8,21,49,39
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 8,13,51,47
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 15,1,47,61
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 21,14,37,24
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 27,34,36,26
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 3,23,36,26
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 13,16,42,33
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 13,16,42,34
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 11,6,46,34
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 7,17,52,44
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 4,12,57,45
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 16,17,46,45
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 15,12,47,50
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 15,16,44,42
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 8,1,80,45
Visibility: Shellmap Visibility: Shellmap
Type: Shellmap Categories: Shellmap
Players: Players:
PlayerReference@Nod: PlayerReference@Nod:

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: cnc RequiresMod: cnc
@@ -14,7 +14,7 @@ Bounds: 16,16,36,36
Visibility: Lobby Visibility: Lobby
Type: Drop Zone Categories: Drop Zone
Players: Players:
PlayerReference@Neutral: PlayerReference@Neutral:

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: d2k RequiresMod: d2k
@@ -14,7 +14,7 @@ Bounds: 2,2,28,24
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: d2k RequiresMod: d2k
@@ -14,7 +14,7 @@ Bounds: 2,2,28,24
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: d2k RequiresMod: d2k
@@ -14,7 +14,7 @@ Bounds: 2,2,48,48
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: d2k RequiresMod: d2k
@@ -14,7 +14,7 @@ Bounds: 2,2,48,48
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: d2k RequiresMod: d2k
@@ -14,7 +14,7 @@ Bounds: 2,2,64,64
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: d2k RequiresMod: d2k
@@ -14,7 +14,7 @@ Bounds: 8,8,64,64
Visibility: Lobby Visibility: Lobby
Type: Conquest Categories: Conquest
Players: Players:
PlayerReference@Neutral: PlayerReference@Neutral:

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: d2k RequiresMod: d2k
@@ -14,7 +14,7 @@ Bounds: 16,16,96,96
Visibility: Lobby Visibility: Lobby
Type: Conquest Categories: Conquest
Players: Players:
PlayerReference@Neutral: PlayerReference@Neutral:

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: d2k RequiresMod: d2k
@@ -14,7 +14,7 @@ Bounds: 4,4,48,48
Visibility: Lobby Visibility: Lobby
Type: Conquest Categories: Conquest
Players: Players:
PlayerReference@Neutral: PlayerReference@Neutral:

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: d2k RequiresMod: d2k
@@ -14,7 +14,7 @@ Bounds: 16,16,80,80
Visibility: Shellmap Visibility: Shellmap
Type: Shellmap Categories: Shellmap
Players: Players:
PlayerReference@Neutral: PlayerReference@Neutral:

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: ra RequiresMod: ra
@@ -14,7 +14,7 @@ Bounds: 49,45,30,36
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: ra RequiresMod: ra
@@ -14,7 +14,7 @@ Bounds: 43,44,50,42
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: ra RequiresMod: ra
@@ -14,7 +14,7 @@ Bounds: 35,48,72,36
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

View File

@@ -1,4 +1,4 @@
MapFormat: 10 MapFormat: 11
RequiresMod: ra RequiresMod: ra
@@ -14,7 +14,7 @@ Bounds: 46,31,75,75
Visibility: MissionSelector Visibility: MissionSelector
Type: Campaign Categories: Campaign
LockPreview: True LockPreview: True

Some files were not shown because too many files have changed in this diff Show More