Add support for mission groups.
This commit is contained in:
@@ -33,7 +33,8 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
this.onStart = onStart;
|
this.onStart = onStart;
|
||||||
|
|
||||||
var missionList = widget.Get<ScrollPanelWidget>("MISSION_LIST");
|
var missionList = widget.Get<ScrollPanelWidget>("MISSION_LIST");
|
||||||
var template = widget.Get<ScrollItemWidget>("MISSION_TEMPLATE");
|
var headerTemplate = widget.Get<ScrollItemWidget>("HEADER");
|
||||||
|
var template = widget.Get<ScrollItemWidget>("TEMPLATE");
|
||||||
|
|
||||||
widget.Get("MISSION_INFO").IsVisible = () => selectedMapPreview != null;
|
widget.Get("MISSION_INFO").IsVisible = () => selectedMapPreview != null;
|
||||||
|
|
||||||
@@ -46,13 +47,21 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
|
|
||||||
var yaml = new MiniYaml(null, Game.modData.Manifest.Missions.Select(MiniYaml.FromFile).Aggregate(MiniYaml.MergeLiberal)).ToDictionary();
|
var yaml = new MiniYaml(null, Game.modData.Manifest.Missions.Select(MiniYaml.FromFile).Aggregate(MiniYaml.MergeLiberal)).ToDictionary();
|
||||||
|
|
||||||
var missionMapPaths = yaml["Missions"].Nodes.Select(n => Platform.ResolvePath(n.Key));
|
missionList.RemoveChildren();
|
||||||
|
|
||||||
|
var selectedFirst = false;
|
||||||
|
foreach (var kv in yaml)
|
||||||
|
{
|
||||||
|
var header = ScrollItemWidget.Setup(headerTemplate, () => true, () => {});
|
||||||
|
header.Get<LabelWidget>("LABEL").GetText = () => kv.Key;
|
||||||
|
missionList.AddChild(header);
|
||||||
|
|
||||||
|
var missionMapPaths = kv.Value.Nodes.Select(n => Platform.ResolvePath(n.Key));
|
||||||
|
|
||||||
var maps = Game.modData.MapCache
|
var maps = Game.modData.MapCache
|
||||||
.Where(p => p.Status == MapStatus.Available && missionMapPaths.Contains(Path.GetFullPath(p.Map.Path)))
|
.Where(p => p.Status == MapStatus.Available && missionMapPaths.Contains(Path.GetFullPath(p.Map.Path)))
|
||||||
.Select(p => p.Map);
|
.Select(p => p.Map);
|
||||||
|
|
||||||
missionList.RemoveChildren();
|
|
||||||
foreach (var m in maps)
|
foreach (var m in maps)
|
||||||
{
|
{
|
||||||
var map = m;
|
var map = m;
|
||||||
@@ -64,10 +73,14 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
|
|
||||||
item.Get<LabelWidget>("TITLE").GetText = () => map.Title;
|
item.Get<LabelWidget>("TITLE").GetText = () => map.Title;
|
||||||
missionList.AddChild(item);
|
missionList.AddChild(item);
|
||||||
}
|
|
||||||
|
|
||||||
if (maps.Any())
|
if (!selectedFirst)
|
||||||
SelectMap(maps.First());
|
{
|
||||||
|
SelectMap(map);
|
||||||
|
selectedFirst = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
widget.Get<ButtonWidget>("STARTGAME_BUTTON").OnClick = StartMission;
|
widget.Get<ButtonWidget>("STARTGAME_BUTTON").OnClick = StartMission;
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,19 @@ Container@MISSIONBROWSER_PANEL:
|
|||||||
Width: 260
|
Width: 260
|
||||||
Height: 330
|
Height: 330
|
||||||
Children:
|
Children:
|
||||||
ScrollItem@MISSION_TEMPLATE:
|
ScrollItem@HEADER:
|
||||||
|
Width: PARENT_RIGHT-27
|
||||||
|
Height: 13
|
||||||
|
X: 2
|
||||||
|
Y: 0
|
||||||
|
Visible: false
|
||||||
|
Children:
|
||||||
|
Label@LABEL:
|
||||||
|
Font: TinyBold
|
||||||
|
Width: PARENT_RIGHT
|
||||||
|
Height: 10
|
||||||
|
Align: Center
|
||||||
|
ScrollItem@TEMPLATE:
|
||||||
Width: PARENT_RIGHT-27
|
Width: PARENT_RIGHT-27
|
||||||
Height: 25
|
Height: 25
|
||||||
X: 2
|
X: 2
|
||||||
|
|||||||
@@ -19,7 +19,20 @@ Background@MISSIONBROWSER_PANEL:
|
|||||||
Width: 260
|
Width: 260
|
||||||
Height: 330
|
Height: 330
|
||||||
Children:
|
Children:
|
||||||
ScrollItem@MISSION_TEMPLATE:
|
ScrollItem@HEADER:
|
||||||
|
BaseName: scrollheader
|
||||||
|
Width: PARENT_RIGHT-27
|
||||||
|
Height: 13
|
||||||
|
X: 2
|
||||||
|
Y: 0
|
||||||
|
Visible: false
|
||||||
|
Children:
|
||||||
|
Label@LABEL:
|
||||||
|
Font: TinyBold
|
||||||
|
Width: PARENT_RIGHT
|
||||||
|
Height: 10
|
||||||
|
Align: Center
|
||||||
|
ScrollItem@TEMPLATE:
|
||||||
Width: PARENT_RIGHT-27
|
Width: PARENT_RIGHT-27
|
||||||
Height: 25
|
Height: 25
|
||||||
X: 2
|
X: 2
|
||||||
|
|||||||
Reference in New Issue
Block a user