Merge pull request #7134 from pchote/map-class

Introduce map Class field to replace Selectable/UseAsShellmap
This commit is contained in:
Matthias Mailänder
2014-12-22 22:23:41 +01:00
170 changed files with 210 additions and 240 deletions

View File

@@ -426,8 +426,7 @@ namespace OpenRA.Editor
pd.TitleBox.Text = surface1.Map.Title; pd.TitleBox.Text = surface1.Map.Title;
pd.DescBox.Text = surface1.Map.Description; pd.DescBox.Text = surface1.Map.Description;
pd.AuthorBox.Text = surface1.Map.Author; pd.AuthorBox.Text = surface1.Map.Author;
pd.SelectableCheckBox.Checked = surface1.Map.Selectable; pd.mapVisibilityComboBox.SelectedIndex = pd.mapVisibilityComboBox.FindStringExact(Enum.GetName(typeof(MapVisibility), surface1.Map.Visibility));
pd.ShellmapCheckBox.Checked = surface1.Map.UseAsShellmap;
if (DialogResult.OK != pd.ShowDialog()) if (DialogResult.OK != pd.ShowDialog())
return; return;
@@ -435,8 +434,7 @@ namespace OpenRA.Editor
surface1.Map.Title = pd.TitleBox.Text; surface1.Map.Title = pd.TitleBox.Text;
surface1.Map.Description = pd.DescBox.Text; surface1.Map.Description = pd.DescBox.Text;
surface1.Map.Author = pd.AuthorBox.Text; surface1.Map.Author = pd.AuthorBox.Text;
surface1.Map.Selectable = pd.SelectableCheckBox.Checked; surface1.Map.Visibility = (MapVisibility)Enum.Parse(typeof(MapVisibility), pd.mapVisibilityComboBox.SelectedItem.ToString());
surface1.Map.UseAsShellmap = pd.ShellmapCheckBox.Checked;
} }
} }

View File

@@ -43,10 +43,10 @@ namespace OpenRA.Editor
this.TitleBox = new System.Windows.Forms.TextBox(); this.TitleBox = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label();
this.DescBox = new System.Windows.Forms.TextBox(); this.DescBox = new System.Windows.Forms.TextBox();
this.SelectableCheckBox = new System.Windows.Forms.CheckBox();
this.label3 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label();
this.AuthorBox = new System.Windows.Forms.TextBox(); this.AuthorBox = new System.Windows.Forms.TextBox();
this.ShellmapCheckBox = new System.Windows.Forms.CheckBox(); this.mapVisibilityComboBox = new System.Windows.Forms.ComboBox();
this.label4 = new System.Windows.Forms.Label();
this.SuspendLayout(); this.SuspendLayout();
// //
// button2 // button2
@@ -103,16 +103,6 @@ namespace OpenRA.Editor
this.DescBox.Size = new System.Drawing.Size(286, 20); this.DescBox.Size = new System.Drawing.Size(286, 20);
this.DescBox.TabIndex = 17; this.DescBox.TabIndex = 17;
// //
// selectable
//
this.SelectableCheckBox.AutoSize = true;
this.SelectableCheckBox.Location = new System.Drawing.Point(118, 138);
this.SelectableCheckBox.Name = "selectable";
this.SelectableCheckBox.Size = new System.Drawing.Size(130, 17);
this.SelectableCheckBox.TabIndex = 18;
this.SelectableCheckBox.Text = "Show in Map Chooser";
this.SelectableCheckBox.UseVisualStyleBackColor = true;
//
// label3 // label3
// //
this.label3.AutoSize = true; this.label3.AutoSize = true;
@@ -129,16 +119,27 @@ namespace OpenRA.Editor
this.AuthorBox.Size = new System.Drawing.Size(286, 20); this.AuthorBox.Size = new System.Drawing.Size(286, 20);
this.AuthorBox.TabIndex = 17; this.AuthorBox.TabIndex = 17;
// //
// checkBox1
//
this.ShellmapCheckBox.AutoSize = true;
this.ShellmapCheckBox.Location = new System.Drawing.Point(118, 161);
this.ShellmapCheckBox.Name = "checkBox1";
this.ShellmapCheckBox.Size = new System.Drawing.Size(105, 17);
this.ShellmapCheckBox.TabIndex = 18;
this.ShellmapCheckBox.Text = "Use as Shellmap";
this.ShellmapCheckBox.UseVisualStyleBackColor = true;
// //
// mapVisibilityComboBox
//
this.mapVisibilityComboBox.FormattingEnabled = true;
this.mapVisibilityComboBox.Items.AddRange(new object[] {
"Lobby",
"Shellmap",
"MissionSelector"});
this.mapVisibilityComboBox.Location = new System.Drawing.Point(150, 137);
this.mapVisibilityComboBox.Name = "mapVisibilityComboBox";
this.mapVisibilityComboBox.Size = new System.Drawing.Size(121, 21);
this.mapVisibilityComboBox.TabIndex = 19;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(90, 140);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(58, 13);
this.label4.TabIndex = 20;
this.label4.Text = "Map class:";
// PropertiesDialog // PropertiesDialog
// //
this.AcceptButton = this.button2; this.AcceptButton = this.button2;
@@ -146,8 +147,8 @@ namespace OpenRA.Editor
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.button1; this.CancelButton = this.button1;
this.ClientSize = new System.Drawing.Size(370, 228); this.ClientSize = new System.Drawing.Size(370, 228);
this.Controls.Add(this.ShellmapCheckBox); this.Controls.Add(this.label4);
this.Controls.Add(this.SelectableCheckBox); this.Controls.Add(this.mapVisibilityComboBox);
this.Controls.Add(this.AuthorBox); this.Controls.Add(this.AuthorBox);
this.Controls.Add(this.label3); this.Controls.Add(this.label3);
this.Controls.Add(this.DescBox); this.Controls.Add(this.DescBox);
@@ -173,9 +174,9 @@ namespace OpenRA.Editor
public System.Windows.Forms.TextBox TitleBox; public System.Windows.Forms.TextBox TitleBox;
private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label2;
public System.Windows.Forms.TextBox DescBox; public System.Windows.Forms.TextBox DescBox;
public System.Windows.Forms.CheckBox SelectableCheckBox;
private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label3;
public System.Windows.Forms.TextBox AuthorBox; public System.Windows.Forms.TextBox AuthorBox;
public System.Windows.Forms.CheckBox ShellmapCheckBox; public System.Windows.Forms.ComboBox mapVisibilityComboBox;
private System.Windows.Forms.Label label4;
} }
} }

View File

@@ -383,7 +383,7 @@ namespace OpenRA
static string ChooseShellmap() static string ChooseShellmap()
{ {
var shellmaps = modData.MapCache var shellmaps = modData.MapCache
.Where(m => m.Status == MapStatus.Available && m.Map.UseAsShellmap) .Where(m => m.Status == MapStatus.Available && m.Map.Visibility.HasFlag(MapVisibility.Shellmap))
.Select(m => m.Uid); .Select(m => m.Uid);
if (!shellmaps.Any()) if (!shellmaps.Any())

View File

@@ -100,6 +100,14 @@ namespace OpenRA
public string GameLost; public string GameLost;
} }
[Flags]
public enum MapVisibility
{
Lobby = 1,
Shellmap = 2,
MissionSelector = 4
}
public class Map public class Map
{ {
[FieldLoader.Ignore] public IFolder Container; [FieldLoader.Ignore] public IFolder Container;
@@ -108,8 +116,7 @@ namespace OpenRA
// Yaml map data // Yaml map data
public string Uid { get; private set; } public string Uid { get; private set; }
public int MapFormat; public int MapFormat;
public bool Selectable = true; public MapVisibility Visibility = MapVisibility.Lobby;
public bool UseAsShellmap;
public string RequiresMod; public string RequiresMod;
public string Title; public string Title;
@@ -218,6 +225,7 @@ namespace OpenRA
Author = "Your name here", Author = "Your name here",
MapSize = new int2(size), MapSize = new int2(size),
Tileset = tileset.Id, Tileset = tileset.Id,
Videos = new MapVideos(),
Options = new MapOptions(), Options = new MapOptions(),
MapResources = Exts.Lazy(() => new CellLayer<ResourceTile>(tileShape, size)), MapResources = Exts.Lazy(() => new CellLayer<ResourceTile>(tileShape, size)),
MapTiles = makeMapTiles, MapTiles = makeMapTiles,
@@ -225,6 +233,7 @@ namespace OpenRA
Actors = Exts.Lazy(() => new Dictionary<string, ActorReference>()), Actors = Exts.Lazy(() => new Dictionary<string, ActorReference>()),
Smudges = Exts.Lazy(() => new List<SmudgeReference>()) Smudges = Exts.Lazy(() => new List<SmudgeReference>())
}; };
map.PostInit(); map.PostInit();
return map; return map;
@@ -242,11 +251,7 @@ namespace OpenRA
public Map() { } public Map() { }
// The standard constructor for most purposes // The standard constructor for most purposes
public Map(string path) : this(path, null) { } public Map(string path)
// Support upgrading format 5 maps to a more
// recent version by defining upgradeForMod.
public Map(string path, string upgradeForMod)
{ {
Path = path; Path = path;
Container = GlobalFileSystem.OpenPackage(path, null, int.MaxValue); Container = GlobalFileSystem.OpenPackage(path, null, int.MaxValue);
@@ -260,24 +265,22 @@ namespace OpenRA
// Support for formats 1-3 dropped 2011-02-11. // Support for formats 1-3 dropped 2011-02-11.
// Use release-20110207 to convert older maps to format 4 // Use release-20110207 to convert older maps to format 4
// Use release-20110511 to convert older maps to format 5 // Use release-20110511 to convert older maps to format 5
if (MapFormat < 5) // Use release-20141029 to convert older maps to format 6
if (MapFormat < 6)
throw new InvalidDataException("Map format {0} is not supported.\n File: {1}".F(MapFormat, path)); throw new InvalidDataException("Map format {0} is not supported.\n File: {1}".F(MapFormat, path));
// Format 5 -> 6 enforces the use of RequiresMod
if (MapFormat == 5)
{
if (upgradeForMod == null)
throw new InvalidDataException("Map format {0} is not supported, but can be upgraded.\n File: {1}".F(MapFormat, path));
Console.WriteLine("Upgrading {0} from Format 5 to Format 6", path);
// TODO: This isn't very nice, but there is no other consistent way
// of finding the mod early during the engine initialization.
RequiresMod = upgradeForMod;
}
var nd = yaml.ToDictionary(); var nd = yaml.ToDictionary();
// Format 6 -> 7 combined the Selectable and UseAsShellmap flags into the Class enum
if (MapFormat < 7)
{
MiniYaml useAsShellmap;
if (nd.TryGetValue("UseAsShellmap", out useAsShellmap) && bool.Parse(useAsShellmap.Value))
Visibility = MapVisibility.Shellmap;
else if (Type == "Mission" || Type == "Campaign")
Visibility = MapVisibility.MissionSelector;
}
// Load players // Load players
foreach (var my in nd["Players"].ToDictionary().Values) foreach (var my in nd["Players"].ToDictionary().Values)
{ {
@@ -327,19 +330,19 @@ namespace OpenRA
LastSubCell = (SubCell)(SubCellOffsets.Length - 1); LastSubCell = (SubCell)(SubCellOffsets.Length - 1);
DefaultSubCell = (SubCell)Game.modData.Manifest.SubCellDefaultIndex; DefaultSubCell = (SubCell)Game.modData.Manifest.SubCellDefaultIndex;
// The Uid is calculated from the data on-disk, so
// format changes must be flushed to disk.
// TODO: this isn't very nice
if (MapFormat < 6)
Save(path);
Uid = ComputeHash();
if (Container.Exists("map.png")) if (Container.Exists("map.png"))
using (var dataStream = Container.GetContent("map.png")) using (var dataStream = Container.GetContent("map.png"))
CustomPreview = new Bitmap(dataStream); CustomPreview = new Bitmap(dataStream);
PostInit(); PostInit();
// The Uid is calculated from the data on-disk, so
// format changes must be flushed to disk.
// TODO: this isn't very nice
if (MapFormat < 7)
Save(path);
Uid = ComputeHash();
} }
void PostInit() void PostInit()
@@ -385,12 +388,11 @@ namespace OpenRA
public void Save(string toPath) public void Save(string toPath)
{ {
MapFormat = 6; MapFormat = 7;
var root = new List<MiniYamlNode>(); var root = new List<MiniYamlNode>();
var fields = new[] var fields = new[]
{ {
"Selectable",
"MapFormat", "MapFormat",
"RequiresMod", "RequiresMod",
"Title", "Title",
@@ -399,7 +401,7 @@ namespace OpenRA
"Tileset", "Tileset",
"MapSize", "MapSize",
"Bounds", "Bounds",
"UseAsShellmap", "Visibility",
"Type", "Type",
}; };

View File

@@ -51,7 +51,7 @@ namespace OpenRA
{ {
using (new Support.PerfTimer(path.Key)) using (new Support.PerfTimer(path.Key))
{ {
var map = new Map(path.Key, modData.Manifest.Mod.Id); var map = new Map(path.Key);
if (modData.Manifest.MapCompatibility.Contains(map.RequiresMod)) if (modData.Manifest.MapCompatibility.Contains(map.RequiresMod))
previews[map.Uid].UpdateFromMap(map, path.Value); previews[map.Uid].UpdateFromMap(map, path.Value);
} }

View File

@@ -217,7 +217,7 @@ namespace OpenRA.Widgets
{ {
Func<MapPreview, bool> isIdealMap = m => Func<MapPreview, bool> isIdealMap = m =>
{ {
if (m.Status != MapStatus.Available || !m.Map.Selectable) if (m.Status != MapStatus.Available || !m.Map.Visibility.HasFlag(MapVisibility.Lobby))
return false; return false;
// Other map types may have confusing settings or gameplay // Other map types may have confusing settings or gameplay
@@ -236,7 +236,7 @@ namespace OpenRA.Widgets
}; };
var selected = Game.modData.MapCache.Where(m => isIdealMap(m)).RandomOrDefault(Game.CosmeticRandom) ?? var selected = Game.modData.MapCache.Where(m => isIdealMap(m)).RandomOrDefault(Game.CosmeticRandom) ??
Game.modData.MapCache.First(m => m.Status == MapStatus.Available && m.Map.Selectable); Game.modData.MapCache.First(m => m.Status == MapStatus.Available && m.Map.Visibility.HasFlag(MapVisibility.Lobby));
return selected.Uid; return selected.Uid;
} }

View File

@@ -150,7 +150,6 @@ namespace OpenRA.Mods.Common.UtilityCommands
map.MapSize.X = mapSize; map.MapSize.X = mapSize;
map.MapSize.Y = mapSize; map.MapSize.Y = mapSize;
map.Bounds = Rectangle.FromLTRB(offsetX, offsetY, offsetX + width, offsetY + height); map.Bounds = Rectangle.FromLTRB(offsetX, offsetY, offsetX + width, offsetY + height);
map.Selectable = true;
map.Smudges = Exts.Lazy(() => new List<SmudgeReference>()); map.Smudges = Exts.Lazy(() => new List<SmudgeReference>());
map.Actors = Exts.Lazy(() => new Dictionary<string, ActorReference>()); map.Actors = Exts.Lazy(() => new Dictionary<string, ActorReference>());

View File

@@ -173,7 +173,8 @@ namespace OpenRA.Mods.RA.Widgets.Logic
{ {
{ "initialMap", Map.Uid }, { "initialMap", Map.Uid },
{ "onExit", DoNothing }, { "onExit", DoNothing },
{ "onSelect", onSelect } { "onSelect", onSelect },
{ "filter", MapVisibility.Lobby },
}); });
}; };
} }

