using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using MuHua; /// /// 属性附加 /// public class AttributeSystem : Module { /// 修改事件 public static event Action OnChange; /// 附加字典 public Dictionary dictionary = new Dictionary(); /// 应用修改 public void Apply() => OnChange?.Invoke(this); /// 添加容器 public void AddInstance(string containerID, AttributeContainer container) { if (dictionary.ContainsKey(containerID)) { return; } dictionary.Add(containerID, container); OnChange?.Invoke(this); } /// 添加修改器 public void AddModifier(string containerID, string attributeID, AttributeModifier mod, bool isUpdate) { if (!dictionary.ContainsKey(containerID)) { return; } dictionary[containerID].AddModifier(attributeID, mod, isUpdate); OnChange?.Invoke(this); } /// 重新计算值 public void RecalculateValue() { foreach (var item in dictionary) { item.Value.RecalculateValue(); } } /// 查询容器 public AttributeContainer FindContainer(string containerID) { if (!dictionary.ContainsKey(containerID)) { return new(); } return dictionary[containerID]; } /// 查询容器 public bool TryContainer(string containerID, out AttributeContainer container) { container = null; if (!dictionary.ContainsKey(containerID)) { return false; } container = dictionary[containerID]; return true; } }