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();
}
}