View File

@@ -88,7 +88,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
var hasCampaign = Game.modData.Manifest.Missions.Any(); var hasCampaign = Game.modData.Manifest.Missions.Any();
var hasMissions = Game.modData.MapCache var hasMissions = Game.modData.MapCache
.Any(p => p.Status == MapStatus.Available && p.Map.Type == "Mission" && !p.Map.Selectable); .Any(p => p.Status == MapStatus.Available && p.Map.Visibility.HasFlag(MapVisibility.MissionSelector));
missionsButton.Disabled = !hasCampaign && !hasMissions; missionsButton.Disabled = !hasCampaign && !hasMissions;

View File

@@ -29,7 +29,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
string gameMode; string gameMode;
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
internal MapChooserLogic(Widget widget, string initialMap, Action onExit, Action<string> onSelect) internal MapChooserLogic(Widget widget, string initialMap, Action onExit, Action<string> onSelect, MapVisibility filter)
{ {
selectedUid = WidgetUtils.ChooseInitialMap(initialMap); selectedUid = WidgetUtils.ChooseInitialMap(initialMap);
@@ -47,7 +47,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
var gameModeDropdown = widget.GetOrNull<DropDownButtonWidget>("GAMEMODE_FILTER"); var gameModeDropdown = widget.GetOrNull<DropDownButtonWidget>("GAMEMODE_FILTER");
if (gameModeDropdown != null) if (gameModeDropdown != null)
{ {
var selectableMaps = Game.modData.MapCache.Where(m => m.Status == MapStatus.Available && m.Map.Selectable); var selectableMaps = Game.modData.MapCache.Where(m => m.Status == MapStatus.Available && (m.Map.Visibility & filter) != 0);
var gameModes = selectableMaps var gameModes = selectableMaps
.GroupBy(m => m.Type) .GroupBy(m => m.Type)
.Select(g => Pair.New(g.Key, g.Count())).ToList(); .Select(g => Pair.New(g.Key, g.Count())).ToList();
@@ -62,7 +62,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
{ {
var item = ScrollItemWidget.Setup(template, var item = ScrollItemWidget.Setup(template,
() => gameMode == ii.First, () => gameMode == ii.First,
() => { gameMode = ii.First; EnumerateMaps(onSelect); }); () => { gameMode = ii.First; EnumerateMaps(onSelect, filter); });
item.Get<LabelWidget>("LABEL").GetText = () => showItem(ii); item.Get<LabelWidget>("LABEL").GetText = () => showItem(ii);
return item; return item;
}; };
@@ -84,13 +84,13 @@ namespace OpenRA.Mods.RA.Widgets.Logic
else else
{ {
mapFilter = mapfilterInput.Text = null; mapFilter = mapfilterInput.Text = null;
EnumerateMaps(onSelect); EnumerateMaps(onSelect, filter);
} }
return true; return true;
}; };
mapfilterInput.OnEnterKey = () => { approving(); return true; }; mapfilterInput.OnEnterKey = () => { approving(); return true; };
mapfilterInput.OnTextEdited = () => mapfilterInput.OnTextEdited = () =>
{ mapFilter = mapfilterInput.Text; EnumerateMaps(onSelect); }; { mapFilter = mapfilterInput.Text; EnumerateMaps(onSelect, filter); };
} }
var randomMapButton = widget.GetOrNull<ButtonWidget>("RANDOMMAP_BUTTON"); var randomMapButton = widget.GetOrNull<ButtonWidget>("RANDOMMAP_BUTTON");
@@ -105,13 +105,13 @@ namespace OpenRA.Mods.RA.Widgets.Logic
randomMapButton.IsDisabled = () => visibleMaps == null || visibleMaps.Count == 0; randomMapButton.IsDisabled = () => visibleMaps == null || visibleMaps.Count == 0;
} }
EnumerateMaps(onSelect); EnumerateMaps(onSelect, filter);
} }
void EnumerateMaps(Action<string> onSelect) void EnumerateMaps(Action<string> onSelect, MapVisibility filter)
{ {
var maps = Game.modData.MapCache var maps = Game.modData.MapCache
.Where(m => m.Status == MapStatus.Available && m.Map.Selectable) .Where(m => m.Status == MapStatus.Available && (m.Map.Visibility & filter) != 0)
.Where(m => gameMode == null || m.Type == gameMode) .Where(m => gameMode == null || m.Type == gameMode)
.Where(m => mapFilter == null || m.Title.IndexOf(mapFilter, StringComparison.OrdinalIgnoreCase) >= 0 || m.Author.IndexOf(mapFilter, StringComparison.OrdinalIgnoreCase) >= 0) .Where(m => mapFilter == null || m.Title.IndexOf(mapFilter, StringComparison.OrdinalIgnoreCase) >= 0 || m.Author.IndexOf(mapFilter, StringComparison.OrdinalIgnoreCase) >= 0)
.OrderBy(m => m.PlayerCount) .OrderBy(m => m.PlayerCount)

View File

@@ -110,9 +110,8 @@ namespace OpenRA.Mods.RA.Widgets.Logic
} }
// Add an additional group for loose missions // Add an additional group for loose missions
// Loose missions must define Type: Mission and Selectable: false.
var looseMissions = Game.modData.MapCache var looseMissions = Game.modData.MapCache
.Where(p => p.Status == MapStatus.Available && p.Map.Type == "Mission" && !p.Map.Selectable && !allMaps.Contains(p.Map)) .Where(p => p.Status == MapStatus.Available && p.Map.Visibility.HasFlag(MapVisibility.MissionSelector) && !allMaps.Contains(p.Map))
.Select(p => p.Map); .Select(p => p.Map);
if (looseMissions.Any()) if (looseMissions.Any())

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,6 +1,4 @@
Selectable: False MapFormat: 7
MapFormat: 6
RequiresMod: cnc RequiresMod: cnc
@@ -16,7 +14,7 @@ MapSize: 64,64
Bounds: 35,39,27,23 Bounds: 35,39,27,23
UseAsShellmap: False Visibility: MissionSelector
Type: Campaign Type: Campaign
@@ -27,7 +25,6 @@ Videos:
GameLost: gameover.vqa GameLost: gameover.vqa
Options: Options:
ShortGame: False
Crates: False Crates: False
Fog: True Fog: True
Shroud: True Shroud: True
@@ -35,6 +32,7 @@ Options:
FragileAlliances: False FragileAlliances: False
StartingCash: 5000 StartingCash: 5000
ConfigurableStartingUnits: False ConfigurableStartingUnits: False
ShortGame: False
Players: Players:
PlayerReference@Nod: PlayerReference@Nod:

Binary file not shown.

View File

@@ -1,6 +1,4 @@
Selectable: False MapFormat: 7
MapFormat: 6
RequiresMod: cnc RequiresMod: cnc
@@ -16,7 +14,7 @@ MapSize: 64,64
Bounds: 31,31,31,31 Bounds: 31,31,31,31
UseAsShellmap: False Visibility: MissionSelector
Type: Campaign Type: Campaign
@@ -26,7 +24,6 @@ Videos:
GameLost: gameover.vqa GameLost: gameover.vqa
Options: Options:
ShortGame: False
Crates: False Crates: False
Fog: True Fog: True
Shroud: True Shroud: True
@@ -34,6 +31,7 @@ Options:
FragileAlliances: False FragileAlliances: False
StartingCash: 5000 StartingCash: 5000
ConfigurableStartingUnits: False ConfigurableStartingUnits: False
ShortGame: False
Players: Players:
PlayerReference@GDI: PlayerReference@GDI:

Binary file not shown.

View File

@@ -1,6 +1,4 @@
Selectable: False MapFormat: 7
MapFormat: 6
RequiresMod: cnc RequiresMod: cnc
@@ -16,7 +14,7 @@ MapSize: 64,64
Bounds: 1,25,45,37 Bounds: 1,25,45,37
UseAsShellmap: False Visibility: MissionSelector
Type: Campaign Type: Campaign
@@ -27,7 +25,6 @@ Videos:
GameLost: gameover.vqa GameLost: gameover.vqa
Options: Options:
ShortGame: False
Crates: False Crates: False
Fog: True Fog: True
Shroud: True Shroud: True
@@ -35,6 +32,7 @@ Options:
FragileAlliances: False FragileAlliances: False
StartingCash: 5000 StartingCash: 5000
ConfigurableStartingUnits: False ConfigurableStartingUnits: False
ShortGame: False
Players: Players:
PlayerReference@Nod: PlayerReference@Nod:

