using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace MuHua {
///
/// 资源模块
///
public class ModuleAssets : Module> {
protected List datas = new List();
/// 更改事件
public virtual event Action> OnChange;
/// 数据列表
public virtual List Datas => datas;
/// 数据计数
public virtual int Count => Datas.Count;
/// 数据操作 Datas[index];
/// 添加数据
public virtual void Add(Data data) { Datas.Add(data); OnChange?.Invoke(this); }
/// 添加数据
public virtual void Add(IList data) { Datas.AddRange(data); OnChange?.Invoke(this); }
/// 删除数据
public virtual void Remove(Data data) { Datas.Remove(data); OnChange?.Invoke(this); }
/// 清除数据
public virtual void Clear() { Datas.Clear(); OnChange?.Invoke(this); }
/// 保存数据
public virtual void Save() { throw new NotImplementedException(); }
/// 加载数据
public virtual void Load() { throw new NotImplementedException(); }
/// 循环列表
public virtual void ForEach(Action action) => Datas.ForEach(action);
}
///
/// 资源模块工具
///
public static class AssetsTool {
/// 头尾循环标准化索引
public static Data LoopIndex(this ModuleAssets assets, int index) {
return assets[LoopIndex(index, assets.Count)];
}
/// 头尾循环标准化索引
public static Data LoopIndex(this List list, int index) {
return list[LoopIndex(index, list.Count)];
}
/// 头尾循环标准化索引
public static Data LoopIndex(this Data[] array, int index) {
return array[LoopIndex(index, array.Length)];
}
/// 头尾循环标准化索引
public static int LoopIndex(int index, int maxIndex) {
return index % maxIndex;
}
}
}