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 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 public class ContentInstallerFileSystemLoader : IFileSystemLoader, IFileSystemExternalContent
{ {
[FieldLoader.Require] [FieldLoader.Require]
[Desc("Mod to use for content installation.")]
public readonly string ContentInstallerMod = null; public readonly string ContentInstallerMod = null;
[FieldLoader.Require] [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> 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) 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); fileSystem.Mount(kv.Key, kv.Value);
if (ContentPackages != null) if (ContentPackages != null)
@@ -42,23 +47,23 @@ namespace OpenRA.Mods.Common.FileSystem
} }
catch catch
{ {
contentAvailable = false; isContentAvailable = false;
} }
} }
} }
if (ContentFiles != null) if (RequiredContentFiles != null)
foreach (var kv in ContentFiles) foreach (var kv in RequiredContentFiles)
if (!fileSystem.Exists(kv.Key)) if (!fileSystem.Exists(kv.Key))
contentAvailable = false; isContentAvailable = false;
} }
bool IFileSystemExternalContent.InstallContentIfRequired(ModData modData) bool IFileSystemExternalContent.InstallContentIfRequired(ModData modData)
{ {
if (!contentAvailable) if (!isContentAvailable)
Game.InitializeMod(ContentInstallerMod, new Arguments()); Game.InitializeMod(ContentInstallerMod, new Arguments());
return !contentAvailable; return !isContentAvailable;
} }
} }
} }

View File

@@ -8,7 +8,7 @@ Metadata:
PackageFormats: Mix PackageFormats: Mix
FileSystem: ContentInstallerFileSystem FileSystem: ContentInstallerFileSystem
Packages: SystemPackages:
^EngineDir ^EngineDir
$cnc: cnc $cnc: cnc
^EngineDir|mods/common: common ^EngineDir|mods/common: common
@@ -30,6 +30,7 @@ FileSystem: ContentInstallerFileSystem
~content|scores-covertops.mix ~content|scores-covertops.mix
~content|transit.mix ~content|transit.mix
~content|general.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/snow.mix
cnc|bits cnc|bits
cnc|bits/jungle cnc|bits/jungle

View File

@@ -8,7 +8,7 @@ Metadata:
PackageFormats: D2kSoundResources PackageFormats: D2kSoundResources
FileSystem: ContentInstallerFileSystem FileSystem: ContentInstallerFileSystem
Packages: SystemPackages:
^EngineDir ^EngineDir
$d2k: d2k $d2k: d2k
^EngineDir|mods/common: common ^EngineDir|mods/common: common
@@ -21,8 +21,9 @@ FileSystem: ContentInstallerFileSystem
content|GAMESFX content|GAMESFX
~content|Music ~content|Music
~content|Movies ~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 d2k|bits
ContentFiles: RequiredContentFiles:
content|BLOXBASE.R16 content|BLOXBASE.R16
content|BLOXBAT.R16 content|BLOXBAT.R16
content|BLOXBGBS.R16 content|BLOXBGBS.R16

View File

@@ -8,7 +8,7 @@ Metadata:
PackageFormats: Mix PackageFormats: Mix
FileSystem: ContentInstallerFileSystem FileSystem: ContentInstallerFileSystem
Packages: SystemPackages:
^EngineDir ^EngineDir
$ra: ra $ra: ra
^EngineDir|mods/common: common ^EngineDir|mods/common: common
@@ -36,9 +36,10 @@ FileSystem: ContentInstallerFileSystem
~content|movies ~content|movies
~content|scores.mix ~content|scores.mix
~content|general.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
ra|bits/desert ra|bits/desert
ContentFiles: RequiredContentFiles:
content|expand/chrotnk1.aud content|expand/chrotnk1.aud
content|expand/fixit1.aud content|expand/fixit1.aud
content|expand/jburn1.aud content|expand/jburn1.aud

View File

@@ -8,7 +8,7 @@ Metadata:
PackageFormats: Mix PackageFormats: Mix
FileSystem: ContentInstallerFileSystem FileSystem: ContentInstallerFileSystem
Packages: SystemPackages:
^EngineDir ^EngineDir
$ts: ts $ts: ts
^EngineDir|mods/common: common ^EngineDir|mods/common: common
@@ -38,6 +38,7 @@ FileSystem: ContentInstallerFileSystem
content|firestorm/e01vox02.mix content|firestorm/e01vox02.mix
content|firestorm/ecache01.mix content|firestorm/ecache01.mix
~content|firestorm/scores01.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 ts|bits
ContentInstallerMod: ts-content ContentInstallerMod: ts-content