Binary file not shown.

View File

@@ -1,6 +1,4 @@
Selectable: False MapFormat: 7
MapFormat: 6
RequiresMod: cnc RequiresMod: cnc
@@ -16,7 +14,7 @@ MapSize: 64,64
Bounds: 7,24,51,36 Bounds: 7,24,51,36
UseAsShellmap: False Visibility: MissionSelector
Type: Campaign Type: Campaign
@@ -28,7 +26,6 @@ Videos:
GameLost: gameover.vqa GameLost: gameover.vqa
Options: Options:
ShortGame: False
Cheats: False Cheats: False
Crates: False Crates: False
Fog: True Fog: True
@@ -37,6 +34,7 @@ Options:
FragileAlliances: False FragileAlliances: False
StartingCash: 0 StartingCash: 0
ConfigurableStartingUnits: False ConfigurableStartingUnits: False
ShortGame: False
Players: Players:
PlayerReference@Nod: PlayerReference@Nod:

Binary file not shown.

View File

@@ -1,6 +1,4 @@
Selectable: False MapFormat: 7
MapFormat: 6
RequiresMod: cnc RequiresMod: cnc
@@ -16,7 +14,7 @@ MapSize: 64,64
Bounds: 5,11,50,38 Bounds: 5,11,50,38
UseAsShellmap: False Visibility: MissionSelector
Type: Campaign Type: Campaign
@@ -28,7 +26,6 @@ Videos:
GameLost: gameover.vqa GameLost: gameover.vqa
Options: Options:
ShortGame: False
Crates: False Crates: False
Fog: True Fog: True
Shroud: True Shroud: True
@@ -36,6 +33,7 @@ Options:
FragileAlliances: False FragileAlliances: False
StartingCash: 0 StartingCash: 0
ConfigurableStartingUnits: False ConfigurableStartingUnits: False
ShortGame: False
Players: Players:
PlayerReference@Nod: PlayerReference@Nod:

