61 lines
2.3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
} |