Newer
Older
HardPoint-Project-Abertay-University-Unity3D / Assets / Scenes / Developers / Nuno / NunoToys / KeyBindingsManager.cs
using System.Collections;
using System.Collections.Generic;
using TMPro;
using Unity.VisualScripting;
using UnityEditor;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class KeyBindingsManager : MonoBehaviour
{
    public static KeyBindingsManager Instance { get; private set; }

    public Dictionary<string, KeyCode> keyBindings = new Dictionary<string, KeyCode>();
    public List<TMP_InputField> inputFields;

    KeyBindDictionary keyBindingsDictionary;

    private void Awake()
    {
        if (Instance == null)
        {
            Instance = this;
            DontDestroyOnLoad(gameObject);
        }
        else
        {
            Destroy(gameObject);
        }
    }

    private void Start()
    {
        keyBindings.Add("Jump", KeyCode.Space);
        keyBindings.Add("Forward", KeyCode.D);
        keyBindings.Add("Backward", KeyCode.A);

        foreach (TMP_InputField inputField in inputFields)
        {
            inputField.text = keyBindings[inputField.name].ToString();
            inputField.onValueChanged.AddListener(delegate { OnKeyBindingChanged(inputField); });
        }

        //keyBindingsDictionary = GameObject.FindObjectOfType<KeyBindDictionary>();
    }

    private void OnKeyBindingChanged(TMP_InputField inputField)
    {
        if (inputField.text != string.Empty)
        {
            KeyCode keyCode = (KeyCode)System.Enum.Parse(typeof(KeyCode), inputField.text);
            keyBindings[inputField.name] = keyCode;
        }
        else
        {
            inputField.text = keyBindings[inputField.name].ToString();
        }
    }

    public void OnSelect(TMP_InputField inputField)
    {
        inputField.text = "Insert New Key";
    }


    private void Update()
    {
        foreach (KeyCode key in keyBindings.Values)
        {
            Debug.Log("Key: " + key);
        }
    }

    public void ChangeScene()
    {
        SceneManager.LoadScene("RandomCharacter");
    }
}