Merge pull request #5133 from ScottNZ/new-menu
Add singleplayer mission menu to ra/td
@@ -103,6 +103,7 @@ NEW:
|
||||
Removed Mobile Radar Jammer's jamming effect for allied missiles.
|
||||
Increased the HP of husks from 140 to 280.
|
||||
Fixed incorrect Red Alert dialog corners.
|
||||
Added a singleplayer mission menu.
|
||||
Tiberian Dawn:
|
||||
Engineers can now regain control over husks.
|
||||
Chinook rotors now counter-rotate.
|
||||
@@ -132,6 +133,7 @@ NEW:
|
||||
The chance of artillery exploding on death has been reduced from 100% to 75%.
|
||||
Fixed Chinook being unable to land on tiberium.
|
||||
Commando will no longer shoot at vehicles or buildings.
|
||||
Added a singleplayer mission menu.
|
||||
Engine:
|
||||
The contents of OpenRA.FileFormats.dll have been merged into OpenRA.Game.exe, and namespaces reorganized.
|
||||
Converted Aircraft CruiseAltitude to world coordinates.
|
||||
|
||||
@@ -45,10 +45,12 @@ namespace OpenRA
|
||||
|
||||
public static DatabaseReader GeoIpDatabase;
|
||||
|
||||
public static void JoinServer(string host, int port, string password)
|
||||
public static OrderManager JoinServer(string host, int port, string password)
|
||||
{
|
||||
JoinInner(new OrderManager(host, port, password,
|
||||
new ReplayRecorderConnection(new NetworkConnection(host, port), ChooseReplayFilename)));
|
||||
var om = new OrderManager(host, port, password,
|
||||
new ReplayRecorderConnection(new NetworkConnection(host, port), ChooseReplayFilename));
|
||||
JoinInner(om);
|
||||
return om;
|
||||
}
|
||||
|
||||
static string ChooseReplayFilename()
|
||||
|
||||
@@ -24,7 +24,7 @@ namespace OpenRA
|
||||
Folders, MapFolders, Rules, ServerTraits,
|
||||
Sequences, VoxelSequences, Cursors, Chrome, Assemblies, ChromeLayout,
|
||||
Weapons, Voices, Notifications, Music, Movies, Translations, TileSets,
|
||||
ChromeMetrics, PackageContents, LuaScripts, MapCompatibility;
|
||||
ChromeMetrics, PackageContents, LuaScripts, MapCompatibility, Missions;
|
||||
|
||||
public readonly Dictionary<string, string> Packages;
|
||||
public readonly MiniYaml LoadScreen;
|
||||
@@ -62,6 +62,7 @@ namespace OpenRA
|
||||
ChromeMetrics = YamlList(yaml, "ChromeMetrics");
|
||||
PackageContents = YamlList(yaml, "PackageContents");
|
||||
LuaScripts = YamlList(yaml, "LuaScripts");
|
||||
Missions = YamlList(yaml, "Missions");
|
||||
|
||||
LoadScreen = yaml["LoadScreen"];
|
||||
LobbyDefaults = yaml["LobbyDefaults"];
|
||||
|
||||
@@ -381,6 +381,7 @@
|
||||
<Compile Include="Widgets\BuildPaletteWidget.cs" />
|
||||
<Compile Include="Widgets\LogicTickerWidget.cs" />
|
||||
<Compile Include="Widgets\Logic\KickSpectatorsLogic.cs" />
|
||||
<Compile Include="Widgets\Logic\MissionBrowserLogic.cs" />
|
||||
<Compile Include="Widgets\Logic\IngameMenuLogic.cs" />
|
||||
<Compile Include="Widgets\Logic\IrcLogic.cs" />
|
||||
<Compile Include="Widgets\Logic\KickClientLogic.cs" />
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using OpenRA.Widgets;
|
||||
|
||||
@@ -15,7 +16,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
{
|
||||
public class MainMenuLogic
|
||||
{
|
||||
protected enum MenuType { Main, Extras, None }
|
||||
protected enum MenuType { Main, Singleplayer, Extras, None }
|
||||
|
||||
protected MenuType menuType = MenuType.Main;
|
||||
Widget rootMenu;
|
||||
@@ -30,7 +31,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
var mainMenu = widget.Get("MAIN_MENU");
|
||||
mainMenu.IsVisible = () => menuType == MenuType.Main;
|
||||
|
||||
mainMenu.Get<ButtonWidget>("SINGLEPLAYER_BUTTON").OnClick = StartSkirmishGame;
|
||||
mainMenu.Get<ButtonWidget>("SINGLEPLAYER_BUTTON").OnClick = () => menuType = MenuType.Singleplayer;
|
||||
|
||||
mainMenu.Get<ButtonWidget>("MULTIPLAYER_BUTTON").OnClick = () =>
|
||||
{
|
||||
@@ -61,6 +62,26 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
|
||||
mainMenu.Get<ButtonWidget>("QUIT_BUTTON").OnClick = Game.Exit;
|
||||
|
||||
// Singleplayer menu
|
||||
var singleplayerMenu = widget.Get("SINGLEPLAYER_MENU");
|
||||
singleplayerMenu.IsVisible = () => menuType == MenuType.Singleplayer;
|
||||
|
||||
var missionsButton = singleplayerMenu.Get<ButtonWidget>("MISSIONS_BUTTON");
|
||||
missionsButton.OnClick = () =>
|
||||
{
|
||||
menuType = MenuType.None;
|
||||
Ui.OpenWindow("MISSIONBROWSER_PANEL", new WidgetArgs
|
||||
{
|
||||
{ "onExit", () => menuType = MenuType.Singleplayer },
|
||||
{ "onStart", RemoveShellmapUI }
|
||||
});
|
||||
};
|
||||
missionsButton.Disabled = !Game.modData.Manifest.Missions.Any();
|
||||
|
||||
singleplayerMenu.Get<ButtonWidget>("SKIRMISH_BUTTON").OnClick = StartSkirmishGame;
|
||||
|
||||
singleplayerMenu.Get<ButtonWidget>("BACK_BUTTON").OnClick = () => menuType = MenuType.Main;
|
||||
|
||||
// Extras menu
|
||||
var extrasMenu = widget.Get("EXTRAS_MENU");
|
||||
extrasMenu.IsVisible = () => menuType == MenuType.Extras;
|
||||
|
||||
110
OpenRA.Mods.RA/Widgets/Logic/MissionBrowserLogic.cs
Normal file
@@ -0,0 +1,110 @@
|
||||
#region Copyright & License Information
|
||||
/*
|
||||
* Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
|
||||
* This file is part of OpenRA, which is free software. It is made
|
||||
* available to you under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation. For more information,
|
||||
* see COPYING.
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using OpenRA.FileFormats;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Network;
|
||||
using OpenRA.Widgets;
|
||||
|
||||
namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
{
|
||||
public class MissionBrowserLogic
|
||||
{
|
||||
readonly Action onStart;
|
||||
readonly ScrollPanelWidget descriptionPanel;
|
||||
readonly LabelWidget description;
|
||||
readonly SpriteFont descriptionFont;
|
||||
|
||||
MapPreview selectedMapPreview;
|
||||
|
||||
[ObjectCreator.UseCtor]
|
||||
public MissionBrowserLogic(Widget widget, Action onStart, Action onExit)
|
||||
{
|
||||
this.onStart = onStart;
|
||||
|
||||
var missionList = widget.Get<ScrollPanelWidget>("MISSION_LIST");
|
||||
var template = widget.Get<ScrollItemWidget>("MISSION_TEMPLATE");
|
||||
|
||||
widget.Get("MISSION_INFO").IsVisible = () => selectedMapPreview != null;
|
||||
|
||||
var previewWidget = widget.Get<MapPreviewWidget>("MISSION_PREVIEW");
|
||||
previewWidget.Preview = () => selectedMapPreview;
|
||||
|
||||
descriptionPanel = widget.Get<ScrollPanelWidget>("MISSION_DESCRIPTION_PANEL");
|
||||
description = widget.Get<LabelWidget>("MISSION_DESCRIPTION");
|
||||
descriptionFont = Game.Renderer.Fonts[description.Font];
|
||||
|
||||
var yaml = new MiniYaml(null, Game.modData.Manifest.Missions.Select(MiniYaml.FromFile).Aggregate(MiniYaml.MergeLiberal)).NodesDict;
|
||||
|
||||
var missionMapPaths = yaml["Missions"].Nodes.Select(n => Path.GetFullPath(n.Key));
|
||||
|
||||
var maps = Game.modData.MapCache
|
||||
.Where(p => p.Status == MapStatus.Available && missionMapPaths.Contains(Path.GetFullPath(p.Map.Path)))
|
||||
.Select(p => p.Map);
|
||||
|
||||
missionList.RemoveChildren();
|
||||
foreach (var m in maps)
|
||||
{
|
||||
var map = m;
|
||||
|
||||
var item = ScrollItemWidget.Setup(template,
|
||||
() => selectedMapPreview != null && selectedMapPreview.Uid == map.Uid,
|
||||
() => SelectMap(map),
|
||||
StartMission);
|
||||
|
||||
item.Get<LabelWidget>("TITLE").GetText = () => map.Title;
|
||||
missionList.AddChild(item);
|
||||
}
|
||||
|
||||
if (maps.Any())
|
||||
SelectMap(maps.First());
|
||||
|
||||
widget.Get<ButtonWidget>("STARTGAME_BUTTON").OnClick = StartMission;
|
||||
|
||||
widget.Get<ButtonWidget>("BACK_BUTTON").OnClick = () =>
|
||||
{
|
||||
Game.Disconnect();
|
||||
Ui.CloseWindow();
|
||||
onExit();
|
||||
};
|
||||
}
|
||||
|
||||
void SelectMap(Map map)
|
||||
{
|
||||
selectedMapPreview = Game.modData.MapCache[map.Uid];
|
||||
|
||||
var text = map.Description != null ? map.Description.Replace("\\n", "\n") : "";
|
||||
text = WidgetUtils.WrapText(text, description.Bounds.Width, descriptionFont);
|
||||
description.Text = text;
|
||||
description.Bounds.Height = descriptionFont.Measure(text).Y;
|
||||
descriptionPanel.Layout.AdjustChildren();
|
||||
}
|
||||
|
||||
void StartMission()
|
||||
{
|
||||
OrderManager om = null;
|
||||
|
||||
Action lobbyReady = null;
|
||||
lobbyReady = () =>
|
||||
{
|
||||
Game.LobbyInfoChanged -= lobbyReady;
|
||||
onStart();
|
||||
om.IssueOrder(Order.Command("state {0}".F(Session.ClientState.Ready)));
|
||||
};
|
||||
Game.LobbyInfoChanged += lobbyReady;
|
||||
|
||||
om = Game.JoinServer(IPAddress.Loopback.ToString(), Game.CreateLocalServer(selectedMapPreview.Uid), "");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -110,6 +110,38 @@ Container@MENU_BACKGROUND:
|
||||
Width:140
|
||||
Height:35
|
||||
Text:Quit
|
||||
Container@SINGLEPLAYER_MENU:
|
||||
Width:PARENT_RIGHT
|
||||
Visible:False
|
||||
Children:
|
||||
Label@SINGLEPLAYER_MENU_TITLE:
|
||||
X:0
|
||||
Y:0-30
|
||||
Width:PARENT_RIGHT
|
||||
Height:20
|
||||
Text:Singleplayer
|
||||
Align:Center
|
||||
Font:Bold
|
||||
Contrast:True
|
||||
Button@SKIRMISH_BUTTON:
|
||||
X:150
|
||||
Y:0
|
||||
Width:140
|
||||
Height:35
|
||||
Text:Skirmish
|
||||
Button@MISSIONS_BUTTON:
|
||||
X:300
|
||||
Y:0
|
||||
Width:140
|
||||
Height:35
|
||||
Text:Missions
|
||||
Button@BACK_BUTTON:
|
||||
Key:escape
|
||||
X:600
|
||||
Y:0
|
||||
Width:140
|
||||
Height:35
|
||||
Text:Back
|
||||
Container@EXTRAS_MENU:
|
||||
Width:PARENT_RIGHT
|
||||
Visible:False
|
||||
|
||||
82
mods/cnc/chrome/missionbrowser.yaml
Normal file
@@ -0,0 +1,82 @@
|
||||
Container@MISSIONBROWSER_PANEL:
|
||||
Logic:MissionBrowserLogic
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width:629
|
||||
Height:399
|
||||
Children:
|
||||
Label@MISSIONBROWSER_LABEL_TITLE:
|
||||
Y:0-25
|
||||
Width:PARENT_RIGHT
|
||||
Text:Missions
|
||||
Align:Center
|
||||
Font:BigBold
|
||||
Background@BG:
|
||||
Width:629
|
||||
Height:360
|
||||
Background:panel-black
|
||||
Children:
|
||||
ScrollPanel@MISSION_LIST:
|
||||
X:15
|
||||
Y:15
|
||||
Width:260
|
||||
Height:330
|
||||
Children:
|
||||
ScrollItem@MISSION_TEMPLATE:
|
||||
Width:PARENT_RIGHT-27
|
||||
Height:25
|
||||
X:2
|
||||
Y:0
|
||||
Visible:False
|
||||
Children:
|
||||
Label@TITLE:
|
||||
X:10
|
||||
Width:PARENT_RIGHT-20
|
||||
Height:25
|
||||
Container@MISSION_INFO:
|
||||
X:290
|
||||
Y:15
|
||||
Width:324
|
||||
Height:334
|
||||
Children:
|
||||
Background@MISSION_BG:
|
||||
X:0
|
||||
Y:0
|
||||
Width:324
|
||||
Height:160
|
||||
Background:panel-gray
|
||||
Children:
|
||||
MapPreview@MISSION_PREVIEW:
|
||||
X:2
|
||||
Y:2
|
||||
Width:PARENT_RIGHT-4
|
||||
Height:PARENT_BOTTOM-4
|
||||
IgnoreMouseOver:True
|
||||
IgnoreMouseInput:True
|
||||
ShowSpawnPoints:False
|
||||
ScrollPanel@MISSION_DESCRIPTION_PANEL:
|
||||
X:0
|
||||
Y:171
|
||||
Width:324
|
||||
Height:159
|
||||
Children:
|
||||
Label@MISSION_DESCRIPTION:
|
||||
X:5
|
||||
Y:5
|
||||
Width:290
|
||||
VAlign:Top
|
||||
Button@BACK_BUTTON:
|
||||
X:0
|
||||
Y:359
|
||||
Width:140
|
||||
Height:35
|
||||
Text:Back
|
||||
Font:Bold
|
||||
Key:escape
|
||||
Button@STARTGAME_BUTTON:
|
||||
X:PARENT_RIGHT - 140
|
||||
Y:359
|
||||
Width:140
|
||||
Height:35
|
||||
Text:Start Game
|
||||
Font:Bold
|
||||
BIN
mods/cnc/maps/gdi01/map.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
@@ -1,4 +1,4 @@
|
||||
Selectable: True
|
||||
Selectable: False
|
||||
|
||||
MapFormat: 6
|
||||
|
||||
@@ -6,7 +6,7 @@ RequiresMod: cnc
|
||||
|
||||
Title: Storm the Beachhead
|
||||
|
||||
Description: Conversion of the first GDI Mission
|
||||
Description: Use the units provided to protect the Mobile Construction Vehicle. (MCV)\n\nYou should then deploy the MCV by double clicking on it.\n\nThen you can begin to build up a base. Start with a Power Plant.\n\nFinally, search out and destroy all enemy Nod units in the surrounding area.
|
||||
|
||||
Author: Westwood Studios
|
||||
|
||||
|
||||
BIN
mods/cnc/maps/gdi02/map.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
@@ -1,4 +1,4 @@
|
||||
Selectable: True
|
||||
Selectable: False
|
||||
|
||||
MapFormat: 6
|
||||
|
||||
@@ -6,6 +6,8 @@ RequiresMod: cnc
|
||||
|
||||
Title: Knock out the Refinery
|
||||
|
||||
Description: Defend your position, deploy the MCV, then build a sizable force to search out and destroy the Nod base in the area.\n\nAll Nod units and structures must be either destroyed or captured to complete objective.
|
||||
|
||||
Author: Westwood Studios
|
||||
|
||||
Tileset: TEMPERAT
|
||||
|
||||
BIN
mods/cnc/maps/gdi03/map.png
Normal file
|
After Width: | Height: | Size: 58 KiB |
@@ -1,4 +1,4 @@
|
||||
Selectable: True
|
||||
Selectable: False
|
||||
|
||||
MapFormat: 6
|
||||
|
||||
@@ -6,7 +6,7 @@ RequiresMod: cnc
|
||||
|
||||
Title: Destroy The SAM Sites
|
||||
|
||||
Description: Build up forces to destroy Nod base. Once all Nod SAM sites are neutralized then air support will be provided to combat obstacles such as turrets. Destroy all units and structures to complete the mission objective.
|
||||
Description: Build up forces to destroy Nod base.\n\nOnce all Nod SAM sites are neutralized then air support will be provided to combat obstacles such as turrets.\n\nDestroy all units and structures to complete the mission objective.
|
||||
|
||||
Author: Westwood Studios
|
||||
|
||||
|
||||
BIN
mods/cnc/maps/gdi04a/map.png
Normal file
|
After Width: | Height: | Size: 71 KiB |
@@ -1,4 +1,4 @@
|
||||
Selectable: True
|
||||
Selectable: False
|
||||
|
||||
MapFormat: 6
|
||||
|
||||
@@ -6,7 +6,7 @@ RequiresMod: cnc
|
||||
|
||||
Title: Get the Rods back (a)
|
||||
|
||||
Description: Nod has captured classified GDI property. You must find and retrieve the stolen equipment. It is being transported in a shipping crate. Use the new APC to strategically transport infantry through Nod forces.
|
||||
Description: Nod has captured classified GDI property.\n\nYou must find and retrieve the stolen equipment.\n\nIt is being transported in a shipping crate.\n\nUse the new APC to strategically transport infantry through Nod forces.
|
||||
|
||||
Author: Westwood Studios
|
||||
|
||||
|
||||
BIN
mods/cnc/maps/nod01/map.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
@@ -1,4 +1,4 @@
|
||||
Selectable: True
|
||||
Selectable: False
|
||||
|
||||
MapFormat: 6
|
||||
|
||||
@@ -6,7 +6,7 @@ RequiresMod: cnc
|
||||
|
||||
Title: Nikoomba's Demise
|
||||
|
||||
Description: In order for the Brotherhood to gain a foothold, we must begin by eliminating certain elements. Nikoomba, the nearby village's leader, is one such element. His views and ours do not coincide. He and his whole group must be eliminated.
|
||||
Description: In order for the Brotherhood to gain a foothold, we must begin by eliminating certain elements.\n\nNikoomba, the nearby village's leader, is one such element.\n\nHis views and ours do not coincide.\n\nHe and his whole group must be eliminated.
|
||||
|
||||
Author: Westwood Studios
|
||||
|
||||
|
||||
BIN
mods/cnc/maps/nod03a/map.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
@@ -1,4 +1,4 @@
|
||||
Selectable: True
|
||||
Selectable: False
|
||||
|
||||
MapFormat: 6
|
||||
|
||||
@@ -6,7 +6,7 @@ RequiresMod: cnc
|
||||
|
||||
Title: Sudanese Prison Break (a)
|
||||
|
||||
Description: GDI has established a prison camp, where they are detaining some of the local political leaders. Kane wishes to liberate these victims. Destroy the GDI forces and capture the prison, do not destroy it.
|
||||
Description: GDI has established a prison camp, where they are detaining some of the local political leaders.\n\nKane wishes to liberate these victims.\n\nDestroy the GDI forces and capture the prison, do not destroy it.
|
||||
|
||||
Author: Westwood Studios
|
||||
|
||||
|
||||
BIN
mods/cnc/maps/nod03b/map.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
@@ -1,4 +1,4 @@
|
||||
Selectable: True
|
||||
Selectable: False
|
||||
|
||||
MapFormat: 6
|
||||
|
||||
@@ -6,7 +6,7 @@ RequiresMod: cnc
|
||||
|
||||
Title: Sudanese Prison Break (b)
|
||||
|
||||
Description: GDI has established a prison camp, where they are detaining some of the local political leaders. Kane wishes to liberate these victims. Destroy the GDI forces and capture the prison, do not destroy it.
|
||||
Description: GDI has established a prison camp, where they are detaining some of the local political leaders.\n\nKane wishes to liberate these victims.\n\nDestroy the GDI forces and capture the prison, do not destroy it.
|
||||
|
||||
Author: Westwood Studios
|
||||
|
||||
|
||||
8
mods/cnc/missions.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
Missions:
|
||||
mods/cnc/maps/gdi01
|
||||
mods/cnc/maps/gdi02
|
||||
mods/cnc/maps/gdi03
|
||||
mods/cnc/maps/gdi04a
|
||||
mods/cnc/maps/nod01
|
||||
mods/cnc/maps/nod03a
|
||||
mods/cnc/maps/nod03b
|
||||
@@ -98,6 +98,7 @@ ChromeLayout:
|
||||
mods/cnc/chrome/tooltips.yaml
|
||||
mods/cnc/chrome/irc.yaml
|
||||
mods/cnc/chrome/assetbrowser.yaml
|
||||
mods/cnc/chrome/missionbrowser.yaml
|
||||
|
||||
Weapons:
|
||||
mods/cnc/weapons.yaml
|
||||
@@ -184,3 +185,6 @@ LuaScripts:
|
||||
mods/common/lua/rules.lua
|
||||
mods/common/lua/production.lua
|
||||
mods/common/lua/facing.lua
|
||||
|
||||
Missions:
|
||||
mods/cnc/missions.yaml
|
||||
@@ -67,6 +67,40 @@ Container@MAINMENU:
|
||||
Height:30
|
||||
Text:Quit
|
||||
Font:Bold
|
||||
Background@SINGLEPLAYER_MENU:
|
||||
Width:PARENT_RIGHT
|
||||
Height:PARENT_BOTTOM
|
||||
Children:
|
||||
Label@SINGLEPLAYER_MENU_TITLE:
|
||||
X:0
|
||||
Y:20
|
||||
Width:200
|
||||
Height:30
|
||||
Text:Singleplayer
|
||||
Align:Center
|
||||
Font:Bold
|
||||
Button@SKIRMISH_BUTTON:
|
||||
X:PARENT_RIGHT/2-WIDTH/2
|
||||
Y:60
|
||||
Width:140
|
||||
Height:30
|
||||
Text:Skirmish
|
||||
Font:Bold
|
||||
Button@MISSIONS_BUTTON:
|
||||
X:PARENT_RIGHT/2-WIDTH/2
|
||||
Y:100
|
||||
Width:140
|
||||
Height:30
|
||||
Text:Missions
|
||||
Font:Bold
|
||||
Button@BACK_BUTTON:
|
||||
X:PARENT_RIGHT/2-WIDTH/2
|
||||
Key:escape
|
||||
Y:260
|
||||
Width:140
|
||||
Height:30
|
||||
Text:Back
|
||||
Font:Bold
|
||||
Background@EXTRAS_MENU:
|
||||
Width:PARENT_RIGHT
|
||||
Height:PARENT_BOTTOM
|
||||
|
||||
@@ -85,6 +85,7 @@ ChromeLayout:
|
||||
mods/d2k/chrome/tooltips.yaml
|
||||
mods/ra/chrome/assetbrowser.yaml
|
||||
mods/ra/chrome/irc.yaml
|
||||
mods/ra/chrome/missionbrowser.yaml
|
||||
|
||||
Weapons:
|
||||
mods/d2k/weapons.yaml
|
||||
|
||||
@@ -80,6 +80,40 @@ Container@MAINMENU:
|
||||
Height:30
|
||||
Text:Quit
|
||||
Font:Bold
|
||||
Background@SINGLEPLAYER_MENU:
|
||||
Width:PARENT_RIGHT
|
||||
Height:PARENT_BOTTOM
|
||||
Children:
|
||||
Label@SINGLEPLAYER_MENU_TITLE:
|
||||
X:0
|
||||
Y:20
|
||||
Width:200
|
||||
Height:30
|
||||
Text:Singleplayer
|
||||
Align:Center
|
||||
Font:Bold
|
||||
Button@SKIRMISH_BUTTON:
|
||||
X:PARENT_RIGHT/2-WIDTH/2
|
||||
Y:60
|
||||
Width:140
|
||||
Height:30
|
||||
Text:Skirmish
|
||||
Font:Bold
|
||||
Button@MISSIONS_BUTTON:
|
||||
X:PARENT_RIGHT/2-WIDTH/2
|
||||
Y:100
|
||||
Width:140
|
||||
Height:30
|
||||
Text:Missions
|
||||
Font:Bold
|
||||
Button@BACK_BUTTON:
|
||||
X:PARENT_RIGHT/2-WIDTH/2
|
||||
Key:escape
|
||||
Y:260
|
||||
Width:140
|
||||
Height:30
|
||||
Text:Back
|
||||
Font:Bold
|
||||
Background@EXTRAS_MENU:
|
||||
Width:PARENT_RIGHT
|
||||
Height:PARENT_BOTTOM
|
||||
|
||||
78
mods/ra/chrome/missionbrowser.yaml
Normal file
@@ -0,0 +1,78 @@
|
||||
Background@MISSIONBROWSER_PANEL:
|
||||
Logic:MissionBrowserLogic
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width:634
|
||||
Height:440
|
||||
Children:
|
||||
Label@MISSIONBROWSER_LABEL_TITLE:
|
||||
X:0
|
||||
Y:20
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Text:Missions
|
||||
Align:Center
|
||||
Font:Bold
|
||||
ScrollPanel@MISSION_LIST:
|
||||
X:20
|
||||
Y:50
|
||||
Width:260
|
||||
Height:330
|
||||
Children:
|
||||
ScrollItem@MISSION_TEMPLATE:
|
||||
Width:PARENT_RIGHT-27
|
||||
Height:25
|
||||
X:2
|
||||
Y:0
|
||||
Children:
|
||||
Label@TITLE:
|
||||
X:10
|
||||
Width:PARENT_RIGHT-20
|
||||
Height:25
|
||||
Container@MISSION_INFO:
|
||||
X:290
|
||||
Y:50
|
||||
Width:324
|
||||
Height:330
|
||||
Children:
|
||||
Background@MISSION_BG:
|
||||
X:0
|
||||
Y:0
|
||||
Width:324
|
||||
Height:160
|
||||
Background:dialog3
|
||||
Children:
|
||||
MapPreview@MISSION_PREVIEW:
|
||||
X:2
|
||||
Y:2
|
||||
Width:PARENT_RIGHT-4
|
||||
Height:PARENT_BOTTOM-4
|
||||
IgnoreMouseOver:True
|
||||
IgnoreMouseInput:True
|
||||
ShowSpawnPoints:False
|
||||
ScrollPanel@MISSION_DESCRIPTION_PANEL:
|
||||
X:0
|
||||
Y:170
|
||||
Width:324
|
||||
Height:160
|
||||
Children:
|
||||
Label@MISSION_DESCRIPTION:
|
||||
X:5
|
||||
Y:5
|
||||
Width:290
|
||||
VAlign:Top
|
||||
Button@STARTGAME_BUTTON:
|
||||
X:PARENT_RIGHT - 140 - 130
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Start Game
|
||||
Font:Bold
|
||||
Button@BACK_BUTTON:
|
||||
X:PARENT_RIGHT - 140
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Back
|
||||
Font:Bold
|
||||
Key:escape
|
||||
BIN
mods/ra/maps/allies-01-classic/map.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
@@ -1,4 +1,4 @@
|
||||
Selectable: True
|
||||
Selectable: False
|
||||
|
||||
MapFormat: 6
|
||||
|
||||
@@ -6,7 +6,7 @@ RequiresMod: ra
|
||||
|
||||
Title: Allies 01: In the thick of it
|
||||
|
||||
Description: In the thick of it
|
||||
Description: Rescue Einstein from the Headquarters inside this Soviet complex.\n\nOnce found, evacuate him via the helicopter at the signal flare.\n\nEinstein and Tanya must be kept alive at all costs.\n\nBeware the Soviet's Tesla Coils.\n\nDirect Tanya to destroy the westmost power plants to take them off-line.
|
||||
|
||||
Author: Westwood Studios
|
||||
|
||||
|
||||
BIN
mods/ra/maps/allies-02-classic/map.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
@@ -1,4 +1,4 @@
|
||||
Selectable: True
|
||||
Selectable: False
|
||||
|
||||
MapFormat: 6
|
||||
|
||||
@@ -6,7 +6,7 @@ RequiresMod: ra
|
||||
|
||||
Title: Allies 02: Five to one
|
||||
|
||||
Description: Five to one
|
||||
Description: A critical supply convoy is due through this area in 25 minutes, but Soviet forces have blocked the road in several places.\n\nUnless you can clear them out, those supplies will never make it to the front.\n\nThe convoy will come from the northwest, and time is short so work quickly.
|
||||
|
||||
Author: Westwood Studios
|
||||
|
||||
|
||||
3
mods/ra/missions.yaml
Normal file
@@ -0,0 +1,3 @@
|
||||
Missions:
|
||||
mods/ra/maps/allies-01-classic
|
||||
mods/ra/maps/allies-02-classic
|
||||
@@ -99,6 +99,7 @@ ChromeLayout:
|
||||
mods/ra/chrome/tooltips.yaml
|
||||
mods/ra/chrome/assetbrowser.yaml
|
||||
mods/ra/chrome/irc.yaml
|
||||
mods/ra/chrome/missionbrowser.yaml
|
||||
|
||||
Weapons:
|
||||
mods/ra/weapons.yaml
|
||||
@@ -181,3 +182,6 @@ LuaScripts:
|
||||
mods/common/lua/rules.lua
|
||||
mods/common/lua/production.lua
|
||||
mods/common/lua/facing.lua
|
||||
|
||||
Missions:
|
||||
mods/ra/missions.yaml
|
||||
@@ -124,6 +124,7 @@ ChromeLayout:
|
||||
mods/ra/chrome/tooltips.yaml
|
||||
mods/ra/chrome/assetbrowser.yaml
|
||||
mods/ra/chrome/irc.yaml
|
||||
mods/ra/chrome/missionbrowser.yaml
|
||||
|
||||
Weapons:
|
||||
mods/ts/weapons.yaml
|
||||
|
||||