Move ModContent out of the engine.

This commit is contained in:
Paul Chote
2016-08-05 19:05:43 +01:00
parent bf4867909f
commit cff8e949d8
9 changed files with 26 additions and 9 deletions

View File

@@ -364,13 +364,8 @@ namespace OpenRA
using (new PerfTimer("LoadMaps"))
ModData.MapCache.LoadMaps();
var content = ModData.Manifest.Get<ModContent>();
var isModContentInstalled = content.Packages
.Where(p => p.Value.Required)
.All(p => p.Value.TestFiles.All(f => File.Exists(Platform.ResolvePath(f))));
// Mod assets are missing!
if (!isModContentInstalled)
if (!ModData.LoadScreen.RequiredContentIsInstalled())
{
InitializeMod("modchooser", new Arguments());
return;

View File

@@ -224,6 +224,7 @@ namespace OpenRA
{
void Init(ModData m, Dictionary<string, string> info);
void Display();
bool RequiredContentIsInstalled();
void StartGame(Arguments args);
}
}

View File

@@ -243,7 +243,6 @@
<Compile Include="Traits\ActivityUtils.cs" />
<Compile Include="FileSystem\ZipFolder.cs" />
<Compile Include="Primitives\float3.cs" />
<Compile Include="ModContent.cs" />
<Compile Include="InstalledMods.cs" />
</ItemGroup>
<ItemGroup>

View File

@@ -36,6 +36,8 @@ namespace OpenRA.Mods.Cnc
public override void Init(ModData modData, Dictionary<string, string> info)
{
base.Init(modData, info);
loadInfo = info;
// Avoid standard loading mechanisms so we

View File

@@ -12,6 +12,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using OpenRA.FileFormats;
using OpenRA.Mods.Common.Widgets.Logic;
using OpenRA.Widgets;
@@ -21,8 +22,12 @@ namespace OpenRA.Mods.Common.LoadScreens
public class BlankLoadScreen : ILoadScreen
{
public LaunchArguments Launch;
ModData modData;
public virtual void Init(ModData m, Dictionary<string, string> info) { }
public virtual void Init(ModData modData, Dictionary<string, string> info)
{
this.modData = modData;
}
public virtual void Display()
{
@@ -97,5 +102,13 @@ namespace OpenRA.Mods.Common.LoadScreens
Dispose(true);
GC.SuppressFinalize(this);
}
public bool RequiredContentIsInstalled()
{
var content = modData.Manifest.Get<ModContent>();
return content.Packages
.Where(p => p.Value.Required)
.All(p => p.Value.TestFiles.All(f => File.Exists(Platform.ResolvePath(f))));
}
}
}

View File

@@ -31,6 +31,8 @@ namespace OpenRA.Mods.Common.LoadScreens
public override void Init(ModData modData, Dictionary<string, string> info)
{
base.Init(modData, info);
// Avoid standard loading mechanisms so we
// can display the loadscreen as early as possible
r = Game.Renderer;

View File

@@ -11,7 +11,6 @@
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using OpenRA.Graphics;
using OpenRA.Widgets;
@@ -58,5 +57,10 @@ namespace OpenRA.Mods.Common.LoadScreens
if (sprite != null)
sprite.Sheet.Dispose();
}
public bool RequiredContentIsInstalled()
{
return true;
}
}
}

View File

@@ -778,6 +778,7 @@
<Compile Include="Activities\Air\FlyCircleTimed.cs" />
<Compile Include="UtilityCommands\ListInstallShieldCabContentsCommand.cs" />
<Compile Include="FileFormats\InstallShieldCABCompression.cs" />
<Compile Include="ModContent.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>