TH1/Unity/Assets/Plugins/ViSDK/ViBaseStruct/ViDictionaryScale.cs
2025-08-20 02:24:48 +08:00

75 lines
1.2 KiB
C#

using System;
using System.Collections.Generic;
public class ViDictionaryScale
{
public delegate void DeleUpdated(float oldValue, float newValue);
public DeleUpdated UpdatedExec;
public float Value { get { return _value; } }
public float DefaultValue
{
get { return _defaultValue; }
set
{
_defaultValue = value;
OnUpdate();
}
}
public void UpdateNotify()
{
if (UpdatedExec != null)
{
float value = Value;
UpdatedExec(value, value);
}
}
public void Add(string name, float value)
{
if (_scaleModList.ContainsKey(name))
{
_scaleModList[name] = value;
}
else
{
_scaleModList.Add(name, value);
}
//
OnUpdate();
}
public void Del(string name)
{
if (_scaleModList.ContainsKey(name))
{
_scaleModList.Remove(name);
}
//
OnUpdate();
}
void OnUpdate()
{
float oldValue = _value;
//
_value = DefaultValue;
foreach (KeyValuePair<string, float> iter in _scaleModList)
{
_value += iter.Value;
}
//
if (_value != oldValue)
{
if (UpdatedExec != null)
{
UpdatedExec(oldValue, _value);
}
}
}
//
float _value = 1.0f;
float _defaultValue = 1.0f;
Dictionary<string, float> _scaleModList = new Dictionary<string, float>();
}