summaryrefslogtreecommitdiff
path: root/src/SMAPI/Program.cs
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <github@jplamondonw.com>2018-02-20 19:43:05 -0500
committerJesse Plamondon-Willard <github@jplamondonw.com>2018-02-20 19:43:05 -0500
commitec1e5a169828d95c6cf0c779089b25627754c894 (patch)
treeb26048d32678b5021336d8cebd23fb6aec961fb7 /src/SMAPI/Program.cs
parent9369232118d0ae08df49bbc30037387cf71dd861 (diff)
downloadSMAPI-ec1e5a169828d95c6cf0c779089b25627754c894.tar.gz
SMAPI-ec1e5a169828d95c6cf0c779089b25627754c894.tar.bz2
SMAPI-ec1e5a169828d95c6cf0c779089b25627754c894.zip
support transitional content packs (#436)
This commit adds an API to generate a content pack from an arbitrary folder, to support mods which already had their own content pack format before SMAPI standardised it. This lets them support both formats using the same APIs while they transition.
Diffstat (limited to 'src/SMAPI/Program.cs')
-rw-r--r--src/SMAPI/Program.cs17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/SMAPI/Program.cs b/src/SMAPI/Program.cs
index 2d0908a1..aecf5b30 100644
--- a/src/SMAPI/Program.cs
+++ b/src/SMAPI/Program.cs
@@ -88,6 +88,9 @@ namespace StardewModdingAPI
new Regex(@"^(?:FRUIT )?TREE: IsClient:(?:True|False) randomOutput: \d+$", RegexOptions.Compiled | RegexOptions.CultureInvariant)
};
+ /// <summary>Encapsulates SMAPI's JSON file parsing.</summary>
+ private readonly JsonHelper JsonHelper = new JsonHelper();
+
/*********
** Public methods
@@ -360,14 +363,14 @@ namespace StardewModdingAPI
ModResolver resolver = new ModResolver();
// load manifests
- IModMetadata[] mods = resolver.ReadManifests(Constants.ModPath, new JsonHelper(), modDatabase).ToArray();
+ IModMetadata[] mods = resolver.ReadManifests(Constants.ModPath, this.JsonHelper, modDatabase).ToArray();
resolver.ValidateManifests(mods, Constants.ApiVersion, Constants.GetUpdateUrl);
// process dependencies
mods = resolver.ProcessDependencies(mods, modDatabase).ToArray();
// load mods
- this.LoadMods(mods, new JsonHelper(), this.ContentManager);
+ this.LoadMods(mods, this.JsonHelper, this.ContentManager);
// check for updates
this.CheckForUpdatesAsync(mods);
@@ -755,7 +758,15 @@ namespace StardewModdingAPI
IReflectionHelper reflectionHelper = new ReflectionHelper(manifest.UniqueID, metadata.DisplayName, this.Reflection, this.DeprecationManager);
IModRegistry modRegistryHelper = new ModRegistryHelper(manifest.UniqueID, this.ModRegistry, proxyFactory, monitor);
ITranslationHelper translationHelper = new TranslationHelper(manifest.UniqueID, manifest.Name, contentManager.GetLocale(), contentManager.GetCurrentLanguage());
- modHelper = new ModHelper(manifest.UniqueID, metadata.DirectoryPath, jsonHelper, contentHelper, commandHelper, modRegistryHelper, reflectionHelper, translationHelper, contentPacks);
+
+ IContentPack CreateTransitionalContentPack(string packDirPath, IManifest packManifest)
+ {
+ IMonitor packMonitor = this.GetSecondaryMonitor(packManifest.Name);
+ IContentHelper packContentHelper = new ContentHelper(contentManager, packDirPath, packManifest.UniqueID, packManifest.Name, packMonitor);
+ return new ContentPack(packDirPath, packManifest, packContentHelper, this.JsonHelper);
+ }
+
+ modHelper = new ModHelper(manifest.UniqueID, metadata.DirectoryPath, jsonHelper, contentHelper, commandHelper, modRegistryHelper, reflectionHelper, translationHelper, contentPacks, CreateTransitionalContentPack, this.DeprecationManager);
}
// get mod instance