﻿using System.IO;
using UnityEditor;
using UnityEngine;

namespace Unity.Ugc
{
    public class UgcSettings : ScriptableObject
    {
        [SerializeField]
        public string uosAppId;

        [SerializeField]
        public string uosAppSecret;
        
        private const string UgcSettingsPath = "Assets/Settings/Uos/Resources/UgcSettings.asset";

        private const string UgcSettingsDirectory = "Assets/Settings/Uos/Resources";

        private static UgcSettings _instance;

        private static void LoadSettings()
        {
            if (!_instance)
            {
                _instance = Resources.Load<UgcSettings>(nameof(UgcSettings));
            }
            
#if UNITY_EDITOR
            if (!_instance)
            {
                if (false == Directory.Exists(UgcSettingsDirectory))
                {
                    Directory.CreateDirectory(UgcSettingsDirectory);
                }
                
                var settings = AssetDatabase.LoadAssetAtPath<UgcSettings>(UgcSettingsPath);
                if (settings == null)
                {
                    settings = ScriptableObject.CreateInstance<UgcSettings>();
                    settings.uosAppId = "";
                    settings.uosAppSecret = "";
                    AssetDatabase.CreateAsset(settings, UgcSettingsPath);
                    AssetDatabase.SaveAssets();
                    
                }
                _instance = settings;
            }
#endif
        }
        
        public static UgcSettings Instance
        {
            get
            {
                LoadSettings();
                return _instance;
            }
        }
    }
}