Rewrite property panel to adapt to ruleset config.

This commit is contained in:
2023-07-27 22:07:20 +08:00
parent 9b091a0084
commit bc51a45df8
39 changed files with 825 additions and 298 deletions

View File

@@ -0,0 +1,39 @@
using UnityEngine;
namespace Cryville.Crtr.Config {
public abstract class PropertyValuePanel : MonoBehaviour {
IPropertyAdapter _property;
public void Init(IPropertyAdapter property) {
_property = property;
GetValue();
}
protected object[] Range { get { return _property.Range; } }
public object MappedValue { get; private set; }
private object m_rawValue;
public object RawValue {
get { return m_rawValue; }
set {
m_rawValue = value;
SetValue();
}
}
protected abstract void OnValueUpdated();
void GetValue() {
if (_property.SetMapped) {
MappedValue = _property.GetValue();
m_rawValue = _property.MapValueInverse(MappedValue);
}
else {
m_rawValue = _property.GetValue();
MappedValue = _property.MapValue(m_rawValue);
}
OnValueUpdated();
}
void SetValue() {
var outRaw = RawValue;
MappedValue = _property.MapValue(outRaw);
_property.SetValue(_property.SetMapped ? MappedValue : outRaw);
OnValueUpdated();
}
}
}