Added descriptions to ContentInstallerFileSystemLoader

(cherry picked from commit 955bf96a84af425da48963c79c43c5d3adca8cac)
This commit is contained in:
Pavel Penev
2024-11-17 17:48:40 +02:00
parent 8b997a5656
commit cc064d0dad
5 changed files with 25 additions and 16 deletions

View File

@@ -13,23 +13,28 @@ using System.Collections.Generic;
namespace OpenRA.Mods.Common.FileSystem
{
[Desc("A file system that loads game assets installed by the user into their support directory.")]
public class ContentInstallerFileSystemLoader : IFileSystemLoader, IFileSystemExternalContent
{
[FieldLoader.Require]
[Desc("Mod to use for content installation.")]
public readonly string ContentInstallerMod = null;
[FieldLoader.Require]
public readonly Dictionary<string, string> Packages = null;
[Desc("A list of mod-provided packages. Anything required to display the initial load screen must be listed here.")]
public readonly Dictionary<string, string> SystemPackages = null;
[Desc("A list of user-installed packages. If missing (and not marked as optional), these will trigger the content installer.")]
public readonly Dictionary<string, string> ContentPackages = null;
public readonly Dictionary<string, string> ContentFiles = null;
[Desc("Files that aren't mounted as packages, but still need to trigger the content installer if missing.")]
public readonly Dictionary<string, string> RequiredContentFiles = null;
bool contentAvailable = true;
bool isContentAvailable = true;
public void Mount(OpenRA.FileSystem.FileSystem fileSystem, ObjectCreator objectCreator)
{
foreach (var kv in Packages)
foreach (var kv in SystemPackages)
fileSystem.Mount(kv.Key, kv.Value);
if (ContentPackages != null)
@@ -42,23 +47,23 @@ namespace OpenRA.Mods.Common.FileSystem
}
catch
{
contentAvailable = false;
isContentAvailable = false;
}
}
}
if (ContentFiles != null)
foreach (var kv in ContentFiles)
if (RequiredContentFiles != null)
foreach (var kv in RequiredContentFiles)
if (!fileSystem.Exists(kv.Key))
contentAvailable = false;
isContentAvailable = false;
}
bool IFileSystemExternalContent.InstallContentIfRequired(ModData modData)
{
if (!contentAvailable)
if (!isContentAvailable)
Game.InitializeMod(ContentInstallerMod, new Arguments());
return !contentAvailable;
return !isContentAvailable;
}
}
}

View File

@@ -8,7 +8,7 @@ Metadata:
PackageFormats: Mix
FileSystem: ContentInstallerFileSystem
Packages:
SystemPackages:
^EngineDir
$cnc: cnc
^EngineDir|mods/common: common
@@ -30,6 +30,7 @@ FileSystem: ContentInstallerFileSystem
~content|scores-covertops.mix
~content|transit.mix
~content|general.mix
# Below are mod-provided (system) packages that need to be loaded after the content packages so they can override content assets.
cnc|bits/snow.mix
cnc|bits
cnc|bits/jungle

View File

@@ -8,7 +8,7 @@ Metadata:
PackageFormats: D2kSoundResources
FileSystem: ContentInstallerFileSystem
Packages:
SystemPackages:
^EngineDir
$d2k: d2k
^EngineDir|mods/common: common
@@ -21,8 +21,9 @@ FileSystem: ContentInstallerFileSystem
content|GAMESFX
~content|Music
~content|Movies
# Below are mod-provided (system) packages that need to be loaded after the content packages so they can override content assets.
d2k|bits
ContentFiles:
RequiredContentFiles:
content|BLOXBASE.R16
content|BLOXBAT.R16
content|BLOXBGBS.R16

View File

@@ -8,7 +8,7 @@ Metadata:
PackageFormats: Mix
FileSystem: ContentInstallerFileSystem
Packages:
SystemPackages:
^EngineDir
$ra: ra
^EngineDir|mods/common: common
@@ -36,9 +36,10 @@ FileSystem: ContentInstallerFileSystem
~content|movies
~content|scores.mix
~content|general.mix
# Below are mod-provided (system) packages that need to be loaded after the content packages so they can override content assets.
ra|bits
ra|bits/desert
ContentFiles:
RequiredContentFiles:
content|expand/chrotnk1.aud
content|expand/fixit1.aud
content|expand/jburn1.aud

View File

@@ -8,7 +8,7 @@ Metadata:
PackageFormats: Mix
FileSystem: ContentInstallerFileSystem
Packages:
SystemPackages:
^EngineDir
$ts: ts
^EngineDir|mods/common: common
@@ -38,6 +38,7 @@ FileSystem: ContentInstallerFileSystem
content|firestorm/e01vox02.mix
content|firestorm/ecache01.mix
~content|firestorm/scores01.mix
# Below are mod-provided (system) packages that need to be loaded after the content packages so they can override content assets.
ts|bits
ContentInstallerMod: ts-content