diff options
Diffstat (limited to 'src/StardewModdingAPI/Mod.cs')
-rw-r--r-- | src/StardewModdingAPI/Mod.cs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/StardewModdingAPI/Mod.cs b/src/StardewModdingAPI/Mod.cs new file mode 100644 index 00000000..8edfcf7e --- /dev/null +++ b/src/StardewModdingAPI/Mod.cs @@ -0,0 +1,51 @@ +using System.IO; + +namespace StardewModdingAPI +{ + public class Mod + { + /// <summary> + /// The mod's manifest + /// </summary> + public Manifest Manifest { get; internal set; } + + /// <summary> + /// Where the mod is located on the disk. + /// </summary> + public string PathOnDisk { get; internal set; } + + /// <summary> + /// A basic path to store your mod's config at. + /// </summary> + public string BaseConfigPath => PathOnDisk + "\\config.json"; + + /// <summary> + /// A basic path to where per-save configs are stored + /// </summary> + public string PerSaveConfigFolder => GetPerSaveConfigFolder(); + + /// <summary> + /// A basic path to store your mod's config at, dependent on the current save. + /// The Manifest must allow for per-save configs. This is to keep from having an + /// empty directory in every mod folder. + /// </summary> + public string PerSaveConfigPath => Constants.CurrentSavePathExists ? Path.Combine(PerSaveConfigFolder, Constants.SaveFolderName + ".json") : ""; + + /// <summary> + /// A basic method that is the entry-point of your mod. It will always be called once when the mod loads. + /// </summary> + public virtual void Entry(params object[] objects) + { + } + + private string GetPerSaveConfigFolder() + { + if (Manifest.PerSaveConfigs) + { + return Path.Combine(PathOnDisk, "psconfigs"); + } + Log.AsyncR($"The mod [{Manifest.Name}] is not configured to use per-save configs."); + return ""; + } + } +}
\ No newline at end of file |