Simplify mod content installation plumbing.
This commit is contained in:
@@ -20,8 +20,9 @@ namespace OpenRA
|
|||||||
{
|
{
|
||||||
public class InstallData
|
public class InstallData
|
||||||
{
|
{
|
||||||
public readonly string InstallerMenuWidget = null;
|
public readonly string MenuWidget = null;
|
||||||
public readonly string InstallerBackgroundWidget = null;
|
public readonly string MusicMenuWidget = null;
|
||||||
|
public readonly string BackgroundWidget = null;
|
||||||
public readonly string[] TestFiles = {};
|
public readonly string[] TestFiles = {};
|
||||||
public readonly string[] DiskTestFiles = {};
|
public readonly string[] DiskTestFiles = {};
|
||||||
public readonly string PackageToExtractFromCD = null;
|
public readonly string PackageToExtractFromCD = null;
|
||||||
|
|||||||
@@ -29,50 +29,45 @@ namespace OpenRA.Mods.Common.LoadScreens
|
|||||||
Game.Renderer.EndFrame(new NullInputHandler());
|
Game.Renderer.EndFrame(new NullInputHandler());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestAndContinue()
|
|
||||||
{
|
|
||||||
Ui.ResetAll();
|
|
||||||
var installData = Game.modData.Manifest.ContentInstaller;
|
|
||||||
if (!installData.TestFiles.All(f => GlobalFileSystem.Exists(f)))
|
|
||||||
{
|
|
||||||
var args = new WidgetArgs()
|
|
||||||
{
|
|
||||||
{ "continueLoading", () => Game.InitializeMod(Game.Settings.Game.Mod, null) },
|
|
||||||
};
|
|
||||||
|
|
||||||
if (installData.InstallerBackgroundWidget != null)
|
|
||||||
Ui.LoadWidget(installData.InstallerBackgroundWidget, Ui.Root, args);
|
|
||||||
|
|
||||||
Ui.OpenWindow(installData.InstallerMenuWidget, args);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Game.LoadShellMap();
|
|
||||||
|
|
||||||
Game.Settings.Save();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void StartGame(Arguments args)
|
public void StartGame(Arguments args)
|
||||||
{
|
{
|
||||||
var window = args != null ? args.GetValue("Launch.Window", null) : null;
|
Ui.ResetAll();
|
||||||
if (!string.IsNullOrEmpty(window))
|
Game.Settings.Save();
|
||||||
{
|
|
||||||
var installData = Game.modData.Manifest.ContentInstaller;
|
|
||||||
if (installData.InstallerBackgroundWidget != null)
|
|
||||||
Ui.LoadWidget(installData.InstallerBackgroundWidget, Ui.Root, new WidgetArgs());
|
|
||||||
|
|
||||||
Ui.OpenWindow(window, new WidgetArgs());
|
// Check whether the mod content is installed
|
||||||
}
|
// TODO: The installation code has finally been beaten into shape, so we can
|
||||||
else
|
// finally move it all into the planned "Manage Content" panel in the modchooser mod.
|
||||||
{
|
var installData = Game.modData.Manifest.ContentInstaller;
|
||||||
TestAndContinue();
|
var installModContent = !installData.TestFiles.All(f => GlobalFileSystem.Exists(f));
|
||||||
|
var installModMusic = args != null && args.Contains("Install.Music");
|
||||||
|
|
||||||
var replay = args != null ? args.GetValue("Launch.Replay", null) : null;
|
if (installModContent || installModMusic)
|
||||||
if (!string.IsNullOrEmpty(replay))
|
{
|
||||||
Game.JoinReplay(replay);
|
var widgetArgs = new WidgetArgs()
|
||||||
|
{
|
||||||
|
{ "continueLoading", () => Game.InitializeMod(Game.Settings.Game.Mod, args) },
|
||||||
|
};
|
||||||
|
|
||||||
|
if (installData.BackgroundWidget != null)
|
||||||
|
Ui.LoadWidget(installData.BackgroundWidget, Ui.Root, widgetArgs);
|
||||||
|
|
||||||
|
var menu = installModContent ? installData.MenuWidget : installData.MusicMenuWidget;
|
||||||
|
Ui.OpenWindow(menu, widgetArgs);
|
||||||
|
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var replay = args != null ? args.GetValue("Launch.Replay", null) : null;
|
||||||
|
if (!string.IsNullOrEmpty(replay))
|
||||||
|
{
|
||||||
|
Game.JoinReplay(replay);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Game.LoadShellMap();
|
||||||
|
Game.Settings.Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void Dispose() { }
|
public virtual void Dispose() { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
if (installButton != null)
|
if (installButton != null)
|
||||||
{
|
{
|
||||||
installButton.IsDisabled = () => world == null || !world.IsShellmap;
|
installButton.IsDisabled = () => world == null || !world.IsShellmap;
|
||||||
var args = new string[] { "Launch.Window=INSTALL_MUSIC_PANEL" };
|
var args = new string[] { "Install.Music=true" };
|
||||||
installButton.OnClick = () =>
|
installButton.OnClick = () =>
|
||||||
{
|
{
|
||||||
Game.modData.LoadScreen.Display(); // HACK: prevent a flicker when transitioning to the installation dialog
|
Game.modData.LoadScreen.Display(); // HACK: prevent a flicker when transitioning to the installation dialog
|
||||||
|
|||||||
@@ -138,8 +138,9 @@ LoadScreen: CncLoadScreen
|
|||||||
|
|
||||||
ContentInstaller:
|
ContentInstaller:
|
||||||
TestFiles: conquer.mix, desert.mix, sounds.mix, speech.mix, temperat.mix, tempicnh.mix, winter.mix
|
TestFiles: conquer.mix, desert.mix, sounds.mix, speech.mix, temperat.mix, tempicnh.mix, winter.mix
|
||||||
InstallerBackgroundWidget: INSTALL_BACKGROUND
|
BackgroundWidget: INSTALL_BACKGROUND
|
||||||
InstallerMenuWidget: INSTALL_PANEL
|
MenuWidget: INSTALL_PANEL
|
||||||
|
MusicMenuWidget: INSTALL_MUSIC_PANEL
|
||||||
FilesToCopy: CONQUER.MIX, DESERT.MIX, SCORES.MIX, SOUNDS.MIX, TEMPERAT.MIX, WINTER.MIX
|
FilesToCopy: CONQUER.MIX, DESERT.MIX, SCORES.MIX, SOUNDS.MIX, TEMPERAT.MIX, WINTER.MIX
|
||||||
FilesToExtract: speech.mix, tempicnh.mix, transit.mix
|
FilesToExtract: speech.mix, tempicnh.mix, transit.mix
|
||||||
PackageMirrorList: http://www.openra.net/packages/cnc-mirrors.txt
|
PackageMirrorList: http://www.openra.net/packages/cnc-mirrors.txt
|
||||||
|
|||||||
@@ -122,7 +122,8 @@ LoadScreen: LogoStripeLoadScreen
|
|||||||
Text: Filling Crates..., Breeding Sandworms...
|
Text: Filling Crates..., Breeding Sandworms...
|
||||||
|
|
||||||
ContentInstaller:
|
ContentInstaller:
|
||||||
InstallerMenuWidget: INSTALL_PANEL
|
MenuWidget: INSTALL_PANEL
|
||||||
|
MusicMenuWidget: INSTALL_MUSIC_PANEL
|
||||||
# TODO: check if DATA.R8 is at 1.03 patch level with 4840 frames
|
# TODO: check if DATA.R8 is at 1.03 patch level with 4840 frames
|
||||||
TestFiles: BLOXBASE.R8, BLOXBAT.R8, BLOXBGBS.R8, BLOXICE.R8, BLOXTREE.R8, BLOXWAST.R8, DATA.R8, SOUND.RS
|
TestFiles: BLOXBASE.R8, BLOXBAT.R8, BLOXBGBS.R8, BLOXICE.R8, BLOXTREE.R8, BLOXWAST.R8, DATA.R8, SOUND.RS
|
||||||
PackageMirrorList: http://www.openra.net/packages/d2k-103-mirrors.txt
|
PackageMirrorList: http://www.openra.net/packages/d2k-103-mirrors.txt
|
||||||
|
|||||||
@@ -137,7 +137,8 @@ LoadScreen: LogoStripeLoadScreen
|
|||||||
Text: Filling Crates..., Charging Capacitors..., Reticulating Splines..., Planting Trees..., Building Bridges..., Aging Empires..., Compiling EVA..., Constructing Pylons..., Activating Skynet..., Splitting Atoms...
|
Text: Filling Crates..., Charging Capacitors..., Reticulating Splines..., Planting Trees..., Building Bridges..., Aging Empires..., Compiling EVA..., Constructing Pylons..., Activating Skynet..., Splitting Atoms...
|
||||||
|
|
||||||
ContentInstaller:
|
ContentInstaller:
|
||||||
InstallerMenuWidget: INSTALL_PANEL
|
MenuWidget: INSTALL_PANEL
|
||||||
|
MusicMenuWidget: INSTALL_MUSIC_PANEL
|
||||||
TestFiles: allies.mix, conquer.mix, interior.mix, redalert.mix, russian.mix, snow.mix, sounds.mix, temperat.mix
|
TestFiles: allies.mix, conquer.mix, interior.mix, redalert.mix, russian.mix, snow.mix, sounds.mix, temperat.mix
|
||||||
PackageMirrorList: http://www.openra.net/packages/ra-mirrors.txt
|
PackageMirrorList: http://www.openra.net/packages/ra-mirrors.txt
|
||||||
DiskTestFiles: MAIN.MIX, INSTALL/REDALERT.MIX
|
DiskTestFiles: MAIN.MIX, INSTALL/REDALERT.MIX
|
||||||
|
|||||||
@@ -167,7 +167,8 @@ LoadScreen: LogoStripeLoadScreen
|
|||||||
Text: Updating EVA installation..., Changing perspective...
|
Text: Updating EVA installation..., Changing perspective...
|
||||||
|
|
||||||
ContentInstaller:
|
ContentInstaller:
|
||||||
InstallerMenuWidget: INSTALL_PANEL
|
MenuWidget: INSTALL_PANEL
|
||||||
|
MusicMenuWidget: INSTALL_MUSIC_PANEL
|
||||||
TestFiles: cache.mix, conquer.mix, isosnow.mix, isotemp.mix, local.mix, sidec01.mix, sidec02.mix, sno.mix, snow.mix, sounds.mix, speech01.mix, tem.mix, temperat.mix
|
TestFiles: cache.mix, conquer.mix, isosnow.mix, isotemp.mix, local.mix, sidec01.mix, sidec02.mix, sno.mix, snow.mix, sounds.mix, speech01.mix, tem.mix, temperat.mix
|
||||||
PackageMirrorList: http://www.openra.net/packages/ts-mirrors.txt
|
PackageMirrorList: http://www.openra.net/packages/ts-mirrors.txt
|
||||||
DiskTestFiles: MULTI.MIX, INSTALL/TIBSUN.MIX
|
DiskTestFiles: MULTI.MIX, INSTALL/TIBSUN.MIX
|
||||||
|
|||||||
Reference in New Issue
Block a user