Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using System.Runtime.Serialization.Formatters.Binary;
- using System.IO;
- public class GameSettings : MonoBehaviour
- {
- string path;
- GameData gameData;
- void Awake()
- {
- path = Application.persistentDataPath + "/gameSettings.dat";
- gameData = new GameData();
- Load();
- }
- public void Save()
- {
- BinaryFormatter bf = new BinaryFormatter();
- FileStream fs;
- fs = File.Exists(path) ? File.OpenWrite(path) : File.Create(path);
- bf.Serialize(fs, gameData);
- fs.Close();
- }
- public void Load()
- {
- if(File.Exists(path))
- {
- Debug.Log("File does exist");
- BinaryFormatter bf = new BinaryFormatter();
- FileStream fs = File.Open(path, FileMode.Open);
- gameData = (GameData)bf.Deserialize(fs);
- fs.Close();
- }
- }
- }
- [System.Serializable]
- class GameData
- {
- public List<Setting> settings = new List<Setting>();
- public GameData()
- {
- // Add game settings here, if no saved values are found then the defaults will be used
- //Gameplay
- settings.Add(new ListArraySetting("Difficulty", new List<string>{"Easy", "Normal", "Hard"}));
- settings.Add(new BoolSetting("Crosshair", true));
- settings.Add(new BoolSetting("Subtitles", true));
- settings.Add(new IntSetting("FOV", 90));
- //Controls
- settings.Add(new KeyCodeSetting("Forward", KeyCode.W));
- settings.Add(new KeyCodeSetting("Strafe Left", KeyCode.A));
- settings.Add(new KeyCodeSetting("Strafe Right", KeyCode.D));
- settings.Add(new KeyCodeSetting("Backwards", KeyCode.S));
- settings.Add(new KeyCodeSetting("Jump", KeyCode.Space));
- settings.Add(new KeyCodeSetting("Interact", KeyCode.E));
- settings.Add(new KeyCodeSetting("Inventory", KeyCode.Tab));
- settings.Add(new KeyCodeSetting("Pause / Open Menu", KeyCode.Escape));
- //Audio
- settings.Add(new IntSetting("Main Volume", 100));
- settings.Add(new IntSetting("Music Volume", 100));
- settings.Add(new IntSetting("SFX Volume", 100));
- settings.Add(new IntSetting("Voice Volume", 100));
- //Visual
- settings.Add(new BoolSetting("Fullscreen", true));
- settings.Add(new ListArraySetting("Resolution", new List<string>{"852x480", "1280x720", "1280x800",
- "1365x768", "1440x900", "1600x900",
- "1680x1050", "1920x1080", "1920x1200",
- "2560x1600", "3840x2400"}));
- }
- }
- public class Setting
- {
- string settingName;
- string value;
- public Setting(string settingName)
- {
- this.settingName = settingName;
- }
- public string GetName()
- {
- return settingName;
- }
- }
- public class FloatSetting : Setting
- {
- private string settingName;
- private float value;
- public FloatSetting(string settingName, float value) : base(settingName)
- {
- this.value = value;
- }
- public float GetValue()
- {
- return value;
- }
- public void SetValue(float set)
- {
- value = set;
- }
- }
- public class IntSetting : Setting
- {
- private string settingName;
- private int value;
- public IntSetting(string settingName, int value) : base(settingName)
- {
- this.value = value;
- }
- public int GetValue()
- {
- return value;
- }
- public void SetValue(int set)
- {
- value = set;
- }
- }
- public class BoolSetting : Setting
- {
- private string settingName;
- private bool value;
- public BoolSetting(string settingName, bool value) : base(settingName)
- {
- this.value = value;
- }
- public bool GetValue()
- {
- return value;
- }
- public void SetValue(bool set)
- {
- value = set;
- }
- }
- public class ListArraySetting : Setting
- {
- private string settingName;
- private List<string> value;
- public ListArraySetting(string settingName, List<string> value) : base(settingName)
- {
- this.value = value;
- }
- public List<string> GetValue()
- {
- return value;
- }
- public void SetValue(List<string> value)
- {
- this.value = value;
- }
- }
- public class CharSetting : Setting
- {
- private string settingName;
- private char value;
- public CharSetting(string settingName, char value) : base(settingName)
- {
- this.value = value;
- }
- public char GetValue()
- {
- return value;
- }
- public void SetValue(char value)
- {
- this.value = value;
- }
- }
- public class KeyCodeSetting : Setting
- {
- private string settingName;
- private KeyCode value;
- public KeyCodeSetting(string settingName, KeyCode value) : base(settingName)
- {
- this.value = value;
- }
- public KeyCode GetValue()
- {
- return value;
- }
- public void SetValue(KeyCode value)
- {
- this.value = value;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement