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