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; } } }