using System; using System.Collections.Generic; using Continentis.MainGame; using Continentis.MainGame.Card; using Continentis.MainGame.Character; using Sirenix.OdinInspector; using UnityEngine; namespace Continentis.MainGame.Equipment { public abstract partial class EquipmentBase { [Title("Equipment Data")] public EquipmentData equipmentData; [Title("References")] public CharacterBase character; [Title("Base Info")] public Guid equipmentID; public List tags; [Title("Submodules")] public AttributeSubmodule coreAttributeSubmodule; public AttributeSubmodule generalAttributeSubmodule; public EventSubmodule eventSubmodule; public ContentSubmodule contentSubmodule; public void SetUp(CharacterBase character) { this.equipmentID = Guid.NewGuid(); this.tags = new List(equipmentData.tags); coreAttributeSubmodule = new AttributeSubmodule(this, equipmentData.coreNumericChange, equipmentData.corePercentageChangeOfAccumulation, equipmentData.corePercentageChangeOfMultiplication); generalAttributeSubmodule = new AttributeSubmodule(this, equipmentData.generalNumericChange, equipmentData.generalPercentageChangeOfAccumulation, equipmentData.generalPercentageChangeOfMultiplication); eventSubmodule = new EventSubmodule(this); contentSubmodule = new ContentSubmodule(this); if (character != null) { this.character = character; this.character.equipmentSubmodule.currentEquipments.Add(this); //TODO: 后续换成装备函数 List coreNames = coreAttributeSubmodule.GetModifiedAttributeNames(); if (coreNames.Count > 0) { coreAttributeSubmodule.GetModifiedAttributeNames().ForEach(attributeName => { this.character.attributeSubmodule.RefreshCoreAttribute(attributeName); }); this.character.attributeSubmodule.RefreshAllGeneralAttributes(); } else { generalAttributeSubmodule.GetModifiedAttributeNames().ForEach(attributeName => { this.character.attributeSubmodule.RefreshGeneralAttribute(attributeName); }); } } } } public partial class EquipmentBase { } }