Files
crtr/Assets/Cryville/Crtr/Config/InputConfigPanelEntry.cs
2023-03-26 23:25:20 +08:00

45 lines
1.0 KiB
C#

using Cryville.Common;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace Cryville.Crtr.Config {
public class InputConfigPanelEntry : MonoBehaviour {
[SerializeField]
Text m_key;
[SerializeField]
Text m_value;
[SerializeField]
Button m_button;
public void SetKey(InputConfigPanel master, Identifier name) {
m_key.text = (string)name.Name;
m_value.text = "None";
m_button.onClick.AddListener(() => {
master.OpenDialog(name);
EventSystem.current.SetSelectedGameObject(null);
});
}
public void OnProxyChanged(ProxyChangedEventArgs e) {
if (e.Used) {
m_button.interactable = false;
m_value.text = "(Not Required)";
}
else {
m_button.interactable = true;
if (e.Proxy == null) {
m_value.text = "(Unassigned)";
if (e.Required) m_value.text += " (Required)";
}
else {
m_value.text = e.Proxy.Value.Handler.GetTypeName(e.Proxy.Value.Type);
}
}
m_value.color = e.Required ? Color.yellow : Color.black;
}
}
}