Add an Install Mod dialog to the ModChooser

This commit is contained in:
Pavel Penev
2015-09-25 19:41:30 +03:00
parent 9748b556dc
commit 2faf15bad7
4 changed files with 91 additions and 3 deletions

View File

@@ -0,0 +1,30 @@
#region Copyright & License Information
/*
* Copyright 2007-2015 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.Linq;
using OpenRA.Widgets;
namespace OpenRA.Mods.Common.Widgets.Logic
{
public class InstallModLogic : ChromeLogic
{
[ObjectCreator.UseCtor]
public InstallModLogic(Widget widget, string modId)
{
var panel = widget.Get("INSTALL_MOD_PANEL");
var mods = Manifest.AllMods[modId].RequiresMods.Select(x => "{0} ({1})".F(x.Key, x.Value));
var text = string.Join(", ", mods);
panel.Get<LabelWidget>("MOD_LIST").Text = text;
panel.Get<ButtonWidget>("BACK_BUTTON").OnClick = Ui.CloseWindow;
}
}
}

View File

@@ -158,13 +158,23 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (selectedIndex - modOffset > 4)
modOffset = selectedIndex - 4;
loadButton.Text = modInstallStatus[mod] ? "Load Mod" : "Install Assets";
loadButton.Text = modPrerequisitesFulfilled[mod.Id] ? loadButton.Text : "Prerequisites missing!";
loadButton.Text = !modPrerequisitesFulfilled[mod.Id] ? "Install mod" :
modInstallStatus[mod] ? "Load Mod" : "Install Assets";
}
void LoadMod(ModMetadata mod)
{
if (!modPrerequisitesFulfilled[mod.Id])
{
var widgetArgs = new WidgetArgs
{
{ "modId", mod.Id }
};
Ui.OpenWindow("INSTALL_MOD_PANEL", widgetArgs);
return;
}
if (!modInstallStatus[mod])
{
var widgetArgs = new WidgetArgs