using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class KeyBindingUIHandler : MonoBehaviour
{
[System.Serializable]
public class ActionBinding
{
public string name;
public KeyCode key;
}
public List<TMP_InputField> inputFields;
public List<ActionBinding> actionBindings;
private Dictionary<string, KeyCode> keyBindings = new Dictionary<string, KeyCode>();
private void Awake()
{
foreach (ActionBinding binding in actionBindings)
{
keyBindings[binding.name] = binding.key;
}
UpdateInputFields();
}
public void UpdateKeyBinding(int index)
{
TMP_InputField inputField = inputFields[index];
string actionName = actionBindings[index].name;
if (inputField.text.Length > 0)
{
KeyCode newKey = (KeyCode)System.Enum.Parse(typeof(KeyCode), inputField.text);
if (!keyBindings.ContainsValue(newKey))
{
keyBindings[actionName] = newKey;
}
else
{
Debug.Log("Key already in use");
UpdateInputFields();
}
}
else
{
Debug.Log("Invalid key");
UpdateInputFields();
}
}
private void UpdateInputFields()
{
foreach (TMP_InputField inputField in inputFields)
{
int index = inputFields.IndexOf(inputField);
inputField.text = keyBindings[actionBindings[index].name].ToString();
}
}
}