Files
Continentis/Assets/Scripts/MainGame/Character/CharacterSubmodules/AttributeSubmodule.cs

61 lines
2.3 KiB
C#
Raw Normal View History

2025-10-03 00:02:43 -04:00
using System.Collections.Generic;
using System.Linq;
2025-10-23 00:49:44 -04:00
using SLSFramework.General;
2025-10-03 00:02:43 -04:00
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)
{
2026-03-20 11:56:50 -04:00
generalAttributeGroup = new AttributeGroup(characterData.generalAttributes.ToDictionary());
2025-10-03 00:02:43 -04:00
generalAttributeGroup.ApplyAllAttributes();
2026-03-20 11:56:50 -04:00
generalAttributeGroup.SetUpEndowments(characterData.runtimeGeneralAttributes.ToDictionary());
2025-10-03 00:02:43 -04:00
}
}
public partial class AttributeSubmodule
{
2025-11-08 09:50:55 -05:00
public float GetRawGeneralAttribute(string attributeName, float defaultValue = 0)
2025-10-03 00:02:43 -04:00
{
return generalAttributeGroup.current.GetValueOrDefault(attributeName, defaultValue);
}
2025-11-08 09:50:55 -05:00
public int GetGeneralAttribute(string attributeName, int defaultValue = 0)
2025-10-03 00:02:43 -04:00
{
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);
}
}
}
}