using System; using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 资源模块 /// public class ModuleAssets { protected List datas = new List(); /// 核心模块 protected virtual ModuleCore ModuleCore => ModuleCore.I; /// 更改事件 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(); } /// 添加数据 public virtual void AddRange(IList data) { Datas.AddRange(data); OnChange?.Invoke(); } /// 删除数据 public virtual void Remove(Data data) { Datas.Remove(data); OnChange?.Invoke(); } /// 保存数据 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 ModuleAssetsTool { /// 头尾循环标准化索引 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; } }