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; } = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "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; }
}
}