using OwlCore.AbstractUI.Models; using System; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; using ZuneModCore.Mods; namespace ZuneModCore { public abstract class Mod { /// /// A list of all available mods /// public static readonly IReadOnlyList AvailableMods = new List { new FeaturesOverrideMod(), new VideoSyncMod(), new WebservicesMod(), new MbidLocatorMod(), }.AsReadOnly(); public static string ZuneInstallDir { get; set; } = @"C:\Program Files\Zune\"; public abstract string Id { get; } public abstract string Title { get; } public abstract string Description { get; } public abstract string Author { get; } public virtual Task Init() => Task.CompletedTask; public abstract Task Apply(); public abstract Task Reset(); public abstract AbstractUIElementGroup? OptionsUI { get; } public string StorageDirectory { get { string dir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "ZuneModCore", Id); // Create the directory just in case the consumer assumes the folder exists already Directory.CreateDirectory(dir); return dir; } } public abstract IReadOnlyList? DependentMods { get; } } }