更新
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Cielonos.MainGame.Inventory
|
||||
{
|
||||
public class AttributeSubmodule : SubmoduleBase<ItemBase>
|
||||
{
|
||||
public Dictionary<string, float> numericChange;
|
||||
public Dictionary<string, float> percentageChangeOfAccumulation;
|
||||
public Dictionary<string, float> percentageChangeOfMultiplication;
|
||||
|
||||
public AttributeSubmodule(ItemBase owner, AttributeData data) : base(owner)
|
||||
{
|
||||
this.numericChange = new Dictionary<string, float>(data.numericChange);
|
||||
this.percentageChangeOfAccumulation = new Dictionary<string, float>(data.percentageChangeOfAccumulation);
|
||||
this.percentageChangeOfMultiplication = new Dictionary<string, float>(data.percentageChangeOfMultiplication);
|
||||
}
|
||||
|
||||
public void GetAttributeChanges(string attributeName, out float numeric, out float pAccumulation, out float pMultiplication)
|
||||
{
|
||||
numeric = numericChange.GetValueOrDefault(attributeName, 0f);
|
||||
pAccumulation = percentageChangeOfAccumulation.GetValueOrDefault(attributeName, 0f);
|
||||
pMultiplication = percentageChangeOfMultiplication.GetValueOrDefault(attributeName, 1f);
|
||||
}
|
||||
|
||||
public void ApplyAttributeChanges(string attributeName, ref float numeric, ref float pAccumulation, ref float pMultiplication)
|
||||
{
|
||||
numeric += numericChange.GetValueOrDefault(attributeName, 0f);
|
||||
pAccumulation += percentageChangeOfAccumulation.GetValueOrDefault(attributeName, 0f);
|
||||
pMultiplication *= percentageChangeOfMultiplication.GetValueOrDefault(attributeName, 1f);
|
||||
}
|
||||
|
||||
public List<string> RefreshAllModifiedAttributes()
|
||||
{
|
||||
List<string> modifiedAttributes = new List<string>();
|
||||
modifiedAttributes.AddRange(numericChange.Select(kvp => kvp.Key));
|
||||
modifiedAttributes.AddRange(percentageChangeOfAccumulation.Select(kvp => kvp.Key));
|
||||
modifiedAttributes.AddRange(percentageChangeOfMultiplication.Select(kvp => kvp.Key));
|
||||
|
||||
modifiedAttributes.ForEach(attr => owner.player.attributeSm.RefreshAttribute(attr));
|
||||
|
||||
return modifiedAttributes;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user