using System.Collections.Generic; using System.Linq; using SLSFramework.General; using UnityEngine; namespace Continentis.MainGame.Character { public partial class AttributeSubmodule : SubmoduleBase { public AttributeGroup generalAttributeGroup; public AttributeSubmodule(CharacterBase character) : base(character) { Initialize(character.data); } private void Initialize(CharacterData characterData) { generalAttributeGroup = new AttributeGroup(characterData.generalAttributes.ToDictionary()); generalAttributeGroup.ApplyAllAttributes(); generalAttributeGroup.SetUpEndowments(characterData.runtimeGeneralAttributes.ToDictionary()); } } public partial class AttributeSubmodule { public float GetRawGeneralAttribute(string attributeName, float defaultValue = 0) { return generalAttributeGroup.current.GetValueOrDefault(attributeName, defaultValue); } public int GetGeneralAttribute(string attributeName, int defaultValue = 0) { return generalAttributeGroup.current.GetRoundValue(attributeName, defaultValue); } } public partial class AttributeSubmodule { public void RefreshGeneralAttribute(string attributeName) { generalAttributeGroup.ResetAttribute(attributeName); owner.equipmentSubmodule.GetGeneralAttributeChange(attributeName, out float e_numeric, out float e_pAccumulation, out float e_pMultiplication); owner.combatBuffSubmodule.GetGeneralAttributeChange(attributeName, out float cb_numeric, out float cb_pAccumulation, out float cb_pMultiplication); float numeric = e_numeric + cb_numeric; float pAccumulation = e_pAccumulation + cb_pAccumulation; float pMultiplication = e_pMultiplication * cb_pMultiplication; generalAttributeGroup.ModifyAttribute(attributeName, numeric, pAccumulation, pMultiplication); } public void RefreshAllGeneralAttributes() { foreach (string attributeName in generalAttributeGroup.current.Keys.ToList()) { RefreshGeneralAttribute(attributeName); } } } }