using System.IO;
using System.Text;
using Bolt;
using Ludiq;
using UnityEngine;

namespace BansheeGz.BGDatabase
{
    [UnitCategory("BansheeGz")]
    public partial class ListSaves : SaveLoadA
    {
        [DoNotSerialize] public ValueOutput fileNames;

        protected override void Definition()
        {
            base.Definition();
            fileNames = ValueOutput("File Names", GetFileNames);
        }

        private object GetFileNames(Flow flow)
        {
            var files = Directory.GetFiles(Application.persistentDataPath, "*." + FileExt);
            var filesNoExtension = new string[files.Length];
            if (files.Length > 0)
            {
                for (var i = 0; i < files.Length; i++) filesNoExtension[i] = Path.GetFileNameWithoutExtension(files[i]);
            }


            if (IsDebugging(flow))
            {
                if (files.Length > 0)
                {
                    var fileNamesBuilder = new StringBuilder();
                    foreach (var file in files) fileNamesBuilder.Append(Path.GetFileNameWithoutExtension(file)).Append(' ');
                    Log(flow, "$ saved files found in folder: $. Files are: $", files.Length, Application.persistentDataPath, fileNamesBuilder.ToString());
                }
                else Log(flow, "No saved files found in folder: $", Application.persistentDataPath);
            }

            return filesNoExtension;
        }
    }
}