Files
Continentis/Assets/Scripts/MainGame/Character/CharacterSubmodules/EquipmentSubmodule.cs
SoulliesOfficial 9b1b5ca93f initial
2025-10-03 00:02:43 -04:00

58 lines
2.5 KiB
C#

using System.Collections.Generic;
using System.Linq;
using Continentis.MainGame.Equipment;
using UnityEngine;
namespace Continentis.MainGame.Character
{
public partial class EquipmentSubmodule : SubmoduleBase<CharacterBase>
{
public List<EquipmentBase> currentEquipments;
public EquipmentSubmodule(CharacterBase character) : base(character)
{
currentEquipments = new List<EquipmentBase>();
}
}
public partial class EquipmentSubmodule
{
public void GetCoreAttributeChange(string attributeName, out float numericChanges,
out float percentageChangesOfAccumulation, out float percentChangesOfMultiplication)
{
numericChanges = currentEquipments
.SelectMany(eq => eq.coreAttributeSubmodule.numericChange)
.Where(change => change.Key == attributeName)
.Sum(change => change.Value);
percentageChangesOfAccumulation = currentEquipments
.SelectMany(eq => eq.coreAttributeSubmodule.percentageChangeOfAccumulation)
.Where(change => change.Key == attributeName)
.Sum(change => change.Value);
percentChangesOfMultiplication = currentEquipments
.SelectMany(ew => ew.coreAttributeSubmodule.percentageChangeOfMultiplication)
.Where(change => change.Key == attributeName)
.Aggregate<KeyValuePair<string, float>, float>(1, (current, change) => current * change.Value);
}
public void GetGeneralAttributeChange(string attributeName, out float numericChanges,
out float percentageChangesOfAccumulation, out float percentChangesOfMultiplication)
{
numericChanges = currentEquipments
.SelectMany(eq => eq.generalAttributeSubmodule.numericChange)
.Where(change => change.Key == attributeName)
.Sum(change => change.Value);
percentageChangesOfAccumulation = currentEquipments
.SelectMany(eq => eq.generalAttributeSubmodule.percentageChangeOfAccumulation)
.Where(change => change.Key == attributeName)
.Sum(change => change.Value);
percentChangesOfMultiplication = currentEquipments
.SelectMany(ew => ew.generalAttributeSubmodule.percentageChangeOfMultiplication)
.Where(change => change.Key == attributeName)
.Aggregate<KeyValuePair<string, float>, float>(1, (current, change) => current * change.Value);
}
}
}