Binary file not shown.

View File

@@ -1,6 +1,4 @@
Selectable: False MapFormat: 7
MapFormat: 6
RequiresMod: cnc RequiresMod: cnc
@@ -16,7 +14,7 @@ MapSize: 64,64
Bounds: 14,14,48,44 Bounds: 14,14,48,44
UseAsShellmap: False Visibility: MissionSelector
Type: Campaign Type: Campaign
@@ -28,7 +26,6 @@ Videos:
GameLost: gameover.vqa GameLost: gameover.vqa
Options: Options:
ShortGame: False
Crates: False Crates: False
Fog: True Fog: True
Shroud: True Shroud: True
@@ -36,6 +33,7 @@ Options:
FragileAlliances: False FragileAlliances: False
StartingCash: 0 StartingCash: 0
ConfigurableStartingUnits: False ConfigurableStartingUnits: False
ShortGame: False
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,6 +1,4 @@
Selectable: False MapFormat: 7
MapFormat: 6
RequiresMod: cnc RequiresMod: cnc
@@ -16,7 +14,7 @@ MapSize: 64,64
Bounds: 21,14,37,24 Bounds: 21,14,37,24
UseAsShellmap: False Visibility: MissionSelector
Type: Campaign Type: Campaign
@@ -25,7 +23,6 @@ Videos:
GameLost: nodlose.vqa GameLost: nodlose.vqa
Options: Options:
ShortGame: False
Crates: False Crates: False
Fog: True Fog: True
Shroud: True Shroud: True
@@ -33,6 +30,7 @@ Options:
FragileAlliances: False FragileAlliances: False
StartingCash: 0 StartingCash: 0
ConfigurableStartingUnits: False ConfigurableStartingUnits: False
ShortGame: False
Players: Players:
PlayerReference@Neutral: PlayerReference@Neutral:

