Advertisement
Guest User

Untitled

a guest
Jan 21st, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.28 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using System.Runtime.Serialization.Formatters.Binary;
  5. using System.IO;
  6. public class GameSettings : MonoBehaviour
  7. {
  8.     string path;
  9.     GameData gameData;
  10.  
  11.     void Awake()
  12.     {
  13.         path = Application.persistentDataPath + "/gameSettings.dat";
  14.         gameData = new GameData();
  15.         Load();
  16.     }
  17.  
  18.     public void Save()
  19.     {
  20.         BinaryFormatter bf = new BinaryFormatter();
  21.         FileStream fs;
  22.        
  23.         fs = File.Exists(path) ? File.OpenWrite(path) : File.Create(path);
  24.         bf.Serialize(fs, gameData);
  25.         fs.Close();
  26.     }
  27.  
  28.     public void Load()
  29.     {
  30.         if(File.Exists(path))
  31.         {
  32.             Debug.Log("File does exist");
  33.             BinaryFormatter bf = new BinaryFormatter();
  34.             FileStream fs = File.Open(path, FileMode.Open);
  35.             gameData = (GameData)bf.Deserialize(fs);    
  36.             fs.Close();
  37.         }
  38.     }
  39. }
  40. [System.Serializable]
  41. class GameData
  42. {
  43.     public List<Setting> settings = new List<Setting>();
  44.     public GameData()
  45.     {
  46.         // Add game settings here, if no saved values are found then the defaults will be used
  47.  
  48.         //Gameplay
  49.         settings.Add(new ListArraySetting("Difficulty", new List<string>{"Easy", "Normal", "Hard"}));
  50.         settings.Add(new BoolSetting("Crosshair", true));
  51.         settings.Add(new BoolSetting("Subtitles", true));
  52.         settings.Add(new IntSetting("FOV", 90));
  53.         //Controls
  54.         settings.Add(new KeyCodeSetting("Forward", KeyCode.W));
  55.         settings.Add(new KeyCodeSetting("Strafe Left", KeyCode.A));
  56.         settings.Add(new KeyCodeSetting("Strafe Right", KeyCode.D));
  57.         settings.Add(new KeyCodeSetting("Backwards", KeyCode.S));
  58.         settings.Add(new KeyCodeSetting("Jump", KeyCode.Space));
  59.         settings.Add(new KeyCodeSetting("Interact", KeyCode.E));
  60.         settings.Add(new KeyCodeSetting("Inventory", KeyCode.Tab));
  61.         settings.Add(new KeyCodeSetting("Pause / Open Menu", KeyCode.Escape));
  62.         //Audio
  63.         settings.Add(new IntSetting("Main Volume", 100));
  64.         settings.Add(new IntSetting("Music Volume", 100));
  65.         settings.Add(new IntSetting("SFX Volume", 100));
  66.         settings.Add(new IntSetting("Voice Volume", 100));
  67.         //Visual
  68.         settings.Add(new BoolSetting("Fullscreen", true));
  69.         settings.Add(new ListArraySetting("Resolution", new List<string>{"852x480", "1280x720", "1280x800",
  70.                                                                         "1365x768", "1440x900", "1600x900",
  71.                                                                         "1680x1050", "1920x1080", "1920x1200",
  72.                                                                         "2560x1600", "3840x2400"}));
  73.     }
  74. }
  75.  
  76. public class Setting
  77. {
  78.     string settingName;
  79.     string value;
  80.  
  81.     public Setting(string settingName)
  82.     {
  83.         this.settingName = settingName;
  84.     }
  85.  
  86.     public string GetName()
  87.     {
  88.         return settingName;
  89.     }
  90. }
  91.  
  92. public class FloatSetting : Setting
  93. {
  94.     private string settingName;
  95.     private float value;
  96.  
  97.     public FloatSetting(string settingName, float value) : base(settingName)
  98.     {  
  99.         this.value = value;
  100.     }
  101.    
  102.     public float GetValue()
  103.     {
  104.         return value;
  105.     }
  106.  
  107.     public void SetValue(float set)
  108.     {
  109.         value = set;
  110.     }
  111. }
  112.  
  113. public class IntSetting : Setting
  114. {
  115.     private string settingName;
  116.     private int value;
  117.  
  118.     public IntSetting(string settingName, int value) : base(settingName)
  119.     {  
  120.         this.value = value;
  121.     }
  122.  
  123.     public int GetValue()
  124.     {
  125.         return value;
  126.     }
  127.  
  128.     public void SetValue(int set)
  129.     {
  130.         value = set;
  131.     }
  132. }
  133.  
  134. public class BoolSetting : Setting
  135. {
  136.     private string settingName;
  137.     private bool value;
  138.  
  139.     public BoolSetting(string settingName, bool value) : base(settingName)
  140.     {  
  141.         this.value = value;
  142.     }
  143.  
  144.     public bool GetValue()
  145.     {
  146.         return value;
  147.     }
  148.  
  149.     public void SetValue(bool set)
  150.     {
  151.         value = set;
  152.     }
  153. }
  154.  
  155. public class ListArraySetting : Setting
  156. {
  157.     private string settingName;
  158.     private List<string> value;
  159.  
  160.     public ListArraySetting(string settingName, List<string> value) : base(settingName)
  161.     {  
  162.         this.value = value;
  163.     }
  164.  
  165.     public List<string> GetValue()
  166.     {
  167.         return value;
  168.     }
  169.  
  170.     public void SetValue(List<string> value)
  171.     {
  172.         this.value = value;
  173.     }
  174. }
  175.  
  176. public class CharSetting : Setting
  177. {
  178.     private string settingName;
  179.     private char value;
  180.  
  181.     public CharSetting(string settingName, char value) : base(settingName)
  182.     {  
  183.         this.value = value;
  184.     }
  185.  
  186.     public char GetValue()
  187.     {
  188.         return value;
  189.     }
  190.  
  191.     public void SetValue(char value)
  192.     {
  193.         this.value = value;
  194.     }
  195. }
  196.  
  197. public class KeyCodeSetting : Setting
  198. {
  199.     private string settingName;
  200.     private KeyCode value;
  201.  
  202.     public KeyCodeSetting(string settingName, KeyCode value) : base(settingName)
  203.     {  
  204.         this.value = value;
  205.     }
  206.  
  207.     public KeyCode GetValue()
  208.     {
  209.         return value;
  210.     }
  211.  
  212.     public void SetValue(KeyCode value)
  213.     {
  214.         this.value = value;
  215.     }
  216. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement