using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.IO.MemoryMappedFiles;
using System.Linq;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using BITKit.IO;
using BITKit.UX;
using Cysharp.Threading.Tasks;
using Microsoft.CSharp;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
namespace BITKit.Mod
{
///
/// Mod接口,需要实现所有方法
///
public interface IMod
{
string FolderPath { get; set; }
///
/// 唯一Id
///
public Guid Id => new Guid("3E5AF780-FAB1-40B7-B8EF-62938F2340CB");
///
/// Mod名称,可以重复
///
public string Name { get; }
///
/// 包名,不可重复
///
public string PackageName { get; }
///
/// 描述,可为空
///
public string Description { get; }
///
/// 版本,调试时Mod版本需要高于以前的版本或者为0.0.0
///
public string Version { get; }
///
/// 开发者
///
public string Author { get; }
///
/// 联系邮箱,或者为其他联系方式
///
public string Email { get; }
///
/// Mod主页
///
public string Url { get; }
///
/// Mod标签,通常用于过滤和搜索
///
public string[] Tags { get; }
///
/// Mod属性,例如图标,背景或者其他资产包
///
public object[] Properties { get; }
///
/// 初始化时
///
void OnInitialize();
///
/// 初始化时的异步方法
///
///
UniTask OnInitializedAsync(CancellationToken cancellationToken);
///
/// 初始化完成后
///
void OnInitialized();
///
/// 被释放时
///
void OnDispose();
///
/// 被释放时的异步方法
///
///
UniTask OnDisposeAsync(CancellationToken cancellationToken);
///
/// 被释放后
///
void OnDisposed();
}
public class MyMod : IMod
{
public string FolderPath { get; set; }
public virtual string Name { get; set; } = nameof(MyMod);
// ReSharper disable once StringLiteralTypo
public virtual string PackageName { get; set; } = "com.bitkit.mymod";
public virtual string Description{ get; set; } = "Empty mod for test function";
public virtual string Version { get; set; } = "initial 0.0.1";
public virtual string Author { get; set; } = nameof(BITKit);
public virtual string Email { get; set; } = "root@bitfall.icu";
public virtual string Url { get; set; } = "https://bitfall.icu";
public virtual string[] Tags { get; set; } = Array.Empty();
public virtual object[] Properties{ get; set; } = Array.Empty