Binary file not shown.

View File

@@ -1,6 +1,4 @@
Selectable: False MapFormat: 7
MapFormat: 6
RequiresMod: cnc RequiresMod: cnc
@@ -10,15 +8,13 @@ Description: GDI has established a prison camp, where they are detaining some of
Author: Westwood Studios Author: Westwood Studios
PreviewVideo: nod3.vqa
Tileset: DESERT Tileset: DESERT
MapSize: 64,64 MapSize: 64,64
Bounds: 13,16,42,33 Bounds: 13,16,42,33
UseAsShellmap: False Visibility: MissionSelector
Type: Campaign Type: Campaign
@@ -29,7 +25,6 @@ Videos:
GameLost: flag.vqa GameLost: flag.vqa
Options: Options:
ShortGame: False
Crates: False Crates: False
Fog: True Fog: True
Shroud: True Shroud: True
@@ -37,6 +32,7 @@ Options:
FragileAlliances: False FragileAlliances: False
StartingCash: 4000 StartingCash: 4000
ConfigurableStartingUnits: False ConfigurableStartingUnits: False
ShortGame: False
Players: Players:
PlayerReference@Neutral: PlayerReference@Neutral:

Binary file not shown.

View File

@@ -1,6 +1,4 @@
Selectable: False MapFormat: 7
MapFormat: 6
RequiresMod: cnc RequiresMod: cnc
@@ -10,15 +8,13 @@ Description: GDI has established a prison camp, where they are detaining some of
Author: Westwood Studios Author: Westwood Studios
PreviewVideo: nod3.vqa
Tileset: DESERT Tileset: DESERT
MapSize: 64,64 MapSize: 64,64
Bounds: 13,16,42,34 Bounds: 13,16,42,34
UseAsShellmap: False Visibility: MissionSelector
Type: Campaign Type: Campaign
@@ -29,7 +25,6 @@ Videos:
GameLost: flag.vqa GameLost: flag.vqa
Options: Options:
ShortGame: False
Crates: False Crates: False
Fog: True Fog: True
Shroud: True Shroud: True
@@ -37,6 +32,7 @@ Options:
FragileAlliances: False FragileAlliances: False
StartingCash: 4000 StartingCash: 4000
ConfigurableStartingUnits: False ConfigurableStartingUnits: False
ShortGame: False
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,6 +1,4 @@
Selectable: False MapFormat: 7
MapFormat: 6
RequiresMod: cnc RequiresMod: cnc
@@ -16,10 +14,12 @@ MapSize: 96,48
Bounds: 8,1,80,45 Bounds: 8,1,80,45
UseAsShellmap: True Visibility: Shellmap
Type: Shellmap Type: Shellmap
Videos:
Options: Options:
Players: Players:

Binary file not shown.

View File

