using UnityEngine;
using JetBrains.Annotations;
using System.Collections.Generic;

// This class holds the settings data. By using a ScriptableObject, we can easily
// save and load the settings as an asset in the project.
namespace IntelligentProjectAnalyzer.Analyzer
{
    public class AnalyzerSettings : ScriptableObject
    {
        [Header("Type Analysis Settings")]
        [SerializeField]
        private List<string> mCustomSystemTypes = new();
        
        [Header("Custom Analysis Settings")]
        [SerializeField] private bool mAnalyzeScripts = true;
        [SerializeField] private bool mAnalyzePrefabs = true;
        [SerializeField] private bool mAnalyzeScriptableObjects = true;
        [SerializeField] private bool mAnalyzeMiscellaneous = true;
        
        [UsedImplicitly] public IReadOnlyList<string> CustomSystemTypes => mCustomSystemTypes;
        [UsedImplicitly] public bool AnalyzeScripts => mAnalyzeScripts;
        [UsedImplicitly] public bool AnalyzePrefabs => mAnalyzePrefabs;
        [UsedImplicitly] public bool AnalyzeScriptableObjects => mAnalyzeScriptableObjects;
        [UsedImplicitly] public bool AnalyzeMiscellaneous => mAnalyzeMiscellaneous;
    }
}
