UnityGameProjectsCode / InTheDarkGame / Managers / InputManager.cs
InputManager.cs
Raw
using UnityEngine;

public static class InputManager
{
    static KeyCode walkForward = KeyCode.W;
    static KeyCode walkLeft = KeyCode.A;
    static KeyCode walkRight = KeyCode.D;
    static KeyCode walkBackward = KeyCode.S;
    static KeyCode sprint = KeyCode.LeftShift;
    static KeyCode interactionKey = KeyCode.E;
    static KeyCode enableBarrierKey = KeyCode.F;
    static KeyCode openEscapeMenu = KeyCode.Escape;

    static KeyCode[] defaultKeys = new KeyCode[] { KeyCode.W, KeyCode.A, KeyCode.D, KeyCode.S, KeyCode.LeftShift, KeyCode.E, KeyCode.F, KeyCode.Escape };

    public static void SetupKeys()
    {
        if (!PlayerPrefs.HasKey("walkF"))
            PlayerPrefs.SetString("walkF", "W");
        if (!PlayerPrefs.HasKey("walkB"))
            PlayerPrefs.SetString("walkB", "S");
        if (!PlayerPrefs.HasKey("walkL"))
            PlayerPrefs.SetString("walkL", "A");
        if (!PlayerPrefs.HasKey("walkR"))
            PlayerPrefs.SetString("walkR", "D");
        if (!PlayerPrefs.HasKey("sprint"))
            PlayerPrefs.SetString("sprint", "LeftShift");
        if (!PlayerPrefs.HasKey("interact"))
            PlayerPrefs.SetString("interact", "E");
        if (!PlayerPrefs.HasKey("barrier"))
            PlayerPrefs.SetString("barrier", "F");
        if (!PlayerPrefs.HasKey("escapeMenu"))
            PlayerPrefs.SetString("escapeMenu", "Escape");

        walkForward = (KeyCode)System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("walkF"));
        walkLeft = (KeyCode)System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("walkL"));
        walkRight = (KeyCode)System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("walkR"));
        walkBackward = (KeyCode)System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("walkB"));
        sprint = (KeyCode)System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("sprint"));
        interactionKey = (KeyCode)System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("interact"));
        enableBarrierKey = (KeyCode)System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("barrier"));
        openEscapeMenu = (KeyCode)System.Enum.Parse(typeof(KeyCode), PlayerPrefs.GetString("escapeMenu"));
    }

    public static void SetInput(int keyID, KeyCode key)
    {
        switch (keyID)
        {
            case 0:
                walkForward = key;
                PlayerPrefs.SetString("walkF", key.ToString());
                break;

            case 1:
                walkLeft = key;
                PlayerPrefs.SetString("walkL", key.ToString());
                break;

            case 2:
                walkRight = key;
                PlayerPrefs.SetString("walkR", key.ToString());
                break;

            case 3:
                walkBackward = key;
                PlayerPrefs.SetString("walkB", key.ToString());
                break;

            case 4:
                sprint = key;
                PlayerPrefs.SetString("sprint", key.ToString());
                break;

            case 5:
                interactionKey = key;
                PlayerPrefs.SetString("interact", key.ToString());
                break;

            case 6:
                enableBarrierKey = key;
                PlayerPrefs.SetString("barrier", key.ToString());
                break;

            case 7:
                openEscapeMenu = key;
                PlayerPrefs.SetString("escapeMenu", key.ToString());
                break;
        }
    }

    public static KeyCode GetInputKey(int keyID)
    {
        switch (keyID)
        {
            default:
                return KeyCode.None;

            case 0:
                return walkForward;

            case 1:
                return walkLeft;

            case 2:
                return walkRight;

            case 3:
                return walkBackward;

            case 4:
                return sprint;

            case 5:
                return interactionKey;

            case 6:
                return enableBarrierKey;

            case 7:
                return openEscapeMenu;
        }
    }

    public static KeyCode GetKeyDefault(int keyID)
    {
        switch (keyID)
        {
            default:
                return KeyCode.None;

            case 0:
                return defaultKeys[0];

            case 1:
                return defaultKeys[1];

            case 2:
                return defaultKeys[2];

            case 3:
                return defaultKeys[3];

            case 4:
                return defaultKeys[4];

            case 5:
                return defaultKeys[5];

            case 6:
                return defaultKeys[6];

            case 7:
                return defaultKeys[7];
        }
    }

    public static void SetAllKeysToDefault()
    {
        walkForward = defaultKeys[0];
        walkLeft = defaultKeys[1];
        walkRight = defaultKeys[2];
        walkBackward = defaultKeys[3];
        sprint = defaultKeys[4];
        interactionKey = defaultKeys[5];
        enableBarrierKey = defaultKeys[6];
        openEscapeMenu = defaultKeys[7];

        PlayerPrefs.SetString("walkF", "W");
        PlayerPrefs.SetString("walkB", "S");
        PlayerPrefs.SetString("walkL", "A");
        PlayerPrefs.SetString("walkR", "D");
        PlayerPrefs.SetString("sprint", "LeftShift");
        PlayerPrefs.SetString("interact", "E");
        PlayerPrefs.SetString("barrier", "F");
        PlayerPrefs.SetString("escapeMenu", "Escape");
    }
}