#if UNITY_EDITOR
using System;
using System.IO;
using System.Xml.Serialization;

namespace ERP
{
    [Serializable]
    public class ERPSettings
    {
        private static string path = Directory.GetCurrentDirectory() + "/.erp";
        public bool showSceneName;
        public bool showProjectName;
        public bool resetOnSceneChange;
        public bool debugMode;
        public bool EditorClosed;
        public long LastTimestamp;
        public long LastSessionID;
        public bool Errored;

        public ERPSettings() { }

        public ERPSettings(bool showSceneName, bool showProjectName, bool resetOnSceneChange, bool debugMode, bool editorClosed, long lastTimestamp, long lastSessionID, bool errored)
        {
            this.showSceneName = showSceneName;
            this.showProjectName = showProjectName;
            this.resetOnSceneChange = resetOnSceneChange;
            this.debugMode = debugMode;
            EditorClosed = editorClosed;
            LastTimestamp = lastTimestamp;
            LastSessionID = lastSessionID;
            Errored = errored;
        }

        public static void GetSettings()
        {
            if (File.Exists(path))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(ERPSettings));
                FileStream stream = new FileStream(path, FileMode.Open);
                ERPSettings settings = serializer.Deserialize(stream) as ERPSettings;
                ApplySettings(settings);
                stream.Close();
            }
        }

        private static void ApplySettings(ERPSettings settings)
        {
            ERP.showSceneName = settings.showSceneName;
            ERP.showProjectName = settings.showProjectName;
            ERP.resetOnSceneChange = settings.resetOnSceneChange;
            ERP.debugMode = settings.debugMode;
            ERP.EditorClosed = settings.EditorClosed;
            ERP.lastTimestamp = settings.LastTimestamp;
            ERP.lastSessionID = settings.LastSessionID;
            ERP.Errored = settings.Errored;
            ERP.Log("Applied Settings from file");
        }

        public static void SaveSettings()
        {
            ERPSettings settings = new ERPSettings(ERP.showSceneName, ERP.showProjectName, ERP.resetOnSceneChange, ERP.debugMode, ERP.EditorClosed, ERP.lastTimestamp, ERP.lastSessionID, ERP.Errored);

            XmlSerializer serializer = new XmlSerializer(typeof(ERPSettings));
            var stream = new FileStream(path, FileMode.Create);
            serializer.Serialize(stream, settings);
            stream.Close();
            ERP.Log("Saved Settings");
        }
    }

}
#endif