75 lines
1.2 KiB
C#
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>();
|
|
} |