using System.IO;
using FlowCanvas;
using UnityEngine;

namespace BansheeGz.BGDatabase
{
    /// <summary>
    /// Abstract action for all SaveLoad related actions which has filename as a parameter
    /// </summary>
    public abstract partial class BGFCSaveLoadWithNameA : BGFCSaveLoadA
    {
        protected ValueInput<string> fileName;
        private const string DefaultFileName = "game";

        protected string FullFileName()
        {
            var fileNameValue = fileName.value;
            if (string.IsNullOrEmpty(fileNameValue)) fileNameValue = DefaultFileName;
            return Path.ChangeExtension(Path.Combine(Application.persistentDataPath, fileNameValue), "." + FileExt);
        }

        protected override void RegisterPorts()
        {
            base.RegisterPorts();
            fileName = AddValueInput<string>("File Name");
            
            var _out = AddFlowOutput("_out");
            AddFlowInput("_in", flow =>
            {
                RunIt(flow);
                _out.Call(flow);
            });

        }

        protected abstract void RunIt(Flow flow);
    }
}