InputPreset.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. [CreateAssetMenu(fileName = "InputPreset", menuName = "ScriptableObjects/InputPreset", order = 1)]
  6. public class InputPreset : ScriptableObject
  7. {
  8. public InputPresetData data;
  9. }
  10. [System.Serializable]
  11. public class InputPresetData{
  12. public KeyCode leftInput;
  13. public KeyCode rightInput;
  14. public KeyCode jumpInput;
  15. public KeyCode interactingKey;
  16. }
  17. public static class InputManager{
  18. public static InputPresetData m_data;
  19. public static InputPresetData data(){
  20. if(m_data==null){Init();}
  21. return m_data;
  22. }
  23. public static void Init(){
  24. if(PlayerPrefs.HasKey("inputSettings")){
  25. Debug.Log("Trying to load input data : " + PlayerPrefs.GetString("inputSettings"));
  26. try{
  27. InputPresetData preset = JsonUtility.FromJson<InputPresetData>(PlayerPrefs.GetString("inputSettings"));
  28. m_data = preset;
  29. }catch(Exception error){
  30. Debug.Log("Error loading controls, Initiating default \n Error:" + error.Message);
  31. resetDefault();
  32. }
  33. }else{
  34. resetDefault();
  35. }
  36. }
  37. static void resetDefault(){
  38. m_data = new InputPresetData();
  39. m_data.leftInput = KeyCode.A;
  40. m_data.rightInput = KeyCode.D;
  41. m_data.jumpInput = KeyCode.Space;
  42. m_data.interactingKey=KeyCode.W;
  43. PlayerPrefs.SetString("inputSettings", JsonUtility.ToJson(m_data));
  44. PlayerPrefs.Save();
  45. }
  46. public static void Save(){
  47. PlayerPrefs.SetString("inputSettings", JsonUtility.ToJson(m_data));
  48. PlayerPrefs.Save();
  49. }
  50. }