@@ -1,6 +1,4 @@
Selectable: True MapFormat: 7
MapFormat: 6
RequiresMod: cnc RequiresMod: cnc
@@ -16,10 +14,12 @@ MapSize: 64,64
Bounds: 16,16,36,36 Bounds: 16,16,36,36
UseAsShellmap: False Visibility: Lobby
Type: Drop Zone Type: Drop Zone
Videos:
Options: Options:
Crates: True Crates: True
Fog: False Fog: False

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.

Binary file not shown.

Binary file not shown.

View File

@@ -1,6 +1,4 @@
Selectable: False MapFormat: 7
MapFormat: 6
RequiresMod: d2k RequiresMod: d2k
@@ -16,10 +14,12 @@ MapSize: 128,128
Bounds: 16,16,80,80 Bounds: 16,16,80,80
UseAsShellmap: True Visibility: Shellmap
Type: Shellmap Type: Shellmap
Videos:
Options: Options:
Players: Players:

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,6 +1,4 @@
Selectable: False MapFormat: 7
MapFormat: 6
RequiresMod: ra RequiresMod: ra
@@ -16,7 +14,7 @@ MapSize: 128,128
Bounds: 49,45,30,36 Bounds: 49,45,30,36
UseAsShellmap: False Visibility: MissionSelector
Type: Campaign Type: Campaign

Binary file not shown.

View File

@@ -1,6 +1,4 @@
Selectable: False MapFormat: 7
MapFormat: 6
RequiresMod: ra RequiresMod: ra
@@ -16,7 +14,7 @@ MapSize: 128,128
Bounds: 43,44,50,42 Bounds: 43,44,50,42
UseAsShellmap: False Visibility: MissionSelector
Type: Campaign Type: Campaign
@@ -27,7 +25,6 @@ Videos:
GameLost: frozen.vqa GameLost: frozen.vqa
Options: Options:
ShortGame: False
Crates: False Crates: False
Fog: True Fog: True
Shroud: True Shroud: True
@@ -35,6 +32,7 @@ Options:
FragileAlliances: False FragileAlliances: False
StartingCash: 5700 StartingCash: 5700
ConfigurableStartingUnits: False ConfigurableStartingUnits: False
ShortGame: False
Players: Players:
PlayerReference@USSR: PlayerReference@USSR:

Binary file not shown.

View File

@@ -1,6 +1,4 @@
Selectable: False MapFormat: 7
MapFormat: 6
RequiresMod: ra RequiresMod: ra
@@ -16,7 +14,7 @@ MapSize: 128,128
Bounds: 35,48,72,36 Bounds: 35,48,72,36
UseAsShellmap: False Visibility: MissionSelector
Type: Campaign Type: Campaign
@@ -26,7 +24,6 @@ Videos:
GameLost: sovtstar.vqa GameLost: sovtstar.vqa
Options: Options:
ShortGame: False
Crates: False Crates: False
Fog: True Fog: True
Shroud: True Shroud: True
@@ -35,6 +32,7 @@ Options:
StartingCash: 0 StartingCash: 0
ConfigurableStartingUnits: False ConfigurableStartingUnits: False
Difficulties: Easy, Normal Difficulties: Easy, Normal
ShortGame: False
Players: Players:
PlayerReference@Neutral: PlayerReference@Neutral:

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,6 +1,4 @@
Selectable: True MapFormat: 7
MapFormat: 6
RequiresMod: ra RequiresMod: ra
@@ -16,10 +14,12 @@ MapSize: 56,56
Bounds: 16,16,24,24 Bounds: 16,16,24,24
UseAsShellmap: False Visibility: Lobby
Type: Minigame Type: Minigame
Videos:
Options: Options:
Crates: False Crates: False
Fog: True Fog: True

Binary file not shown.

Binary file not shown.

View File

@@ -1,6 +1,4 @@
Selectable: True MapFormat: 7
MapFormat: 6
RequiresMod: ra RequiresMod: ra
@@ -14,10 +12,12 @@ MapSize: 64,64
Bounds: 4,4,56,56 Bounds: 4,4,56,56
UseAsShellmap: False Visibility: Lobby
Type: Conquest Type: Conquest
Videos:
Options: Options:
Players: Players:

Binary file not shown.

View File

@@ -1,6 +1,4 @@
Selectable: True MapFormat: 7
MapFormat: 6
RequiresMod: ra RequiresMod: ra
@@ -14,10 +12,12 @@ MapSize: 128,128
Bounds: 15,10,105,114 Bounds: 15,10,105,114
UseAsShellmap: False Visibility: Lobby
Type: Conquest Type: Conquest
Videos:
Options: Options:
Players: Players:

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