Files
Continentis/Assets/Scripts/MainGame/Character/CharacterSubmodules/AttributeSubmodule.cs
SoulliesOfficial dd2657573a 卡牌更新
2026-04-08 04:48:35 -04:00

61 lines
2.3 KiB
C#

using System.Collections.Generic;
using System.Linq;
using SLSFramework.General;
using UnityEngine;
namespace Continentis.MainGame.Character
{
public partial class AttributeSubmodule : SubmoduleBase<CharacterBase>
{
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);
}
}
}
}