Implement the new settings browser.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user