diff --git a/Assets/Cryville/Crtr/Browsing/UI/ResourceBrowserMaster.cs b/Assets/Cryville/Crtr/Browsing/UI/ResourceBrowserMaster.cs index 63d4e5b..ea80594 100644 --- a/Assets/Cryville/Crtr/Browsing/UI/ResourceBrowserMaster.cs +++ b/Assets/Cryville/Crtr/Browsing/UI/ResourceBrowserMaster.cs @@ -20,6 +20,8 @@ namespace Cryville.Crtr.Browsing.UI { [SerializeField] PathedResourceBrowser m_mainBrowser; [SerializeField] + SettingsBrowser m_settingsBrowser; + [SerializeField] DetailPanel m_detailPanel; BrowserTab _currentTab; @@ -28,6 +30,8 @@ namespace Cryville.Crtr.Browsing.UI { void Awake() { m_mainBrowser.ResourceManager = new LegacyResourceManager(Settings.Default.GameDataPath); OnTabClicked(AddTab("Local", m_mainBrowser)); + + AddTab("Settings", m_settingsBrowser); } BrowserTab AddTab(string name, ResourceBrowser browser) { diff --git a/Assets/Cryville/Crtr/Browsing/UI/SettingsBrowser.cs b/Assets/Cryville/Crtr/Browsing/UI/SettingsBrowser.cs new file mode 100644 index 0000000..81ce0cc --- /dev/null +++ b/Assets/Cryville/Crtr/Browsing/UI/SettingsBrowser.cs @@ -0,0 +1,11 @@ +using Cryville.Crtr.Config; +using Cryville.Crtr.Config.UI; + +namespace Cryville.Crtr.Browsing.UI { + internal class SettingsBrowser : ResourceBrowser { + protected override void Awake() { + base.Awake(); + GetComponent().Adapter = new DefaultPropertyMasterAdapter(Settings.Default); + } + } +} diff --git a/Assets/Cryville/Crtr/Browsing/UI/SettingsBrowser.cs.meta b/Assets/Cryville/Crtr/Browsing/UI/SettingsBrowser.cs.meta new file mode 100644 index 0000000..8158ca2 --- /dev/null +++ b/Assets/Cryville/Crtr/Browsing/UI/SettingsBrowser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8523c789afb6adb48ac62a48f7decf0f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Cryville/Crtr/Config/UI/PVPBool.cs b/Assets/Cryville/Crtr/Config/UI/PVPBool.cs index 48aac15..7ba81da 100644 --- a/Assets/Cryville/Crtr/Config/UI/PVPBool.cs +++ b/Assets/Cryville/Crtr/Config/UI/PVPBool.cs @@ -6,8 +6,6 @@ namespace Cryville.Crtr.Config.UI { [SerializeField] RectTransform m_on; [SerializeField] - RectTransform m_handleArea; - [SerializeField] RectTransform m_handle; protected override void OnValueUpdated() { } @@ -31,10 +29,6 @@ namespace Cryville.Crtr.Config.UI { UpdateGraphics(); } } - - void OnRectTransformDimensionsChange() { - m_handleArea.sizeDelta = new Vector2(m_handle.rect.height - m_handle.rect.width, 0); - } #pragma warning restore IDE0051 void UpdateGraphics() { diff --git a/Assets/Cryville/Crtr/Config/UI/PVPNumber.cs b/Assets/Cryville/Crtr/Config/UI/PVPNumber.cs index f75ff17..07c4d35 100644 --- a/Assets/Cryville/Crtr/Config/UI/PVPNumber.cs +++ b/Assets/Cryville/Crtr/Config/UI/PVPNumber.cs @@ -1,23 +1,20 @@ using System; +using UnityEngine; namespace Cryville.Crtr.Config.UI { public class PVPNumber : PVPNumberBase { + [SerializeField] + RectTransform m_on; + protected override void OnValueUpdated() { base.OnValueUpdated(); - if (Range != null && Range.Length == 2) { - var min = (double)Range[0]; - var max = (double)Range[1]; - var value = Convert.ToDouble(RawValue); - if (value < min) { - value = min; - RawValue = value; - } - else if (value > max) { - value = max; - RawValue = value; - } - SetRatio((float)((value - min) / (max - min))); - } + if (Range == null || Range.Length != 2) return; + var min = (double)Range[0]; + var max = (double)Range[1]; + var value = Convert.ToDouble(RawValue); + float ratio = (float)((value - min) / (max - min)); + SetRatio(ratio); + m_on.anchorMax = new Vector2(ratio, m_on.anchorMax.y); } protected override double GetValue(double ratio, float deltaTime, double min, double max) { // if (LogarithmicMode) throw new NotImplementedException(); diff --git a/Assets/Cryville/Crtr/Config/UI/PVPNumberBase.cs b/Assets/Cryville/Crtr/Config/UI/PVPNumberBase.cs index 45dc7cb..8724a29 100644 --- a/Assets/Cryville/Crtr/Config/UI/PVPNumberBase.cs +++ b/Assets/Cryville/Crtr/Config/UI/PVPNumberBase.cs @@ -1,57 +1,69 @@ +using System; +using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; namespace Cryville.Crtr.Config.UI { - public abstract class PVPNumberBase : PropertyValuePanel { - [SerializeField] - EventTrigger m_ctn; + public abstract class PVPNumberBase : PropertyValuePanel, IInitializePotentialDragHandler, IDragHandler, IEndDragHandler, IPointerClickHandler { [SerializeField] RectTransform m_handleArea; [SerializeField] Image m_handle; [SerializeField] - Text m_text; -#pragma warning disable IDE0051 + TMP_InputField m_text; protected void Start() { - var ev = new EventTrigger.Entry { eventID = EventTriggerType.InitializePotentialDrag }; - ev.callback.AddListener(e => OnInitializePotentialDrag((PointerEventData)e)); - m_ctn.triggers.Add(ev); - ev = new EventTrigger.Entry { eventID = EventTriggerType.Drag }; - ev.callback.AddListener(e => OnDrag((PointerEventData)e)); - m_ctn.triggers.Add(ev); - ev = new EventTrigger.Entry { eventID = EventTriggerType.EndDrag }; - ev.callback.AddListener(e => OnEndDrag((PointerEventData)e)); - m_ctn.triggers.Add(ev); - ev = new EventTrigger.Entry { eventID = EventTriggerType.PointerClick }; - ev.callback.AddListener(e => OnPointerClick((PointerEventData)e)); - m_ctn.triggers.Add(ev); + m_text.interactable = SetMapped; + m_text.onValueChanged.AddListener(OnTextEdited); + m_text.onDeselect.AddListener(OnTextDeselected); + OnIdle(); } + void OnTextEdited(string value) { + if (!m_text.isFocused) return; + if (double.TryParse(value, out var result)) { + try { MappedValue = result; } + catch (Exception) { } + } + } + void OnTextDeselected(string value) { + OnValueUpdated(); + } + protected override void OnValueUpdated() { - m_text.text = MappedValue.ToString(); + if (Range != null && Range.Length == 2) { + var min = (double)Range[0]; + var max = (double)Range[1]; + var value = Convert.ToDouble(RawValue); + if (value < min) { + value = min; + RawValue = value; + } + else if (value > max) { + value = max; + RawValue = value; + } + } + if (!m_text.isFocused) { + m_text.text = MappedValue.ToString(); + } } protected virtual void OnIdle() { } - void Update() { + protected virtual void Update() { if (use) { SetRatio(GetRatioFromPos(pp)); SetValueFromPos(pp); } } - void OnRectTransformDimensionsChange() { - m_handleArea.sizeDelta = new Vector2(m_handle.rectTransform.rect.height - m_handle.rectTransform.rect.width, 0); - } -#pragma warning restore IDE0051 - Camera cam; Vector2 pp; bool use, nouse; public void OnInitializePotentialDrag(PointerEventData eventData) { - eventData.useDragThreshold = false; + // eventData.useDragThreshold = false; pp = eventData.position; } diff --git a/Assets/Cryville/Crtr/Config/UI/PropertyCategoryPanel.cs b/Assets/Cryville/Crtr/Config/UI/PropertyCategoryPanel.cs index 6dc0b18..63d9738 100644 --- a/Assets/Cryville/Crtr/Config/UI/PropertyCategoryPanel.cs +++ b/Assets/Cryville/Crtr/Config/UI/PropertyCategoryPanel.cs @@ -1,33 +1,27 @@ using System.Collections.Generic; +using TMPro; using UnityEngine; -using UnityEngine.UI; namespace Cryville.Crtr.Config.UI { public class PropertyCategoryPanel : MonoBehaviour { [SerializeField] - private GameObject m_propertyPrefab; + GameObject m_propertyPrefab; - Text _nameLabel = null; + [SerializeField] + TextMeshProUGUI m_nameLabel; - string _name; + string m_name; public string Name { - get { return _name; } - set { _name = value; UpdateName(); } + get { return m_name; } + set { m_name = value; UpdateName(); } } - bool _collapsed = false; + bool m_collapsed = false; public bool Collapsed { - get { return _collapsed; } - set { _collapsed = value; UpdateName(); } + get { return m_collapsed; } + set { m_collapsed = value; UpdateName(); } } -#pragma warning disable IDE0051 - void Awake() { - _nameLabel = transform.Find("Name/__text__").GetComponent(); - transform.Find("Name").GetComponent