using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class KeyBindScript : MonoBehaviour { /// /// This is the dictionary, that contains all our keybinds /// private Dictionary keys = new Dictionary(); /// /// References to the button objects, these are used for showing the current keybinds /// public Text interaction, skills, settings, attack, inventory, quests, exphlth; /// /// The key, that we are binding atm. /// private GameObject currentKey; /// /// The normal color of the buttons /// private Color32 normal = new Color32(255, 255, 255, 255); /// /// The highlighted color of the buttons /// private Color32 slected = new Color32(239, 116, 36, 255); // Use this for initialization void Start() { keys.Add("Interaction",(KeyCode)System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Interaction","E"))); keys.Add("Settings",(KeyCode)System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Settings","Escape"))); keys.Add("Inventory",(KeyCode)System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Inventory","I"))); keys.Add("Skills",(KeyCode)System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Skills","U"))); keys.Add("Attack",(KeyCode)System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Attack","Space"))); keys.Add("Quests",(KeyCode)System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Quests","Q"))); keys.Add("ExpHlth",(KeyCode)System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("ExpHlth","Tab"))); //Sets the text on the buttons //interaction.text = keys["Interact"].ToString(); interaction.text = PlayerPrefs.GetString("Interaction"); //skills.text = keys["Settings"].ToString(); skills.text = PlayerPrefs.GetString("Skills"); //settings.text = keys["Inventory"].ToString(); settings.text = PlayerPrefs.GetString("Settings"); //attack.text = keys["Skills"].ToString(); attack.text = PlayerPrefs.GetString("Attack"); //inventory.text = keys["Attack"].ToString(); inventory.text = PlayerPrefs.GetString("Inventory"); quests.text = PlayerPrefs.GetString("Quests"); exphlth.text = PlayerPrefs.GetString("ExpHlth"); exphlth.text = PlayerPrefs.GetString("EXP HEALTH"); } void OnGUI() { if (currentKey != null) //If we have selected a key, that we want to edit { Event e = Event.current; //Stores the event if (e.isKey) //If we pressed a key on the keyboard, then we need to assign it to the selected key { keys[currentKey.name] = e.keyCode; //Sets the current key currentKey.transform.GetChild(0).GetComponent().text = e.keyCode.ToString(); //Sets the text currentKey.GetComponent().color = normal; //Sets thecolor currentKey = null; //Deselects the key } } } /// /// Changes a keybind /// /// The clicked button public void ChangeKey(GameObject clicked) { if (currentKey != null) //If we have a selected key, then we need to deselect { currentKey.GetComponent().color = normal; //Sets the color to normal } currentKey = clicked; //Sets the new clicked key as the current key currentKey.GetComponent().color = slected; //Set the color as selected } /// /// Saves the new keybinds /// public void SaveKeys() { foreach (var key in keys) //Runs through the dictionary { PlayerPrefs.SetString(key.Key, key.Value.ToString()); //Saves the keybinds for each key Debug.Log(key.Key + " : " + key.Value.ToString()); //Debug.Log(key.Value.ToString()); } PlayerPrefs.Save(); InventoryUIManager.Instance.keyToOpen = (KeyCode) System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Inventory")); EquipmentUIManager.Instance.keyToOpen = (KeyCode) System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Inventory")); ChestUIManager.Instance.keyToOpen = (KeyCode) System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Interaction")); ShopUIManager.Instance.keyToOpen = (KeyCode) System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Interaction")); SkillsUIManager.Instance.keyToOpen = (KeyCode) System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Skills")); DisplayExpStatus.keyToExp = (KeyCode) System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("EXP HEALTH")); DisplayHealthStatus.keyToHealth = (KeyCode) System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("EXP HEALTH")); TaskUIManager.Instance.keyToOpen = (KeyCode) System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Quests")); } public static void SaveKeysOut() { InventoryUIManager.Instance.keyToOpen = (KeyCode) System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Inventory")); EquipmentUIManager.Instance.keyToOpen = (KeyCode) System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Inventory")); ChestUIManager.Instance.keyToOpen = (KeyCode) System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Interaction")); ShopUIManager.Instance.keyToOpen = (KeyCode) System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Interaction")); SkillsUIManager.Instance.keyToOpen = (KeyCode) System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Skills")); DisplayExpStatus.keyToExp = (KeyCode) System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("EXP HEALTH")); DisplayHealthStatus.keyToHealth = (KeyCode) System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("EXP HEALTH")); TaskUIManager.Instance.keyToOpen = (KeyCode) System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("Quests")); PlayerPrefs.Save(); } }